tests: update more sav because of the improved null-aware adaptive typing
[nit.git] / c_src / nitc__separate_compiler.sep.3.c
1 #include "nitc__separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#autobox for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
3 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__autobox(val* self, val* p0, val* p1) {
4 val* var /* : RuntimeVariable */;
5 val* var_value /* var value: RuntimeVariable */;
6 val* var_mtype /* var mtype: MType */;
7 val* var1 /* : MType */;
8 val* var3 /* : MType */;
9 short int var4 /* : Bool */;
10 val* var_other /* var other: nullable Object */;
11 short int var6 /* : Bool */;
12 short int var8 /* : Bool */;
13 short int var9 /* : Bool */;
14 val* var10 /* : MType */;
15 val* var12 /* : MType */;
16 short int var13 /* : Bool */;
17 short int var14 /* : Bool */;
18 short int var_ /* var : Bool */;
19 short int var15 /* : Bool */;
20 short int var16 /* : Bool */;
21 val* var17 /* : MType */;
22 val* var19 /* : MType */;
23 short int var20 /* : Bool */;
24 short int var21 /* : Bool */;
25 short int var22 /* : Bool */;
26 short int var24 /* : Bool */;
27 val* var25 /* : String */;
28 static val* varonce;
29 val* var26 /* : String */;
30 char* var27 /* : NativeString */;
31 val* var28 /* : String */;
32 short int var29 /* : Bool */;
33 val* var31 /* : NativeArray[String] */;
34 static val* varonce30;
35 static val* varonce32;
36 val* var33 /* : String */;
37 char* var34 /* : NativeString */;
38 val* var35 /* : String */;
39 static val* varonce36;
40 val* var37 /* : String */;
41 char* var38 /* : NativeString */;
42 val* var39 /* : String */;
43 val* var40 /* : String */;
44 val* var41 /* : String */;
45 val* var42 /* : RuntimeVariable */;
46 val* var43 /* : String */;
47 static val* varonce44;
48 val* var45 /* : String */;
49 char* var46 /* : NativeString */;
50 val* var47 /* : String */;
51 short int var48 /* : Bool */;
52 val* var50 /* : NativeArray[String] */;
53 static val* varonce49;
54 static val* varonce51;
55 val* var52 /* : String */;
56 char* var53 /* : NativeString */;
57 val* var54 /* : String */;
58 static val* varonce55;
59 val* var56 /* : String */;
60 char* var57 /* : NativeString */;
61 val* var58 /* : String */;
62 val* var59 /* : String */;
63 val* var60 /* : String */;
64 val* var61 /* : RuntimeVariable */;
65 val* var62 /* : String */;
66 static val* varonce63;
67 val* var64 /* : String */;
68 char* var65 /* : NativeString */;
69 val* var66 /* : String */;
70 short int var67 /* : Bool */;
71 val* var69 /* : NativeArray[String] */;
72 static val* varonce68;
73 static val* varonce70;
74 val* var71 /* : String */;
75 char* var72 /* : NativeString */;
76 val* var73 /* : String */;
77 static val* varonce74;
78 val* var75 /* : String */;
79 char* var76 /* : NativeString */;
80 val* var77 /* : String */;
81 val* var78 /* : String */;
82 val* var79 /* : String */;
83 val* var80 /* : RuntimeVariable */;
84 val* var82 /* : NativeArray[String] */;
85 static val* varonce81;
86 static val* varonce83;
87 val* var84 /* : String */;
88 char* var85 /* : NativeString */;
89 val* var86 /* : String */;
90 static val* varonce87;
91 val* var88 /* : String */;
92 char* var89 /* : NativeString */;
93 val* var90 /* : String */;
94 static val* varonce91;
95 val* var92 /* : String */;
96 char* var93 /* : NativeString */;
97 val* var94 /* : String */;
98 static val* varonce95;
99 val* var96 /* : String */;
100 char* var97 /* : NativeString */;
101 val* var98 /* : String */;
102 static val* varonce99;
103 val* var100 /* : String */;
104 char* var101 /* : NativeString */;
105 val* var102 /* : String */;
106 val* var103 /* : String */;
107 val* var104 /* : String */;
108 val* var105 /* : MType */;
109 val* var107 /* : MType */;
110 val* var108 /* : String */;
111 val* var109 /* : String */;
112 val* var110 /* : String */;
113 val* var111 /* : RuntimeVariable */;
114 short int var112 /* : Bool */;
115 short int var113 /* : Bool */;
116 val* var114 /* : MType */;
117 val* var116 /* : MType */;
118 val* var117 /* : MType */;
119 val* var119 /* : MType */;
120 short int var120 /* : Bool */;
121 short int var122 /* : Bool */;
122 short int var124 /* : Bool */;
123 val* var125 /* : MType */;
124 val* var127 /* : MType */;
125 short int var128 /* : Bool */;
126 short int var130 /* : Bool */;
127 val* var131 /* : MType */;
128 val* var133 /* : MType */;
129 val* var134 /* : String */;
130 static val* varonce135;
131 val* var136 /* : String */;
132 char* var137 /* : NativeString */;
133 val* var138 /* : String */;
134 short int var139 /* : Bool */;
135 val* var141 /* : NativeArray[String] */;
136 static val* varonce140;
137 static val* varonce142;
138 val* var143 /* : String */;
139 char* var144 /* : NativeString */;
140 val* var145 /* : String */;
141 static val* varonce146;
142 val* var147 /* : String */;
143 char* var148 /* : NativeString */;
144 val* var149 /* : String */;
145 val* var150 /* : String */;
146 val* var151 /* : String */;
147 val* var152 /* : RuntimeVariable */;
148 val* var_res /* var res: nullable Object */;
149 val* var153 /* : MType */;
150 val* var155 /* : MType */;
151 val* var156 /* : String */;
152 static val* varonce157;
153 val* var158 /* : String */;
154 char* var159 /* : NativeString */;
155 val* var160 /* : String */;
156 short int var161 /* : Bool */;
157 val* var163 /* : NativeArray[String] */;
158 static val* varonce162;
159 static val* varonce164;
160 val* var165 /* : String */;
161 char* var166 /* : NativeString */;
162 val* var167 /* : String */;
163 static val* varonce168;
164 val* var169 /* : String */;
165 char* var170 /* : NativeString */;
166 val* var171 /* : String */;
167 val* var172 /* : String */;
168 val* var173 /* : String */;
169 val* var174 /* : RuntimeVariable */;
170 val* var175 /* : MType */;
171 val* var177 /* : MType */;
172 val* var178 /* : String */;
173 static val* varonce179;
174 val* var180 /* : String */;
175 char* var181 /* : NativeString */;
176 val* var182 /* : String */;
177 short int var183 /* : Bool */;
178 val* var185 /* : NativeArray[String] */;
179 static val* varonce184;
180 static val* varonce186;
181 val* var187 /* : String */;
182 char* var188 /* : NativeString */;
183 val* var189 /* : String */;
184 static val* varonce190;
185 val* var191 /* : String */;
186 char* var192 /* : NativeString */;
187 val* var193 /* : String */;
188 val* var194 /* : String */;
189 val* var195 /* : String */;
190 val* var196 /* : RuntimeVariable */;
191 val* var197 /* : MType */;
192 val* var199 /* : MType */;
193 val* var201 /* : MType */;
194 val* var203 /* : MType */;
195 short int var204 /* : Bool */;
196 int cltype;
197 int idtype;
198 const char* var_class_name;
199 val* var_valtype /* var valtype: MClassType */;
200 short int var205 /* : Bool */;
201 short int var206 /* : Bool */;
202 short int var207 /* : Bool */;
203 int cltype208;
204 int idtype209;
205 short int var_210 /* var : Bool */;
206 val* var211 /* : MClass */;
207 val* var213 /* : MClass */;
208 val* var214 /* : MClassKind */;
209 val* var216 /* : MClassKind */;
210 val* var217 /* : Sys */;
211 val* var218 /* : MClassKind */;
212 short int var219 /* : Bool */;
213 short int var221 /* : Bool */;
214 short int var223 /* : Bool */;
215 short int var_224 /* var : Bool */;
216 val* var225 /* : MClass */;
217 val* var227 /* : MClass */;
218 val* var228 /* : String */;
219 val* var230 /* : String */;
220 static val* varonce231;
221 val* var232 /* : String */;
222 char* var233 /* : NativeString */;
223 val* var234 /* : String */;
224 short int var235 /* : Bool */;
225 val* var_other237 /* var other: nullable Object */;
226 short int var238 /* : Bool */;
227 short int var239 /* : Bool */;
228 val* var240 /* : AbstractCompiler */;
229 val* var242 /* : AbstractCompiler */;
230 val* var243 /* : MModule */;
231 val* var245 /* : MModule */;
232 val* var246 /* : MClassType */;
233 val* var247 /* : RuntimeVariable */;
234 val* var_res248 /* var res: RuntimeVariable */;
235 val* var249 /* : MType */;
236 val* var251 /* : MType */;
237 val* var254 /* : NativeArray[String] */;
238 static val* varonce253;
239 static val* varonce255;
240 val* var256 /* : String */;
241 char* var257 /* : NativeString */;
242 val* var258 /* : String */;
243 val* var259 /* : String */;
244 val* var260 /* : String */;
245 val* var262 /* : NativeArray[String] */;
246 static val* varonce261;
247 static val* varonce263;
248 val* var264 /* : String */;
249 char* var265 /* : NativeString */;
250 val* var266 /* : String */;
251 static val* varonce267;
252 val* var268 /* : String */;
253 char* var269 /* : NativeString */;
254 val* var270 /* : String */;
255 static val* varonce271;
256 val* var272 /* : String */;
257 char* var273 /* : NativeString */;
258 val* var274 /* : String */;
259 static val* varonce275;
260 val* var276 /* : String */;
261 char* var277 /* : NativeString */;
262 val* var278 /* : String */;
263 static val* varonce279;
264 val* var280 /* : String */;
265 char* var281 /* : NativeString */;
266 val* var282 /* : String */;
267 val* var283 /* : String */;
268 val* var284 /* : String */;
269 val* var285 /* : String */;
270 val* var286 /* : MType */;
271 val* var288 /* : MType */;
272 val* var289 /* : String */;
273 val* var290 /* : String */;
274 val* var291 /* : String */;
275 short int var292 /* : Bool */;
276 short int var293 /* : Bool */;
277 short int var294 /* : Bool */;
278 val* var295 /* : MType */;
279 val* var297 /* : MType */;
280 val* var298 /* : String */;
281 static val* varonce299;
282 val* var300 /* : String */;
283 char* var301 /* : NativeString */;
284 val* var302 /* : String */;
285 short int var303 /* : Bool */;
286 short int var_304 /* var : Bool */;
287 val* var305 /* : String */;
288 static val* varonce306;
289 val* var307 /* : String */;
290 char* var308 /* : NativeString */;
291 val* var309 /* : String */;
292 short int var310 /* : Bool */;
293 short int var_311 /* var : Bool */;
294 short int var312 /* : Bool */;
295 val* var313 /* : MType */;
296 val* var315 /* : MType */;
297 val* var316 /* : String */;
298 static val* varonce317;
299 val* var318 /* : String */;
300 char* var319 /* : NativeString */;
301 val* var320 /* : String */;
302 short int var321 /* : Bool */;
303 short int var_322 /* var : Bool */;
304 val* var323 /* : String */;
305 static val* varonce324;
306 val* var325 /* : String */;
307 char* var326 /* : NativeString */;
308 val* var327 /* : String */;
309 short int var328 /* : Bool */;
310 short int var_329 /* var : Bool */;
311 short int var330 /* : Bool */;
312 val* var331 /* : MType */;
313 val* var333 /* : MType */;
314 val* var334 /* : String */;
315 static val* varonce335;
316 val* var336 /* : String */;
317 char* var337 /* : NativeString */;
318 val* var338 /* : String */;
319 short int var339 /* : Bool */;
320 short int var_340 /* var : Bool */;
321 val* var341 /* : String */;
322 static val* varonce342;
323 val* var343 /* : String */;
324 char* var344 /* : NativeString */;
325 val* var345 /* : String */;
326 short int var346 /* : Bool */;
327 val* var347 /* : RuntimeVariable */;
328 val* var_res348 /* var res: RuntimeVariable */;
329 val* var350 /* : NativeArray[String] */;
330 static val* varonce349;
331 static val* varonce351;
332 val* var352 /* : String */;
333 char* var353 /* : NativeString */;
334 val* var354 /* : String */;
335 static val* varonce355;
336 val* var356 /* : String */;
337 char* var357 /* : NativeString */;
338 val* var358 /* : String */;
339 static val* varonce359;
340 val* var360 /* : String */;
341 char* var361 /* : NativeString */;
342 val* var362 /* : String */;
343 static val* varonce363;
344 val* var364 /* : String */;
345 char* var365 /* : NativeString */;
346 val* var366 /* : String */;
347 val* var367 /* : String */;
348 val* var368 /* : MType */;
349 val* var370 /* : MType */;
350 val* var371 /* : String */;
351 val* var372 /* : String */;
352 val* var373 /* : String */;
353 val* var375 /* : NativeArray[String] */;
354 static val* varonce374;
355 static val* varonce376;
356 val* var377 /* : String */;
357 char* var378 /* : NativeString */;
358 val* var379 /* : String */;
359 static val* varonce380;
360 val* var381 /* : String */;
361 char* var382 /* : NativeString */;
362 val* var383 /* : String */;
363 static val* varonce384;
364 val* var385 /* : String */;
365 char* var386 /* : NativeString */;
366 val* var387 /* : String */;
367 val* var388 /* : MType */;
368 val* var390 /* : MType */;
369 val* var391 /* : String */;
370 val* var392 /* : String */;
371 val* var393 /* : String */;
372 var_value = p0;
373 var_mtype = p1;
374 {
375 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
376 var3 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
377 if (unlikely(var3 == NULL)) {
378 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
379 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
380 fatal_exit(1);
381 }
382 var1 = var3;
383 RET_LABEL2:(void)0;
384 }
385 }
386 {
387 { /* Inline kernel#Object#== (var1,var_mtype) on <var1:MType> */
388 var_other = var_mtype;
389 {
390 { /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:MType> */
391 var8 = var1 == var_other;
392 var6 = var8;
393 goto RET_LABEL7;
394 RET_LABEL7:(void)0;
395 }
396 }
397 var4 = var6;
398 goto RET_LABEL5;
399 RET_LABEL5:(void)0;
400 }
401 }
402 if (var4){
403 var = var_value;
404 goto RET_LABEL;
405 } else {
406 {
407 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
408 var12 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
409 if (unlikely(var12 == NULL)) {
410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
411 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
412 fatal_exit(1);
413 }
414 var10 = var12;
415 RET_LABEL11:(void)0;
416 }
417 }
418 {
419 var13 = ((short int(*)(val* self))(var10->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var10); /* is_c_primitive on <var10:MType>*/
420 }
421 var14 = !var13;
422 var_ = var14;
423 if (var14){
424 {
425 var15 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var_mtype); /* is_c_primitive on <var_mtype:MType>*/
426 }
427 var16 = !var15;
428 var9 = var16;
429 } else {
430 var9 = var_;
431 }
432 if (var9){
433 var = var_value;
434 goto RET_LABEL;
435 } else {
436 {
437 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
438 var19 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
439 if (unlikely(var19 == NULL)) {
440 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
441 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
442 fatal_exit(1);
443 }
444 var17 = var19;
445 RET_LABEL18:(void)0;
446 }
447 }
448 {
449 var20 = ((short int(*)(val* self))(var17->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var17); /* is_c_primitive on <var17:MType>*/
450 }
451 var21 = !var20;
452 if (var21){
453 {
454 { /* Inline separate_compiler#MType#is_tagged (var_mtype) on <var_mtype:MType> */
455 var24 = var_mtype->attrs[COLOR_nitc__separate_compiler__MType___is_tagged].s; /* _is_tagged on <var_mtype:MType> */
456 var22 = var24;
457 RET_LABEL23:(void)0;
458 }
459 }
460 if (var22){
461 {
462 var25 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__name]))(var_mtype); /* name on <var_mtype:MType>*/
463 }
464 if (likely(varonce!=NULL)) {
465 var26 = varonce;
466 } else {
467 var27 = "Int";
468 var28 = core__flat___NativeString___to_s_full(var27, 3l, 3l);
469 var26 = var28;
470 varonce = var26;
471 }
472 {
473 var29 = ((short int(*)(val* self, val* p0))(var25->class->vft[COLOR_core__kernel__Object___61d_61d]))(var25, var26); /* == on <var25:String>*/
474 }
475 if (var29){
476 if (unlikely(varonce30==NULL)) {
477 var31 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
478 if (likely(varonce32!=NULL)) {
479 var33 = varonce32;
480 } else {
481 var34 = "(long)(";
482 var35 = core__flat___NativeString___to_s_full(var34, 7l, 7l);
483 var33 = var35;
484 varonce32 = var33;
485 }
486 ((struct instance_core__NativeArray*)var31)->values[0]=var33;
487 if (likely(varonce36!=NULL)) {
488 var37 = varonce36;
489 } else {
490 var38 = ")>>2";
491 var39 = core__flat___NativeString___to_s_full(var38, 4l, 4l);
492 var37 = var39;
493 varonce36 = var37;
494 }
495 ((struct instance_core__NativeArray*)var31)->values[2]=var37;
496 } else {
497 var31 = varonce30;
498 varonce30 = NULL;
499 }
500 {
501 var40 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
502 }
503 ((struct instance_core__NativeArray*)var31)->values[1]=var40;
504 {
505 var41 = ((val*(*)(val* self))(var31->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var31); /* native_to_s on <var31:NativeArray[String]>*/
506 }
507 varonce30 = var31;
508 {
509 var42 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var41, var_mtype);
510 }
511 var = var42;
512 goto RET_LABEL;
513 } else {
514 {
515 var43 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__name]))(var_mtype); /* name on <var_mtype:MType>*/
516 }
517 if (likely(varonce44!=NULL)) {
518 var45 = varonce44;
519 } else {
520 var46 = "Char";
521 var47 = core__flat___NativeString___to_s_full(var46, 4l, 4l);
522 var45 = var47;
523 varonce44 = var45;
524 }
525 {
526 var48 = ((short int(*)(val* self, val* p0))(var43->class->vft[COLOR_core__kernel__Object___61d_61d]))(var43, var45); /* == on <var43:String>*/
527 }
528 if (var48){
529 if (unlikely(varonce49==NULL)) {
530 var50 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
531 if (likely(varonce51!=NULL)) {
532 var52 = varonce51;
533 } else {
534 var53 = "(uint32_t)((long)(";
535 var54 = core__flat___NativeString___to_s_full(var53, 18l, 18l);
536 var52 = var54;
537 varonce51 = var52;
538 }
539 ((struct instance_core__NativeArray*)var50)->values[0]=var52;
540 if (likely(varonce55!=NULL)) {
541 var56 = varonce55;
542 } else {
543 var57 = ")>>2)";
544 var58 = core__flat___NativeString___to_s_full(var57, 5l, 5l);
545 var56 = var58;
546 varonce55 = var56;
547 }
548 ((struct instance_core__NativeArray*)var50)->values[2]=var56;
549 } else {
550 var50 = varonce49;
551 varonce49 = NULL;
552 }
553 {
554 var59 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
555 }
556 ((struct instance_core__NativeArray*)var50)->values[1]=var59;
557 {
558 var60 = ((val*(*)(val* self))(var50->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var50); /* native_to_s on <var50:NativeArray[String]>*/
559 }
560 varonce49 = var50;
561 {
562 var61 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var60, var_mtype);
563 }
564 var = var61;
565 goto RET_LABEL;
566 } else {
567 {
568 var62 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__name]))(var_mtype); /* name on <var_mtype:MType>*/
569 }
570 if (likely(varonce63!=NULL)) {
571 var64 = varonce63;
572 } else {
573 var65 = "Bool";
574 var66 = core__flat___NativeString___to_s_full(var65, 4l, 4l);
575 var64 = var66;
576 varonce63 = var64;
577 }
578 {
579 var67 = ((short int(*)(val* self, val* p0))(var62->class->vft[COLOR_core__kernel__Object___61d_61d]))(var62, var64); /* == on <var62:String>*/
580 }
581 if (var67){
582 if (unlikely(varonce68==NULL)) {
583 var69 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
584 if (likely(varonce70!=NULL)) {
585 var71 = varonce70;
586 } else {
587 var72 = "(short int)((long)(";
588 var73 = core__flat___NativeString___to_s_full(var72, 19l, 19l);
589 var71 = var73;
590 varonce70 = var71;
591 }
592 ((struct instance_core__NativeArray*)var69)->values[0]=var71;
593 if (likely(varonce74!=NULL)) {
594 var75 = varonce74;
595 } else {
596 var76 = ")>>2)";
597 var77 = core__flat___NativeString___to_s_full(var76, 5l, 5l);
598 var75 = var77;
599 varonce74 = var75;
600 }
601 ((struct instance_core__NativeArray*)var69)->values[2]=var75;
602 } else {
603 var69 = varonce68;
604 varonce68 = NULL;
605 }
606 {
607 var78 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
608 }
609 ((struct instance_core__NativeArray*)var69)->values[1]=var78;
610 {
611 var79 = ((val*(*)(val* self))(var69->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var69); /* native_to_s on <var69:NativeArray[String]>*/
612 }
613 varonce68 = var69;
614 {
615 var80 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var79, var_mtype);
616 }
617 var = var80;
618 goto RET_LABEL;
619 } else {
620 PRINT_ERROR("Runtime error: %s", "Aborted");
621 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1217);
622 fatal_exit(1);
623 }
624 }
625 }
626 } else {
627 }
628 if (unlikely(varonce81==NULL)) {
629 var82 = NEW_core__NativeArray(9l, &type_core__NativeArray__core__String);
630 if (likely(varonce83!=NULL)) {
631 var84 = varonce83;
632 } else {
633 var85 = "((struct instance_";
634 var86 = core__flat___NativeString___to_s_full(var85, 18l, 18l);
635 var84 = var86;
636 varonce83 = var84;
637 }
638 ((struct instance_core__NativeArray*)var82)->values[0]=var84;
639 if (likely(varonce87!=NULL)) {
640 var88 = varonce87;
641 } else {
642 var89 = "*)";
643 var90 = core__flat___NativeString___to_s_full(var89, 2l, 2l);
644 var88 = var90;
645 varonce87 = var88;
646 }
647 ((struct instance_core__NativeArray*)var82)->values[2]=var88;
648 if (likely(varonce91!=NULL)) {
649 var92 = varonce91;
650 } else {
651 var93 = ")->value; /* autounbox from ";
652 var94 = core__flat___NativeString___to_s_full(var93, 28l, 28l);
653 var92 = var94;
654 varonce91 = var92;
655 }
656 ((struct instance_core__NativeArray*)var82)->values[4]=var92;
657 if (likely(varonce95!=NULL)) {
658 var96 = varonce95;
659 } else {
660 var97 = " to ";
661 var98 = core__flat___NativeString___to_s_full(var97, 4l, 4l);
662 var96 = var98;
663 varonce95 = var96;
664 }
665 ((struct instance_core__NativeArray*)var82)->values[6]=var96;
666 if (likely(varonce99!=NULL)) {
667 var100 = varonce99;
668 } else {
669 var101 = " */";
670 var102 = core__flat___NativeString___to_s_full(var101, 3l, 3l);
671 var100 = var102;
672 varonce99 = var100;
673 }
674 ((struct instance_core__NativeArray*)var82)->values[8]=var100;
675 } else {
676 var82 = varonce81;
677 varonce81 = NULL;
678 }
679 {
680 var103 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType>*/
681 }
682 ((struct instance_core__NativeArray*)var82)->values[1]=var103;
683 {
684 var104 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
685 }
686 ((struct instance_core__NativeArray*)var82)->values[3]=var104;
687 {
688 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
689 var107 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
690 if (unlikely(var107 == NULL)) {
691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
692 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
693 fatal_exit(1);
694 }
695 var105 = var107;
696 RET_LABEL106:(void)0;
697 }
698 }
699 {
700 var108 = ((val*(*)(val* self))(var105->class->vft[COLOR_core__abstract_text__Object__to_s]))(var105); /* to_s on <var105:MType>*/
701 }
702 ((struct instance_core__NativeArray*)var82)->values[5]=var108;
703 {
704 var109 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
705 }
706 ((struct instance_core__NativeArray*)var82)->values[7]=var109;
707 {
708 var110 = ((val*(*)(val* self))(var82->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var82); /* native_to_s on <var82:NativeArray[String]>*/
709 }
710 varonce81 = var82;
711 {
712 var111 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var110, var_mtype);
713 }
714 var = var111;
715 goto RET_LABEL;
716 } else {
717 {
718 var112 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var_mtype); /* is_c_primitive on <var_mtype:MType>*/
719 }
720 var113 = !var112;
721 if (var113){
722 {
723 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
724 var116 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
725 if (unlikely(var116 == NULL)) {
726 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
727 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
728 fatal_exit(1);
729 }
730 var114 = var116;
731 RET_LABEL115:(void)0;
732 }
733 }
734 {
735 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value) on <var_value:RuntimeVariable> */
736 var119 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
737 if (unlikely(var119 == NULL)) {
738 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
739 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
740 fatal_exit(1);
741 }
742 var117 = var119;
743 RET_LABEL118:(void)0;
744 }
745 }
746 {
747 { /* Inline kernel#Object#== (var114,var117) on <var114:MType> */
748 var_other = var117;
749 {
750 { /* Inline kernel#Object#is_same_instance (var114,var_other) on <var114:MType> */
751 var124 = var114 == var_other;
752 var122 = var124;
753 goto RET_LABEL123;
754 RET_LABEL123:(void)0;
755 }
756 }
757 var120 = var122;
758 goto RET_LABEL121;
759 RET_LABEL121:(void)0;
760 }
761 }
762 if (unlikely(!var120)) {
763 PRINT_ERROR("Runtime error: %s", "Assert failed");
764 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1222);
765 fatal_exit(1);
766 }
767 {
768 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
769 var127 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
770 if (unlikely(var127 == NULL)) {
771 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
772 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
773 fatal_exit(1);
774 }
775 var125 = var127;
776 RET_LABEL126:(void)0;
777 }
778 }
779 {
780 { /* Inline separate_compiler#MType#is_tagged (var125) on <var125:MType> */
781 var130 = var125->attrs[COLOR_nitc__separate_compiler__MType___is_tagged].s; /* _is_tagged on <var125:MType> */
782 var128 = var130;
783 RET_LABEL129:(void)0;
784 }
785 }
786 if (var128){
787 {
788 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
789 var133 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
790 if (unlikely(var133 == NULL)) {
791 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
792 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
793 fatal_exit(1);
794 }
795 var131 = var133;
796 RET_LABEL132:(void)0;
797 }
798 }
799 {
800 var134 = ((val*(*)(val* self))(var131->class->vft[COLOR_nitc__model_base__MEntity__name]))(var131); /* name on <var131:MType>*/
801 }
802 if (likely(varonce135!=NULL)) {
803 var136 = varonce135;
804 } else {
805 var137 = "Int";
806 var138 = core__flat___NativeString___to_s_full(var137, 3l, 3l);
807 var136 = var138;
808 varonce135 = var136;
809 }
810 {
811 var139 = ((short int(*)(val* self, val* p0))(var134->class->vft[COLOR_core__kernel__Object___61d_61d]))(var134, var136); /* == on <var134:String>*/
812 }
813 if (var139){
814 if (unlikely(varonce140==NULL)) {
815 var141 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
816 if (likely(varonce142!=NULL)) {
817 var143 = varonce142;
818 } else {
819 var144 = "(val*)(";
820 var145 = core__flat___NativeString___to_s_full(var144, 7l, 7l);
821 var143 = var145;
822 varonce142 = var143;
823 }
824 ((struct instance_core__NativeArray*)var141)->values[0]=var143;
825 if (likely(varonce146!=NULL)) {
826 var147 = varonce146;
827 } else {
828 var148 = "<<2|1)";
829 var149 = core__flat___NativeString___to_s_full(var148, 6l, 6l);
830 var147 = var149;
831 varonce146 = var147;
832 }
833 ((struct instance_core__NativeArray*)var141)->values[2]=var147;
834 } else {
835 var141 = varonce140;
836 varonce140 = NULL;
837 }
838 {
839 var150 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
840 }
841 ((struct instance_core__NativeArray*)var141)->values[1]=var150;
842 {
843 var151 = ((val*(*)(val* self))(var141->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var141); /* native_to_s on <var141:NativeArray[String]>*/
844 }
845 varonce140 = var141;
846 {
847 var152 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var151, var_mtype);
848 }
849 var_res = var152;
850 } else {
851 {
852 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
853 var155 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
854 if (unlikely(var155 == NULL)) {
855 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
856 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
857 fatal_exit(1);
858 }
859 var153 = var155;
860 RET_LABEL154:(void)0;
861 }
862 }
863 {
864 var156 = ((val*(*)(val* self))(var153->class->vft[COLOR_nitc__model_base__MEntity__name]))(var153); /* name on <var153:MType>*/
865 }
866 if (likely(varonce157!=NULL)) {
867 var158 = varonce157;
868 } else {
869 var159 = "Char";
870 var160 = core__flat___NativeString___to_s_full(var159, 4l, 4l);
871 var158 = var160;
872 varonce157 = var158;
873 }
874 {
875 var161 = ((short int(*)(val* self, val* p0))(var156->class->vft[COLOR_core__kernel__Object___61d_61d]))(var156, var158); /* == on <var156:String>*/
876 }
877 if (var161){
878 if (unlikely(varonce162==NULL)) {
879 var163 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
880 if (likely(varonce164!=NULL)) {
881 var165 = varonce164;
882 } else {
883 var166 = "(val*)((long)(";
884 var167 = core__flat___NativeString___to_s_full(var166, 14l, 14l);
885 var165 = var167;
886 varonce164 = var165;
887 }
888 ((struct instance_core__NativeArray*)var163)->values[0]=var165;
889 if (likely(varonce168!=NULL)) {
890 var169 = varonce168;
891 } else {
892 var170 = ")<<2|2)";
893 var171 = core__flat___NativeString___to_s_full(var170, 7l, 7l);
894 var169 = var171;
895 varonce168 = var169;
896 }
897 ((struct instance_core__NativeArray*)var163)->values[2]=var169;
898 } else {
899 var163 = varonce162;
900 varonce162 = NULL;
901 }
902 {
903 var172 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
904 }
905 ((struct instance_core__NativeArray*)var163)->values[1]=var172;
906 {
907 var173 = ((val*(*)(val* self))(var163->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var163); /* native_to_s on <var163:NativeArray[String]>*/
908 }
909 varonce162 = var163;
910 {
911 var174 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var173, var_mtype);
912 }
913 var_res = var174;
914 } else {
915 {
916 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
917 var177 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
918 if (unlikely(var177 == NULL)) {
919 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
920 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
921 fatal_exit(1);
922 }
923 var175 = var177;
924 RET_LABEL176:(void)0;
925 }
926 }
927 {
928 var178 = ((val*(*)(val* self))(var175->class->vft[COLOR_nitc__model_base__MEntity__name]))(var175); /* name on <var175:MType>*/
929 }
930 if (likely(varonce179!=NULL)) {
931 var180 = varonce179;
932 } else {
933 var181 = "Bool";
934 var182 = core__flat___NativeString___to_s_full(var181, 4l, 4l);
935 var180 = var182;
936 varonce179 = var180;
937 }
938 {
939 var183 = ((short int(*)(val* self, val* p0))(var178->class->vft[COLOR_core__kernel__Object___61d_61d]))(var178, var180); /* == on <var178:String>*/
940 }
941 if (var183){
942 if (unlikely(varonce184==NULL)) {
943 var185 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
944 if (likely(varonce186!=NULL)) {
945 var187 = varonce186;
946 } else {
947 var188 = "(val*)((long)(";
948 var189 = core__flat___NativeString___to_s_full(var188, 14l, 14l);
949 var187 = var189;
950 varonce186 = var187;
951 }
952 ((struct instance_core__NativeArray*)var185)->values[0]=var187;
953 if (likely(varonce190!=NULL)) {
954 var191 = varonce190;
955 } else {
956 var192 = ")<<2|3)";
957 var193 = core__flat___NativeString___to_s_full(var192, 7l, 7l);
958 var191 = var193;
959 varonce190 = var191;
960 }
961 ((struct instance_core__NativeArray*)var185)->values[2]=var191;
962 } else {
963 var185 = varonce184;
964 varonce184 = NULL;
965 }
966 {
967 var194 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
968 }
969 ((struct instance_core__NativeArray*)var185)->values[1]=var194;
970 {
971 var195 = ((val*(*)(val* self))(var185->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var185); /* native_to_s on <var185:NativeArray[String]>*/
972 }
973 varonce184 = var185;
974 {
975 var196 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var195, var_mtype);
976 }
977 var_res = var196;
978 } else {
979 PRINT_ERROR("Runtime error: %s", "Aborted");
980 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1232);
981 fatal_exit(1);
982 }
983 }
984 }
985 {
986 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value) on <var_value:RuntimeVariable> */
987 var199 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
988 if (unlikely(var199 == NULL)) {
989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
990 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
991 fatal_exit(1);
992 }
993 var197 = var199;
994 RET_LABEL198:(void)0;
995 }
996 }
997 {
998 { /* Inline abstract_compiler#RuntimeVariable#mcasttype= (var_res,var197) on <var_res:nullable Object(RuntimeVariable)> */
999 var_res->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val = var197; /* _mcasttype on <var_res:nullable Object(RuntimeVariable)> */
1000 RET_LABEL200:(void)0;
1001 }
1002 }
1003 var = var_res;
1004 goto RET_LABEL;
1005 } else {
1006 }
1007 {
1008 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1009 var203 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1010 if (unlikely(var203 == NULL)) {
1011 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1012 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1013 fatal_exit(1);
1014 }
1015 var201 = var203;
1016 RET_LABEL202:(void)0;
1017 }
1018 }
1019 /* <var201:MType> isa MClassType */
1020 cltype = type_nitc__MClassType.color;
1021 idtype = type_nitc__MClassType.id;
1022 if(cltype >= var201->type->table_size) {
1023 var204 = 0;
1024 } else {
1025 var204 = var201->type->type_table[cltype] == idtype;
1026 }
1027 if (unlikely(!var204)) {
1028 var_class_name = var201 == NULL ? "null" : var201->type->name;
1029 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
1030 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1238);
1031 fatal_exit(1);
1032 }
1033 var_valtype = var201;
1034 /* <var_mtype:MType> isa MClassType */
1035 cltype208 = type_nitc__MClassType.color;
1036 idtype209 = type_nitc__MClassType.id;
1037 if(cltype208 >= var_mtype->type->table_size) {
1038 var207 = 0;
1039 } else {
1040 var207 = var_mtype->type->type_table[cltype208] == idtype209;
1041 }
1042 var_210 = var207;
1043 if (var207){
1044 {
1045 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
1046 var213 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
1047 if (unlikely(var213 == NULL)) {
1048 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1049 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
1050 fatal_exit(1);
1051 }
1052 var211 = var213;
1053 RET_LABEL212:(void)0;
1054 }
1055 }
1056 {
1057 { /* Inline model#MClass#kind (var211) on <var211:MClass> */
1058 var216 = var211->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var211:MClass> */
1059 if (unlikely(var216 == NULL)) {
1060 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
1061 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 459);
1062 fatal_exit(1);
1063 }
1064 var214 = var216;
1065 RET_LABEL215:(void)0;
1066 }
1067 }
1068 var217 = glob_sys;
1069 {
1070 var218 = nitc__model___core__Sys___extern_kind(var217);
1071 }
1072 {
1073 { /* Inline kernel#Object#== (var214,var218) on <var214:MClassKind> */
1074 var_other = var218;
1075 {
1076 { /* Inline kernel#Object#is_same_instance (var214,var_other) on <var214:MClassKind> */
1077 var223 = var214 == var_other;
1078 var221 = var223;
1079 goto RET_LABEL222;
1080 RET_LABEL222:(void)0;
1081 }
1082 }
1083 var219 = var221;
1084 goto RET_LABEL220;
1085 RET_LABEL220:(void)0;
1086 }
1087 }
1088 var206 = var219;
1089 } else {
1090 var206 = var_210;
1091 }
1092 var_224 = var206;
1093 if (var206){
1094 {
1095 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
1096 var227 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
1097 if (unlikely(var227 == NULL)) {
1098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1099 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
1100 fatal_exit(1);
1101 }
1102 var225 = var227;
1103 RET_LABEL226:(void)0;
1104 }
1105 }
1106 {
1107 { /* Inline model#MClass#name (var225) on <var225:MClass> */
1108 var230 = var225->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var225:MClass> */
1109 if (unlikely(var230 == NULL)) {
1110 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1111 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 385);
1112 fatal_exit(1);
1113 }
1114 var228 = var230;
1115 RET_LABEL229:(void)0;
1116 }
1117 }
1118 if (likely(varonce231!=NULL)) {
1119 var232 = varonce231;
1120 } else {
1121 var233 = "CString";
1122 var234 = core__flat___NativeString___to_s_full(var233, 7l, 7l);
1123 var232 = var234;
1124 varonce231 = var232;
1125 }
1126 {
1127 { /* Inline kernel#Object#!= (var228,var232) on <var228:String> */
1128 var_other237 = var232;
1129 {
1130 var238 = ((short int(*)(val* self, val* p0))(var228->class->vft[COLOR_core__kernel__Object___61d_61d]))(var228, var_other237); /* == on <var228:String>*/
1131 }
1132 var239 = !var238;
1133 var235 = var239;
1134 goto RET_LABEL236;
1135 RET_LABEL236:(void)0;
1136 }
1137 }
1138 var205 = var235;
1139 } else {
1140 var205 = var_224;
1141 }
1142 if (var205){
1143 {
1144 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1145 var242 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1146 if (unlikely(var242 == NULL)) {
1147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1148 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
1149 fatal_exit(1);
1150 }
1151 var240 = var242;
1152 RET_LABEL241:(void)0;
1153 }
1154 }
1155 {
1156 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var240) on <var240:AbstractCompiler(SeparateCompiler)> */
1157 var245 = var240->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var240:AbstractCompiler(SeparateCompiler)> */
1158 if (unlikely(var245 == NULL)) {
1159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1160 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
1161 fatal_exit(1);
1162 }
1163 var243 = var245;
1164 RET_LABEL244:(void)0;
1165 }
1166 }
1167 {
1168 var246 = nitc__model___MModule___pointer_type(var243);
1169 }
1170 var_valtype = var246;
1171 } else {
1172 }
1173 {
1174 var247 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var_mtype);
1175 }
1176 var_res248 = var247;
1177 {
1178 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_value) on <var_value:RuntimeVariable> */
1179 var251 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
1180 if (unlikely(var251 == NULL)) {
1181 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
1182 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
1183 fatal_exit(1);
1184 }
1185 var249 = var251;
1186 RET_LABEL250:(void)0;
1187 }
1188 }
1189 {
1190 { /* Inline abstract_compiler#RuntimeVariable#mcasttype= (var_res248,var249) on <var_res248:RuntimeVariable> */
1191 var_res248->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val = var249; /* _mcasttype on <var_res248:RuntimeVariable> */
1192 RET_LABEL252:(void)0;
1193 }
1194 }
1195 if (unlikely(varonce253==NULL)) {
1196 var254 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
1197 if (likely(varonce255!=NULL)) {
1198 var256 = varonce255;
1199 } else {
1200 var257 = "BOX_";
1201 var258 = core__flat___NativeString___to_s_full(var257, 4l, 4l);
1202 var256 = var258;
1203 varonce255 = var256;
1204 }
1205 ((struct instance_core__NativeArray*)var254)->values[0]=var256;
1206 } else {
1207 var254 = varonce253;
1208 varonce253 = NULL;
1209 }
1210 {
1211 var259 = ((val*(*)(val* self))(var_valtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_valtype); /* c_name on <var_valtype:MClassType>*/
1212 }
1213 ((struct instance_core__NativeArray*)var254)->values[1]=var259;
1214 {
1215 var260 = ((val*(*)(val* self))(var254->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var254); /* native_to_s on <var254:NativeArray[String]>*/
1216 }
1217 varonce253 = var254;
1218 {
1219 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var260); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
1220 }
1221 if (unlikely(varonce261==NULL)) {
1222 var262 = NEW_core__NativeArray(10l, &type_core__NativeArray__core__String);
1223 if (likely(varonce263!=NULL)) {
1224 var264 = varonce263;
1225 } else {
1226 var265 = " = BOX_";
1227 var266 = core__flat___NativeString___to_s_full(var265, 7l, 7l);
1228 var264 = var266;
1229 varonce263 = var264;
1230 }
1231 ((struct instance_core__NativeArray*)var262)->values[1]=var264;
1232 if (likely(varonce267!=NULL)) {
1233 var268 = varonce267;
1234 } else {
1235 var269 = "(";
1236 var270 = core__flat___NativeString___to_s_full(var269, 1l, 1l);
1237 var268 = var270;
1238 varonce267 = var268;
1239 }
1240 ((struct instance_core__NativeArray*)var262)->values[3]=var268;
1241 if (likely(varonce271!=NULL)) {
1242 var272 = varonce271;
1243 } else {
1244 var273 = "); /* autobox from ";
1245 var274 = core__flat___NativeString___to_s_full(var273, 19l, 19l);
1246 var272 = var274;
1247 varonce271 = var272;
1248 }
1249 ((struct instance_core__NativeArray*)var262)->values[5]=var272;
1250 if (likely(varonce275!=NULL)) {
1251 var276 = varonce275;
1252 } else {
1253 var277 = " to ";
1254 var278 = core__flat___NativeString___to_s_full(var277, 4l, 4l);
1255 var276 = var278;
1256 varonce275 = var276;
1257 }
1258 ((struct instance_core__NativeArray*)var262)->values[7]=var276;
1259 if (likely(varonce279!=NULL)) {
1260 var280 = varonce279;
1261 } else {
1262 var281 = " */";
1263 var282 = core__flat___NativeString___to_s_full(var281, 3l, 3l);
1264 var280 = var282;
1265 varonce279 = var280;
1266 }
1267 ((struct instance_core__NativeArray*)var262)->values[9]=var280;
1268 } else {
1269 var262 = varonce261;
1270 varonce261 = NULL;
1271 }
1272 {
1273 var283 = ((val*(*)(val* self))(var_res248->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res248); /* to_s on <var_res248:RuntimeVariable>*/
1274 }
1275 ((struct instance_core__NativeArray*)var262)->values[0]=var283;
1276 {
1277 var284 = ((val*(*)(val* self))(var_valtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_valtype); /* c_name on <var_valtype:MClassType>*/
1278 }
1279 ((struct instance_core__NativeArray*)var262)->values[2]=var284;
1280 {
1281 var285 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
1282 }
1283 ((struct instance_core__NativeArray*)var262)->values[4]=var285;
1284 {
1285 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1286 var288 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1287 if (unlikely(var288 == NULL)) {
1288 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1289 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1290 fatal_exit(1);
1291 }
1292 var286 = var288;
1293 RET_LABEL287:(void)0;
1294 }
1295 }
1296 {
1297 var289 = ((val*(*)(val* self))(var286->class->vft[COLOR_core__abstract_text__Object__to_s]))(var286); /* to_s on <var286:MType>*/
1298 }
1299 ((struct instance_core__NativeArray*)var262)->values[6]=var289;
1300 {
1301 var290 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
1302 }
1303 ((struct instance_core__NativeArray*)var262)->values[8]=var290;
1304 {
1305 var291 = ((val*(*)(val* self))(var262->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var262); /* native_to_s on <var262:NativeArray[String]>*/
1306 }
1307 varonce261 = var262;
1308 {
1309 nitc___nitc__AbstractCompilerVisitor___add(self, var291); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1310 }
1311 var = var_res248;
1312 goto RET_LABEL;
1313 } else {
1314 {
1315 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1316 var297 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1317 if (unlikely(var297 == NULL)) {
1318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1319 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1320 fatal_exit(1);
1321 }
1322 var295 = var297;
1323 RET_LABEL296:(void)0;
1324 }
1325 }
1326 {
1327 var298 = ((val*(*)(val* self))(var295->class->vft[COLOR_nitc__abstract_compiler__MType__ctype]))(var295); /* ctype on <var295:MType>*/
1328 }
1329 if (likely(varonce299!=NULL)) {
1330 var300 = varonce299;
1331 } else {
1332 var301 = "void*";
1333 var302 = core__flat___NativeString___to_s_full(var301, 5l, 5l);
1334 var300 = var302;
1335 varonce299 = var300;
1336 }
1337 {
1338 var303 = ((short int(*)(val* self, val* p0))(var298->class->vft[COLOR_core__kernel__Object___61d_61d]))(var298, var300); /* == on <var298:String>*/
1339 }
1340 var_304 = var303;
1341 if (var303){
1342 {
1343 var305 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__abstract_compiler__MType__ctype]))(var_mtype); /* ctype on <var_mtype:MType>*/
1344 }
1345 if (likely(varonce306!=NULL)) {
1346 var307 = varonce306;
1347 } else {
1348 var308 = "void*";
1349 var309 = core__flat___NativeString___to_s_full(var308, 5l, 5l);
1350 var307 = var309;
1351 varonce306 = var307;
1352 }
1353 {
1354 var310 = ((short int(*)(val* self, val* p0))(var305->class->vft[COLOR_core__kernel__Object___61d_61d]))(var305, var307); /* == on <var305:String>*/
1355 }
1356 var294 = var310;
1357 } else {
1358 var294 = var_304;
1359 }
1360 var_311 = var294;
1361 if (var294){
1362 var293 = var_311;
1363 } else {
1364 {
1365 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1366 var315 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1367 if (unlikely(var315 == NULL)) {
1368 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1369 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1370 fatal_exit(1);
1371 }
1372 var313 = var315;
1373 RET_LABEL314:(void)0;
1374 }
1375 }
1376 {
1377 var316 = ((val*(*)(val* self))(var313->class->vft[COLOR_nitc__abstract_compiler__MType__ctype]))(var313); /* ctype on <var313:MType>*/
1378 }
1379 if (likely(varonce317!=NULL)) {
1380 var318 = varonce317;
1381 } else {
1382 var319 = "char*";
1383 var320 = core__flat___NativeString___to_s_full(var319, 5l, 5l);
1384 var318 = var320;
1385 varonce317 = var318;
1386 }
1387 {
1388 var321 = ((short int(*)(val* self, val* p0))(var316->class->vft[COLOR_core__kernel__Object___61d_61d]))(var316, var318); /* == on <var316:String>*/
1389 }
1390 var_322 = var321;
1391 if (var321){
1392 {
1393 var323 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__abstract_compiler__MType__ctype]))(var_mtype); /* ctype on <var_mtype:MType>*/
1394 }
1395 if (likely(varonce324!=NULL)) {
1396 var325 = varonce324;
1397 } else {
1398 var326 = "void*";
1399 var327 = core__flat___NativeString___to_s_full(var326, 5l, 5l);
1400 var325 = var327;
1401 varonce324 = var325;
1402 }
1403 {
1404 var328 = ((short int(*)(val* self, val* p0))(var323->class->vft[COLOR_core__kernel__Object___61d_61d]))(var323, var325); /* == on <var323:String>*/
1405 }
1406 var312 = var328;
1407 } else {
1408 var312 = var_322;
1409 }
1410 var293 = var312;
1411 }
1412 var_329 = var293;
1413 if (var293){
1414 var292 = var_329;
1415 } else {
1416 {
1417 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1418 var333 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1419 if (unlikely(var333 == NULL)) {
1420 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1421 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1422 fatal_exit(1);
1423 }
1424 var331 = var333;
1425 RET_LABEL332:(void)0;
1426 }
1427 }
1428 {
1429 var334 = ((val*(*)(val* self))(var331->class->vft[COLOR_nitc__abstract_compiler__MType__ctype]))(var331); /* ctype on <var331:MType>*/
1430 }
1431 if (likely(varonce335!=NULL)) {
1432 var336 = varonce335;
1433 } else {
1434 var337 = "void*";
1435 var338 = core__flat___NativeString___to_s_full(var337, 5l, 5l);
1436 var336 = var338;
1437 varonce335 = var336;
1438 }
1439 {
1440 var339 = ((short int(*)(val* self, val* p0))(var334->class->vft[COLOR_core__kernel__Object___61d_61d]))(var334, var336); /* == on <var334:String>*/
1441 }
1442 var_340 = var339;
1443 if (var339){
1444 {
1445 var341 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__abstract_compiler__MType__ctype]))(var_mtype); /* ctype on <var_mtype:MType>*/
1446 }
1447 if (likely(varonce342!=NULL)) {
1448 var343 = varonce342;
1449 } else {
1450 var344 = "char*";
1451 var345 = core__flat___NativeString___to_s_full(var344, 5l, 5l);
1452 var343 = var345;
1453 varonce342 = var343;
1454 }
1455 {
1456 var346 = ((short int(*)(val* self, val* p0))(var341->class->vft[COLOR_core__kernel__Object___61d_61d]))(var341, var343); /* == on <var341:String>*/
1457 }
1458 var330 = var346;
1459 } else {
1460 var330 = var_340;
1461 }
1462 var292 = var330;
1463 }
1464 if (var292){
1465 var = var_value;
1466 goto RET_LABEL;
1467 } else {
1468 {
1469 var347 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var_mtype);
1470 }
1471 var_res348 = var347;
1472 if (unlikely(varonce349==NULL)) {
1473 var350 = NEW_core__NativeArray(7l, &type_core__NativeArray__core__String);
1474 if (likely(varonce351!=NULL)) {
1475 var352 = varonce351;
1476 } else {
1477 var353 = "/* ";
1478 var354 = core__flat___NativeString___to_s_full(var353, 3l, 3l);
1479 var352 = var354;
1480 varonce351 = var352;
1481 }
1482 ((struct instance_core__NativeArray*)var350)->values[0]=var352;
1483 if (likely(varonce355!=NULL)) {
1484 var356 = varonce355;
1485 } else {
1486 var357 = " left unintialized (cannot convert ";
1487 var358 = core__flat___NativeString___to_s_full(var357, 35l, 35l);
1488 var356 = var358;
1489 varonce355 = var356;
1490 }
1491 ((struct instance_core__NativeArray*)var350)->values[2]=var356;
1492 if (likely(varonce359!=NULL)) {
1493 var360 = varonce359;
1494 } else {
1495 var361 = " to ";
1496 var362 = core__flat___NativeString___to_s_full(var361, 4l, 4l);
1497 var360 = var362;
1498 varonce359 = var360;
1499 }
1500 ((struct instance_core__NativeArray*)var350)->values[4]=var360;
1501 if (likely(varonce363!=NULL)) {
1502 var364 = varonce363;
1503 } else {
1504 var365 = ") */";
1505 var366 = core__flat___NativeString___to_s_full(var365, 4l, 4l);
1506 var364 = var366;
1507 varonce363 = var364;
1508 }
1509 ((struct instance_core__NativeArray*)var350)->values[6]=var364;
1510 } else {
1511 var350 = varonce349;
1512 varonce349 = NULL;
1513 }
1514 {
1515 var367 = ((val*(*)(val* self))(var_res348->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res348); /* to_s on <var_res348:RuntimeVariable>*/
1516 }
1517 ((struct instance_core__NativeArray*)var350)->values[1]=var367;
1518 {
1519 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1520 var370 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1521 if (unlikely(var370 == NULL)) {
1522 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1523 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1524 fatal_exit(1);
1525 }
1526 var368 = var370;
1527 RET_LABEL369:(void)0;
1528 }
1529 }
1530 {
1531 var371 = ((val*(*)(val* self))(var368->class->vft[COLOR_core__abstract_text__Object__to_s]))(var368); /* to_s on <var368:MType>*/
1532 }
1533 ((struct instance_core__NativeArray*)var350)->values[3]=var371;
1534 {
1535 var372 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
1536 }
1537 ((struct instance_core__NativeArray*)var350)->values[5]=var372;
1538 {
1539 var373 = ((val*(*)(val* self))(var350->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var350); /* native_to_s on <var350:NativeArray[String]>*/
1540 }
1541 varonce349 = var350;
1542 {
1543 nitc___nitc__AbstractCompilerVisitor___add(self, var373); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1544 }
1545 if (unlikely(varonce374==NULL)) {
1546 var375 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
1547 if (likely(varonce376!=NULL)) {
1548 var377 = varonce376;
1549 } else {
1550 var378 = "PRINT_ERROR(\"Cast error: Cannot cast %s to %s.\\n\", \"";
1551 var379 = core__flat___NativeString___to_s_full(var378, 52l, 52l);
1552 var377 = var379;
1553 varonce376 = var377;
1554 }
1555 ((struct instance_core__NativeArray*)var375)->values[0]=var377;
1556 if (likely(varonce380!=NULL)) {
1557 var381 = varonce380;
1558 } else {
1559 var382 = "\", \"";
1560 var383 = core__flat___NativeString___to_s_full(var382, 4l, 4l);
1561 var381 = var383;
1562 varonce380 = var381;
1563 }
1564 ((struct instance_core__NativeArray*)var375)->values[2]=var381;
1565 if (likely(varonce384!=NULL)) {
1566 var385 = varonce384;
1567 } else {
1568 var386 = "\"); fatal_exit(1);";
1569 var387 = core__flat___NativeString___to_s_full(var386, 18l, 18l);
1570 var385 = var387;
1571 varonce384 = var385;
1572 }
1573 ((struct instance_core__NativeArray*)var375)->values[4]=var385;
1574 } else {
1575 var375 = varonce374;
1576 varonce374 = NULL;
1577 }
1578 {
1579 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1580 var390 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1581 if (unlikely(var390 == NULL)) {
1582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1583 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1584 fatal_exit(1);
1585 }
1586 var388 = var390;
1587 RET_LABEL389:(void)0;
1588 }
1589 }
1590 {
1591 var391 = ((val*(*)(val* self))(var388->class->vft[COLOR_core__abstract_text__Object__to_s]))(var388); /* to_s on <var388:MType>*/
1592 }
1593 ((struct instance_core__NativeArray*)var375)->values[1]=var391;
1594 {
1595 var392 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
1596 }
1597 ((struct instance_core__NativeArray*)var375)->values[3]=var392;
1598 {
1599 var393 = ((val*(*)(val* self))(var375->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var375); /* native_to_s on <var375:NativeArray[String]>*/
1600 }
1601 varonce374 = var375;
1602 {
1603 nitc___nitc__AbstractCompilerVisitor___add(self, var393); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1604 }
1605 var = var_res348;
1606 goto RET_LABEL;
1607 }
1608 }
1609 }
1610 }
1611 }
1612 RET_LABEL:;
1613 return var;
1614 }
1615 /* method separate_compiler#SeparateCompilerVisitor#unbox_extern for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
1616 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__unbox_extern(val* self, val* p0, val* p1) {
1617 val* var /* : RuntimeVariable */;
1618 val* var_value /* var value: RuntimeVariable */;
1619 val* var_mtype /* var mtype: MType */;
1620 short int var1 /* : Bool */;
1621 short int var2 /* : Bool */;
1622 short int var3 /* : Bool */;
1623 int cltype;
1624 int idtype;
1625 short int var_ /* var : Bool */;
1626 val* var4 /* : MClass */;
1627 val* var6 /* : MClass */;
1628 val* var7 /* : MClassKind */;
1629 val* var9 /* : MClassKind */;
1630 val* var10 /* : Sys */;
1631 val* var11 /* : MClassKind */;
1632 short int var12 /* : Bool */;
1633 val* var_other /* var other: nullable Object */;
1634 short int var14 /* : Bool */;
1635 short int var16 /* : Bool */;
1636 short int var_17 /* var : Bool */;
1637 val* var18 /* : MClass */;
1638 val* var20 /* : MClass */;
1639 val* var21 /* : String */;
1640 val* var23 /* : String */;
1641 static val* varonce;
1642 val* var24 /* : String */;
1643 char* var25 /* : NativeString */;
1644 val* var26 /* : String */;
1645 short int var27 /* : Bool */;
1646 val* var_other29 /* var other: nullable Object */;
1647 short int var30 /* : Bool */;
1648 short int var31 /* : Bool */;
1649 val* var32 /* : AbstractCompiler */;
1650 val* var34 /* : AbstractCompiler */;
1651 val* var35 /* : MModule */;
1652 val* var37 /* : MModule */;
1653 val* var38 /* : MClassType */;
1654 val* var_pointer_type /* var pointer_type: MClassType */;
1655 val* var39 /* : RuntimeVariable */;
1656 val* var_res /* var res: RuntimeVariable */;
1657 val* var41 /* : NativeArray[String] */;
1658 static val* varonce40;
1659 static val* varonce42;
1660 val* var43 /* : String */;
1661 char* var44 /* : NativeString */;
1662 val* var45 /* : String */;
1663 static val* varonce46;
1664 val* var47 /* : String */;
1665 char* var48 /* : NativeString */;
1666 val* var49 /* : String */;
1667 static val* varonce50;
1668 val* var51 /* : String */;
1669 char* var52 /* : NativeString */;
1670 val* var53 /* : String */;
1671 static val* varonce54;
1672 val* var55 /* : String */;
1673 char* var56 /* : NativeString */;
1674 val* var57 /* : String */;
1675 val* var58 /* : String */;
1676 val* var59 /* : String */;
1677 val* var60 /* : String */;
1678 val* var61 /* : MType */;
1679 val* var63 /* : MType */;
1680 val* var64 /* : String */;
1681 val* var65 /* : String */;
1682 var_value = p0;
1683 var_mtype = p1;
1684 /* <var_mtype:MType> isa MClassType */
1685 cltype = type_nitc__MClassType.color;
1686 idtype = type_nitc__MClassType.id;
1687 if(cltype >= var_mtype->type->table_size) {
1688 var3 = 0;
1689 } else {
1690 var3 = var_mtype->type->type_table[cltype] == idtype;
1691 }
1692 var_ = var3;
1693 if (var3){
1694 {
1695 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
1696 var6 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
1697 if (unlikely(var6 == NULL)) {
1698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1699 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
1700 fatal_exit(1);
1701 }
1702 var4 = var6;
1703 RET_LABEL5:(void)0;
1704 }
1705 }
1706 {
1707 { /* Inline model#MClass#kind (var4) on <var4:MClass> */
1708 var9 = var4->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var4:MClass> */
1709 if (unlikely(var9 == NULL)) {
1710 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
1711 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 459);
1712 fatal_exit(1);
1713 }
1714 var7 = var9;
1715 RET_LABEL8:(void)0;
1716 }
1717 }
1718 var10 = glob_sys;
1719 {
1720 var11 = nitc__model___core__Sys___extern_kind(var10);
1721 }
1722 {
1723 { /* Inline kernel#Object#== (var7,var11) on <var7:MClassKind> */
1724 var_other = var11;
1725 {
1726 { /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:MClassKind> */
1727 var16 = var7 == var_other;
1728 var14 = var16;
1729 goto RET_LABEL15;
1730 RET_LABEL15:(void)0;
1731 }
1732 }
1733 var12 = var14;
1734 goto RET_LABEL13;
1735 RET_LABEL13:(void)0;
1736 }
1737 }
1738 var2 = var12;
1739 } else {
1740 var2 = var_;
1741 }
1742 var_17 = var2;
1743 if (var2){
1744 {
1745 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
1746 var20 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
1747 if (unlikely(var20 == NULL)) {
1748 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1749 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
1750 fatal_exit(1);
1751 }
1752 var18 = var20;
1753 RET_LABEL19:(void)0;
1754 }
1755 }
1756 {
1757 { /* Inline model#MClass#name (var18) on <var18:MClass> */
1758 var23 = var18->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var18:MClass> */
1759 if (unlikely(var23 == NULL)) {
1760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1761 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 385);
1762 fatal_exit(1);
1763 }
1764 var21 = var23;
1765 RET_LABEL22:(void)0;
1766 }
1767 }
1768 if (likely(varonce!=NULL)) {
1769 var24 = varonce;
1770 } else {
1771 var25 = "CString";
1772 var26 = core__flat___NativeString___to_s_full(var25, 7l, 7l);
1773 var24 = var26;
1774 varonce = var24;
1775 }
1776 {
1777 { /* Inline kernel#Object#!= (var21,var24) on <var21:String> */
1778 var_other29 = var24;
1779 {
1780 var30 = ((short int(*)(val* self, val* p0))(var21->class->vft[COLOR_core__kernel__Object___61d_61d]))(var21, var_other29); /* == on <var21:String>*/
1781 }
1782 var31 = !var30;
1783 var27 = var31;
1784 goto RET_LABEL28;
1785 RET_LABEL28:(void)0;
1786 }
1787 }
1788 var1 = var27;
1789 } else {
1790 var1 = var_17;
1791 }
1792 if (var1){
1793 {
1794 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1795 var34 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1796 if (unlikely(var34 == NULL)) {
1797 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1798 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
1799 fatal_exit(1);
1800 }
1801 var32 = var34;
1802 RET_LABEL33:(void)0;
1803 }
1804 }
1805 {
1806 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var32) on <var32:AbstractCompiler(SeparateCompiler)> */
1807 var37 = var32->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var32:AbstractCompiler(SeparateCompiler)> */
1808 if (unlikely(var37 == NULL)) {
1809 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1810 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
1811 fatal_exit(1);
1812 }
1813 var35 = var37;
1814 RET_LABEL36:(void)0;
1815 }
1816 }
1817 {
1818 var38 = nitc__model___MModule___pointer_type(var35);
1819 }
1820 var_pointer_type = var38;
1821 {
1822 var39 = nitc___nitc__AbstractCompilerVisitor___new_var_extern(self, var_mtype);
1823 }
1824 var_res = var39;
1825 if (unlikely(varonce40==NULL)) {
1826 var41 = NEW_core__NativeArray(8l, &type_core__NativeArray__core__String);
1827 if (likely(varonce42!=NULL)) {
1828 var43 = varonce42;
1829 } else {
1830 var44 = " = ((struct instance_";
1831 var45 = core__flat___NativeString___to_s_full(var44, 21l, 21l);
1832 var43 = var45;
1833 varonce42 = var43;
1834 }
1835 ((struct instance_core__NativeArray*)var41)->values[1]=var43;
1836 if (likely(varonce46!=NULL)) {
1837 var47 = varonce46;
1838 } else {
1839 var48 = "*)";
1840 var49 = core__flat___NativeString___to_s_full(var48, 2l, 2l);
1841 var47 = var49;
1842 varonce46 = var47;
1843 }
1844 ((struct instance_core__NativeArray*)var41)->values[3]=var47;
1845 if (likely(varonce50!=NULL)) {
1846 var51 = varonce50;
1847 } else {
1848 var52 = ")->value; /* unboxing ";
1849 var53 = core__flat___NativeString___to_s_full(var52, 22l, 22l);
1850 var51 = var53;
1851 varonce50 = var51;
1852 }
1853 ((struct instance_core__NativeArray*)var41)->values[5]=var51;
1854 if (likely(varonce54!=NULL)) {
1855 var55 = varonce54;
1856 } else {
1857 var56 = " */";
1858 var57 = core__flat___NativeString___to_s_full(var56, 3l, 3l);
1859 var55 = var57;
1860 varonce54 = var55;
1861 }
1862 ((struct instance_core__NativeArray*)var41)->values[7]=var55;
1863 } else {
1864 var41 = varonce40;
1865 varonce40 = NULL;
1866 }
1867 {
1868 var58 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
1869 }
1870 ((struct instance_core__NativeArray*)var41)->values[0]=var58;
1871 {
1872 var59 = ((val*(*)(val* self))(var_pointer_type->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_pointer_type); /* c_name on <var_pointer_type:MClassType>*/
1873 }
1874 ((struct instance_core__NativeArray*)var41)->values[2]=var59;
1875 {
1876 var60 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
1877 }
1878 ((struct instance_core__NativeArray*)var41)->values[4]=var60;
1879 {
1880 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1881 var63 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1882 if (unlikely(var63 == NULL)) {
1883 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1884 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
1885 fatal_exit(1);
1886 }
1887 var61 = var63;
1888 RET_LABEL62:(void)0;
1889 }
1890 }
1891 {
1892 var64 = ((val*(*)(val* self))(var61->class->vft[COLOR_core__abstract_text__Object__to_s]))(var61); /* to_s on <var61:MType>*/
1893 }
1894 ((struct instance_core__NativeArray*)var41)->values[6]=var64;
1895 {
1896 var65 = ((val*(*)(val* self))(var41->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var41); /* native_to_s on <var41:NativeArray[String]>*/
1897 }
1898 varonce40 = var41;
1899 {
1900 nitc___nitc__AbstractCompilerVisitor___add(self, var65); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1901 }
1902 var = var_res;
1903 goto RET_LABEL;
1904 } else {
1905 var = var_value;
1906 goto RET_LABEL;
1907 }
1908 RET_LABEL:;
1909 return var;
1910 }
1911 /* method separate_compiler#SeparateCompilerVisitor#box_extern for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
1912 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__box_extern(val* self, val* p0, val* p1) {
1913 val* var /* : RuntimeVariable */;
1914 val* var_value /* var value: RuntimeVariable */;
1915 val* var_mtype /* var mtype: MType */;
1916 short int var1 /* : Bool */;
1917 short int var2 /* : Bool */;
1918 short int var3 /* : Bool */;
1919 int cltype;
1920 int idtype;
1921 short int var_ /* var : Bool */;
1922 val* var4 /* : MClass */;
1923 val* var6 /* : MClass */;
1924 val* var7 /* : MClassKind */;
1925 val* var9 /* : MClassKind */;
1926 val* var10 /* : Sys */;
1927 val* var11 /* : MClassKind */;
1928 short int var12 /* : Bool */;
1929 val* var_other /* var other: nullable Object */;
1930 short int var14 /* : Bool */;
1931 short int var16 /* : Bool */;
1932 short int var_17 /* var : Bool */;
1933 val* var18 /* : MClass */;
1934 val* var20 /* : MClass */;
1935 val* var21 /* : String */;
1936 val* var23 /* : String */;
1937 static val* varonce;
1938 val* var24 /* : String */;
1939 char* var25 /* : NativeString */;
1940 val* var26 /* : String */;
1941 short int var27 /* : Bool */;
1942 val* var_other29 /* var other: nullable Object */;
1943 short int var30 /* : Bool */;
1944 short int var31 /* : Bool */;
1945 val* var32 /* : AbstractCompiler */;
1946 val* var34 /* : AbstractCompiler */;
1947 val* var35 /* : MModule */;
1948 val* var37 /* : MModule */;
1949 val* var38 /* : MClassType */;
1950 val* var_valtype /* var valtype: MClassType */;
1951 val* var39 /* : RuntimeVariable */;
1952 val* var_res /* var res: RuntimeVariable */;
1953 val* var40 /* : AbstractCompiler */;
1954 val* var42 /* : AbstractCompiler */;
1955 val* var43 /* : Set[MType] */;
1956 val* var45 /* : Set[MType] */;
1957 val* var47 /* : NativeArray[String] */;
1958 static val* varonce46;
1959 static val* varonce48;
1960 val* var49 /* : String */;
1961 char* var50 /* : NativeString */;
1962 val* var51 /* : String */;
1963 val* var52 /* : String */;
1964 val* var53 /* : String */;
1965 val* var55 /* : NativeArray[String] */;
1966 static val* varonce54;
1967 static val* varonce56;
1968 val* var57 /* : String */;
1969 char* var58 /* : NativeString */;
1970 val* var59 /* : String */;
1971 static val* varonce60;
1972 val* var61 /* : String */;
1973 char* var62 /* : NativeString */;
1974 val* var63 /* : String */;
1975 static val* varonce64;
1976 val* var65 /* : String */;
1977 char* var66 /* : NativeString */;
1978 val* var67 /* : String */;
1979 static val* varonce68;
1980 val* var69 /* : String */;
1981 char* var70 /* : NativeString */;
1982 val* var71 /* : String */;
1983 val* var72 /* : String */;
1984 val* var73 /* : String */;
1985 val* var74 /* : String */;
1986 val* var75 /* : MType */;
1987 val* var77 /* : MType */;
1988 val* var78 /* : String */;
1989 val* var79 /* : String */;
1990 val* var81 /* : NativeArray[String] */;
1991 static val* varonce80;
1992 static val* varonce82;
1993 val* var83 /* : String */;
1994 char* var84 /* : NativeString */;
1995 val* var85 /* : String */;
1996 val* var86 /* : String */;
1997 val* var87 /* : String */;
1998 val* var89 /* : NativeArray[String] */;
1999 static val* varonce88;
2000 static val* varonce90;
2001 val* var91 /* : String */;
2002 char* var92 /* : NativeString */;
2003 val* var93 /* : String */;
2004 static val* varonce94;
2005 val* var95 /* : String */;
2006 char* var96 /* : NativeString */;
2007 val* var97 /* : String */;
2008 val* var98 /* : String */;
2009 val* var99 /* : String */;
2010 val* var100 /* : String */;
2011 val* var102 /* : NativeArray[String] */;
2012 static val* varonce101;
2013 static val* varonce103;
2014 val* var104 /* : String */;
2015 char* var105 /* : NativeString */;
2016 val* var106 /* : String */;
2017 val* var107 /* : String */;
2018 val* var108 /* : String */;
2019 val* var110 /* : NativeArray[String] */;
2020 static val* varonce109;
2021 static val* varonce111;
2022 val* var112 /* : String */;
2023 char* var113 /* : NativeString */;
2024 val* var114 /* : String */;
2025 static val* varonce115;
2026 val* var116 /* : String */;
2027 char* var117 /* : NativeString */;
2028 val* var118 /* : String */;
2029 val* var119 /* : String */;
2030 val* var120 /* : String */;
2031 val* var121 /* : String */;
2032 var_value = p0;
2033 var_mtype = p1;
2034 /* <var_mtype:MType> isa MClassType */
2035 cltype = type_nitc__MClassType.color;
2036 idtype = type_nitc__MClassType.id;
2037 if(cltype >= var_mtype->type->table_size) {
2038 var3 = 0;
2039 } else {
2040 var3 = var_mtype->type->type_table[cltype] == idtype;
2041 }
2042 var_ = var3;
2043 if (var3){
2044 {
2045 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
2046 var6 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
2047 if (unlikely(var6 == NULL)) {
2048 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2049 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
2050 fatal_exit(1);
2051 }
2052 var4 = var6;
2053 RET_LABEL5:(void)0;
2054 }
2055 }
2056 {
2057 { /* Inline model#MClass#kind (var4) on <var4:MClass> */
2058 var9 = var4->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var4:MClass> */
2059 if (unlikely(var9 == NULL)) {
2060 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
2061 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 459);
2062 fatal_exit(1);
2063 }
2064 var7 = var9;
2065 RET_LABEL8:(void)0;
2066 }
2067 }
2068 var10 = glob_sys;
2069 {
2070 var11 = nitc__model___core__Sys___extern_kind(var10);
2071 }
2072 {
2073 { /* Inline kernel#Object#== (var7,var11) on <var7:MClassKind> */
2074 var_other = var11;
2075 {
2076 { /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:MClassKind> */
2077 var16 = var7 == var_other;
2078 var14 = var16;
2079 goto RET_LABEL15;
2080 RET_LABEL15:(void)0;
2081 }
2082 }
2083 var12 = var14;
2084 goto RET_LABEL13;
2085 RET_LABEL13:(void)0;
2086 }
2087 }
2088 var2 = var12;
2089 } else {
2090 var2 = var_;
2091 }
2092 var_17 = var2;
2093 if (var2){
2094 {
2095 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
2096 var20 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
2097 if (unlikely(var20 == NULL)) {
2098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2099 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1163);
2100 fatal_exit(1);
2101 }
2102 var18 = var20;
2103 RET_LABEL19:(void)0;
2104 }
2105 }
2106 {
2107 { /* Inline model#MClass#name (var18) on <var18:MClass> */
2108 var23 = var18->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var18:MClass> */
2109 if (unlikely(var23 == NULL)) {
2110 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2111 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 385);
2112 fatal_exit(1);
2113 }
2114 var21 = var23;
2115 RET_LABEL22:(void)0;
2116 }
2117 }
2118 if (likely(varonce!=NULL)) {
2119 var24 = varonce;
2120 } else {
2121 var25 = "CString";
2122 var26 = core__flat___NativeString___to_s_full(var25, 7l, 7l);
2123 var24 = var26;
2124 varonce = var24;
2125 }
2126 {
2127 { /* Inline kernel#Object#!= (var21,var24) on <var21:String> */
2128 var_other29 = var24;
2129 {
2130 var30 = ((short int(*)(val* self, val* p0))(var21->class->vft[COLOR_core__kernel__Object___61d_61d]))(var21, var_other29); /* == on <var21:String>*/
2131 }
2132 var31 = !var30;
2133 var27 = var31;
2134 goto RET_LABEL28;
2135 RET_LABEL28:(void)0;
2136 }
2137 }
2138 var1 = var27;
2139 } else {
2140 var1 = var_17;
2141 }
2142 if (var1){
2143 {
2144 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
2145 var34 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
2146 if (unlikely(var34 == NULL)) {
2147 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2148 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
2149 fatal_exit(1);
2150 }
2151 var32 = var34;
2152 RET_LABEL33:(void)0;
2153 }
2154 }
2155 {
2156 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var32) on <var32:AbstractCompiler(SeparateCompiler)> */
2157 var37 = var32->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var32:AbstractCompiler(SeparateCompiler)> */
2158 if (unlikely(var37 == NULL)) {
2159 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
2160 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
2161 fatal_exit(1);
2162 }
2163 var35 = var37;
2164 RET_LABEL36:(void)0;
2165 }
2166 }
2167 {
2168 var38 = nitc__model___MModule___pointer_type(var35);
2169 }
2170 var_valtype = var38;
2171 {
2172 var39 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var_mtype);
2173 }
2174 var_res = var39;
2175 {
2176 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
2177 var42 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
2178 if (unlikely(var42 == NULL)) {
2179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2180 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
2181 fatal_exit(1);
2182 }
2183 var40 = var42;
2184 RET_LABEL41:(void)0;
2185 }
2186 }
2187 {
2188 { /* Inline separate_compiler#SeparateCompiler#undead_types (var40) on <var40:AbstractCompiler(SeparateCompiler)> */
2189 var45 = var40->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var40:AbstractCompiler(SeparateCompiler)> */
2190 if (unlikely(var45 == NULL)) {
2191 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
2192 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 146);
2193 fatal_exit(1);
2194 }
2195 var43 = var45;
2196 RET_LABEL44:(void)0;
2197 }
2198 }
2199 {
2200 ((void(*)(val* self, val* p0))((((long)var43&3)?class_info[((long)var43&3)]:var43->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var43, var_mtype); /* add on <var43:Set[MType]>*/
2201 }
2202 if (unlikely(varonce46==NULL)) {
2203 var47 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2204 if (likely(varonce48!=NULL)) {
2205 var49 = varonce48;
2206 } else {
2207 var50 = "BOX_";
2208 var51 = core__flat___NativeString___to_s_full(var50, 4l, 4l);
2209 var49 = var51;
2210 varonce48 = var49;
2211 }
2212 ((struct instance_core__NativeArray*)var47)->values[0]=var49;
2213 } else {
2214 var47 = varonce46;
2215 varonce46 = NULL;
2216 }
2217 {
2218 var52 = ((val*(*)(val* self))(var_valtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_valtype); /* c_name on <var_valtype:MClassType>*/
2219 }
2220 ((struct instance_core__NativeArray*)var47)->values[1]=var52;
2221 {
2222 var53 = ((val*(*)(val* self))(var47->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var47); /* native_to_s on <var47:NativeArray[String]>*/
2223 }
2224 varonce46 = var47;
2225 {
2226 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var53); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
2227 }
2228 if (unlikely(varonce54==NULL)) {
2229 var55 = NEW_core__NativeArray(8l, &type_core__NativeArray__core__String);
2230 if (likely(varonce56!=NULL)) {
2231 var57 = varonce56;
2232 } else {
2233 var58 = " = BOX_";
2234 var59 = core__flat___NativeString___to_s_full(var58, 7l, 7l);
2235 var57 = var59;
2236 varonce56 = var57;
2237 }
2238 ((struct instance_core__NativeArray*)var55)->values[1]=var57;
2239 if (likely(varonce60!=NULL)) {
2240 var61 = varonce60;
2241 } else {
2242 var62 = "(";
2243 var63 = core__flat___NativeString___to_s_full(var62, 1l, 1l);
2244 var61 = var63;
2245 varonce60 = var61;
2246 }
2247 ((struct instance_core__NativeArray*)var55)->values[3]=var61;
2248 if (likely(varonce64!=NULL)) {
2249 var65 = varonce64;
2250 } else {
2251 var66 = "); /* boxing ";
2252 var67 = core__flat___NativeString___to_s_full(var66, 13l, 13l);
2253 var65 = var67;
2254 varonce64 = var65;
2255 }
2256 ((struct instance_core__NativeArray*)var55)->values[5]=var65;
2257 if (likely(varonce68!=NULL)) {
2258 var69 = varonce68;
2259 } else {
2260 var70 = " */";
2261 var71 = core__flat___NativeString___to_s_full(var70, 3l, 3l);
2262 var69 = var71;
2263 varonce68 = var69;
2264 }
2265 ((struct instance_core__NativeArray*)var55)->values[7]=var69;
2266 } else {
2267 var55 = varonce54;
2268 varonce54 = NULL;
2269 }
2270 {
2271 var72 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
2272 }
2273 ((struct instance_core__NativeArray*)var55)->values[0]=var72;
2274 {
2275 var73 = ((val*(*)(val* self))(var_valtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_valtype); /* c_name on <var_valtype:MClassType>*/
2276 }
2277 ((struct instance_core__NativeArray*)var55)->values[2]=var73;
2278 {
2279 var74 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
2280 }
2281 ((struct instance_core__NativeArray*)var55)->values[4]=var74;
2282 {
2283 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
2284 var77 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
2285 if (unlikely(var77 == NULL)) {
2286 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2287 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2288 fatal_exit(1);
2289 }
2290 var75 = var77;
2291 RET_LABEL76:(void)0;
2292 }
2293 }
2294 {
2295 var78 = ((val*(*)(val* self))(var75->class->vft[COLOR_core__abstract_text__Object__to_s]))(var75); /* to_s on <var75:MType>*/
2296 }
2297 ((struct instance_core__NativeArray*)var55)->values[6]=var78;
2298 {
2299 var79 = ((val*(*)(val* self))(var55->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var55); /* native_to_s on <var55:NativeArray[String]>*/
2300 }
2301 varonce54 = var55;
2302 {
2303 nitc___nitc__AbstractCompilerVisitor___add(self, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2304 }
2305 if (unlikely(varonce80==NULL)) {
2306 var81 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2307 if (likely(varonce82!=NULL)) {
2308 var83 = varonce82;
2309 } else {
2310 var84 = "type_";
2311 var85 = core__flat___NativeString___to_s_full(var84, 5l, 5l);
2312 var83 = var85;
2313 varonce82 = var83;
2314 }
2315 ((struct instance_core__NativeArray*)var81)->values[0]=var83;
2316 } else {
2317 var81 = varonce80;
2318 varonce80 = NULL;
2319 }
2320 {
2321 var86 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType(MClassType)>*/
2322 }
2323 ((struct instance_core__NativeArray*)var81)->values[1]=var86;
2324 {
2325 var87 = ((val*(*)(val* self))(var81->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var81); /* native_to_s on <var81:NativeArray[String]>*/
2326 }
2327 varonce80 = var81;
2328 {
2329 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var87); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
2330 }
2331 if (unlikely(varonce88==NULL)) {
2332 var89 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
2333 if (likely(varonce90!=NULL)) {
2334 var91 = varonce90;
2335 } else {
2336 var92 = "->type = &type_";
2337 var93 = core__flat___NativeString___to_s_full(var92, 15l, 15l);
2338 var91 = var93;
2339 varonce90 = var91;
2340 }
2341 ((struct instance_core__NativeArray*)var89)->values[1]=var91;
2342 if (likely(varonce94!=NULL)) {
2343 var95 = varonce94;
2344 } else {
2345 var96 = ";";
2346 var97 = core__flat___NativeString___to_s_full(var96, 1l, 1l);
2347 var95 = var97;
2348 varonce94 = var95;
2349 }
2350 ((struct instance_core__NativeArray*)var89)->values[3]=var95;
2351 } else {
2352 var89 = varonce88;
2353 varonce88 = NULL;
2354 }
2355 {
2356 var98 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
2357 }
2358 ((struct instance_core__NativeArray*)var89)->values[0]=var98;
2359 {
2360 var99 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType(MClassType)>*/
2361 }
2362 ((struct instance_core__NativeArray*)var89)->values[2]=var99;
2363 {
2364 var100 = ((val*(*)(val* self))(var89->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var89); /* native_to_s on <var89:NativeArray[String]>*/
2365 }
2366 varonce88 = var89;
2367 {
2368 nitc___nitc__AbstractCompilerVisitor___add(self, var100); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2369 }
2370 if (unlikely(varonce101==NULL)) {
2371 var102 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2372 if (likely(varonce103!=NULL)) {
2373 var104 = varonce103;
2374 } else {
2375 var105 = "class_";
2376 var106 = core__flat___NativeString___to_s_full(var105, 6l, 6l);
2377 var104 = var106;
2378 varonce103 = var104;
2379 }
2380 ((struct instance_core__NativeArray*)var102)->values[0]=var104;
2381 } else {
2382 var102 = varonce101;
2383 varonce101 = NULL;
2384 }
2385 {
2386 var107 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType(MClassType)>*/
2387 }
2388 ((struct instance_core__NativeArray*)var102)->values[1]=var107;
2389 {
2390 var108 = ((val*(*)(val* self))(var102->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var102); /* native_to_s on <var102:NativeArray[String]>*/
2391 }
2392 varonce101 = var102;
2393 {
2394 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var108); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
2395 }
2396 if (unlikely(varonce109==NULL)) {
2397 var110 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
2398 if (likely(varonce111!=NULL)) {
2399 var112 = varonce111;
2400 } else {
2401 var113 = "->class = &class_";
2402 var114 = core__flat___NativeString___to_s_full(var113, 17l, 17l);
2403 var112 = var114;
2404 varonce111 = var112;
2405 }
2406 ((struct instance_core__NativeArray*)var110)->values[1]=var112;
2407 if (likely(varonce115!=NULL)) {
2408 var116 = varonce115;
2409 } else {
2410 var117 = ";";
2411 var118 = core__flat___NativeString___to_s_full(var117, 1l, 1l);
2412 var116 = var118;
2413 varonce115 = var116;
2414 }
2415 ((struct instance_core__NativeArray*)var110)->values[3]=var116;
2416 } else {
2417 var110 = varonce109;
2418 varonce109 = NULL;
2419 }
2420 {
2421 var119 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
2422 }
2423 ((struct instance_core__NativeArray*)var110)->values[0]=var119;
2424 {
2425 var120 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType(MClassType)>*/
2426 }
2427 ((struct instance_core__NativeArray*)var110)->values[2]=var120;
2428 {
2429 var121 = ((val*(*)(val* self))(var110->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var110); /* native_to_s on <var110:NativeArray[String]>*/
2430 }
2431 varonce109 = var110;
2432 {
2433 nitc___nitc__AbstractCompilerVisitor___add(self, var121); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2434 }
2435 var = var_res;
2436 goto RET_LABEL;
2437 } else {
2438 var = var_value;
2439 goto RET_LABEL;
2440 }
2441 RET_LABEL:;
2442 return var;
2443 }
2444 /* method separate_compiler#SeparateCompilerVisitor#extract_tag for (self: SeparateCompilerVisitor, RuntimeVariable): String */
2445 val* nitc___nitc__SeparateCompilerVisitor___extract_tag(val* self, val* p0) {
2446 val* var /* : String */;
2447 val* var_value /* var value: RuntimeVariable */;
2448 val* var1 /* : MType */;
2449 val* var3 /* : MType */;
2450 short int var4 /* : Bool */;
2451 short int var5 /* : Bool */;
2452 val* var6 /* : NativeArray[String] */;
2453 static val* varonce;
2454 static val* varonce7;
2455 val* var8 /* : String */;
2456 char* var9 /* : NativeString */;
2457 val* var10 /* : String */;
2458 static val* varonce11;
2459 val* var12 /* : String */;
2460 char* var13 /* : NativeString */;
2461 val* var14 /* : String */;
2462 val* var15 /* : String */;
2463 val* var16 /* : String */;
2464 var_value = p0;
2465 {
2466 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
2467 var3 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
2468 if (unlikely(var3 == NULL)) {
2469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2470 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2471 fatal_exit(1);
2472 }
2473 var1 = var3;
2474 RET_LABEL2:(void)0;
2475 }
2476 }
2477 {
2478 var4 = ((short int(*)(val* self))(var1->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var1); /* is_c_primitive on <var1:MType>*/
2479 }
2480 var5 = !var4;
2481 if (unlikely(!var5)) {
2482 PRINT_ERROR("Runtime error: %s", "Assert failed");
2483 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1299);
2484 fatal_exit(1);
2485 }
2486 if (unlikely(varonce==NULL)) {
2487 var6 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
2488 if (likely(varonce7!=NULL)) {
2489 var8 = varonce7;
2490 } else {
2491 var9 = "((long)";
2492 var10 = core__flat___NativeString___to_s_full(var9, 7l, 7l);
2493 var8 = var10;
2494 varonce7 = var8;
2495 }
2496 ((struct instance_core__NativeArray*)var6)->values[0]=var8;
2497 if (likely(varonce11!=NULL)) {
2498 var12 = varonce11;
2499 } else {
2500 var13 = "&3)";
2501 var14 = core__flat___NativeString___to_s_full(var13, 3l, 3l);
2502 var12 = var14;
2503 varonce11 = var12;
2504 }
2505 ((struct instance_core__NativeArray*)var6)->values[2]=var12;
2506 } else {
2507 var6 = varonce;
2508 varonce = NULL;
2509 }
2510 {
2511 var15 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
2512 }
2513 ((struct instance_core__NativeArray*)var6)->values[1]=var15;
2514 {
2515 var16 = ((val*(*)(val* self))(var6->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var6); /* native_to_s on <var6:NativeArray[String]>*/
2516 }
2517 varonce = var6;
2518 var = var16;
2519 goto RET_LABEL;
2520 RET_LABEL:;
2521 return var;
2522 }
2523 /* method separate_compiler#SeparateCompilerVisitor#class_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */
2524 val* nitc___nitc__SeparateCompilerVisitor___class_info(val* self, val* p0) {
2525 val* var /* : String */;
2526 val* var_value /* var value: RuntimeVariable */;
2527 val* var1 /* : MType */;
2528 val* var3 /* : MType */;
2529 short int var4 /* : Bool */;
2530 short int var5 /* : Bool */;
2531 short int var6 /* : Bool */;
2532 short int var7 /* : Bool */;
2533 short int var_ /* var : Bool */;
2534 val* var8 /* : AbstractCompiler */;
2535 val* var10 /* : AbstractCompiler */;
2536 val* var11 /* : ModelBuilder */;
2537 val* var13 /* : ModelBuilder */;
2538 val* var14 /* : ToolContext */;
2539 val* var16 /* : ToolContext */;
2540 val* var17 /* : OptionBool */;
2541 val* var19 /* : OptionBool */;
2542 val* var20 /* : nullable Object */;
2543 val* var22 /* : nullable Object */;
2544 short int var23 /* : Bool */;
2545 short int var24 /* : Bool */;
2546 val* var25 /* : String */;
2547 val* var_tag /* var tag: String */;
2548 val* var26 /* : NativeArray[String] */;
2549 static val* varonce;
2550 static val* varonce27;
2551 val* var28 /* : String */;
2552 char* var29 /* : NativeString */;
2553 val* var30 /* : String */;
2554 static val* varonce31;
2555 val* var32 /* : String */;
2556 char* var33 /* : NativeString */;
2557 val* var34 /* : String */;
2558 static val* varonce35;
2559 val* var36 /* : String */;
2560 char* var37 /* : NativeString */;
2561 val* var38 /* : String */;
2562 static val* varonce39;
2563 val* var40 /* : String */;
2564 char* var41 /* : NativeString */;
2565 val* var42 /* : String */;
2566 val* var43 /* : String */;
2567 val* var44 /* : String */;
2568 val* var46 /* : NativeArray[String] */;
2569 static val* varonce45;
2570 static val* varonce47;
2571 val* var48 /* : String */;
2572 char* var49 /* : NativeString */;
2573 val* var50 /* : String */;
2574 val* var51 /* : String */;
2575 val* var52 /* : String */;
2576 val* var53 /* : AbstractCompiler */;
2577 val* var55 /* : AbstractCompiler */;
2578 val* var56 /* : Set[MType] */;
2579 val* var58 /* : Set[MType] */;
2580 val* var59 /* : MType */;
2581 val* var61 /* : MType */;
2582 val* var63 /* : NativeArray[String] */;
2583 static val* varonce62;
2584 static val* varonce64;
2585 val* var65 /* : String */;
2586 char* var66 /* : NativeString */;
2587 val* var67 /* : String */;
2588 val* var68 /* : MType */;
2589 val* var70 /* : MType */;
2590 val* var71 /* : String */;
2591 val* var72 /* : String */;
2592 val* var74 /* : NativeArray[String] */;
2593 static val* varonce73;
2594 static val* varonce75;
2595 val* var76 /* : String */;
2596 char* var77 /* : NativeString */;
2597 val* var78 /* : String */;
2598 static val* varonce79;
2599 val* var80 /* : String */;
2600 char* var81 /* : NativeString */;
2601 val* var82 /* : String */;
2602 val* var83 /* : MType */;
2603 val* var85 /* : MType */;
2604 val* var86 /* : String */;
2605 val* var87 /* : String */;
2606 var_value = p0;
2607 {
2608 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
2609 var3 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
2610 if (unlikely(var3 == NULL)) {
2611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2612 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2613 fatal_exit(1);
2614 }
2615 var1 = var3;
2616 RET_LABEL2:(void)0;
2617 }
2618 }
2619 {
2620 var4 = ((short int(*)(val* self))(var1->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var1); /* is_c_primitive on <var1:MType>*/
2621 }
2622 var5 = !var4;
2623 if (var5){
2624 {
2625 var7 = nitc___nitc__SeparateCompilerVisitor___can_be_primitive(self, var_value);
2626 }
2627 var_ = var7;
2628 if (var7){
2629 {
2630 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
2631 var10 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
2632 if (unlikely(var10 == NULL)) {
2633 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2634 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
2635 fatal_exit(1);
2636 }
2637 var8 = var10;
2638 RET_LABEL9:(void)0;
2639 }
2640 }
2641 {
2642 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var8) on <var8:AbstractCompiler(SeparateCompiler)> */
2643 var13 = var8->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var8:AbstractCompiler(SeparateCompiler)> */
2644 if (unlikely(var13 == NULL)) {
2645 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2646 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
2647 fatal_exit(1);
2648 }
2649 var11 = var13;
2650 RET_LABEL12:(void)0;
2651 }
2652 }
2653 {
2654 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var11) on <var11:ModelBuilder> */
2655 var16 = var11->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var11:ModelBuilder> */
2656 if (unlikely(var16 == NULL)) {
2657 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2658 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
2659 fatal_exit(1);
2660 }
2661 var14 = var16;
2662 RET_LABEL15:(void)0;
2663 }
2664 }
2665 {
2666 { /* Inline separate_compiler#ToolContext#opt_no_tag_primitives (var14) on <var14:ToolContext> */
2667 var19 = var14->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_tag_primitives].val; /* _opt_no_tag_primitives on <var14:ToolContext> */
2668 if (unlikely(var19 == NULL)) {
2669 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_tag_primitives");
2670 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 32);
2671 fatal_exit(1);
2672 }
2673 var17 = var19;
2674 RET_LABEL18:(void)0;
2675 }
2676 }
2677 {
2678 { /* Inline opts#Option#value (var17) on <var17:OptionBool> */
2679 var22 = var17->attrs[COLOR_opts__Option___value].val; /* _value on <var17:OptionBool> */
2680 var20 = var22;
2681 RET_LABEL21:(void)0;
2682 }
2683 }
2684 var23 = (short int)((long)(var20)>>2);
2685 var24 = !var23;
2686 var6 = var24;
2687 } else {
2688 var6 = var_;
2689 }
2690 if (var6){
2691 {
2692 var25 = nitc___nitc__SeparateCompilerVisitor___extract_tag(self, var_value);
2693 }
2694 var_tag = var25;
2695 if (unlikely(varonce==NULL)) {
2696 var26 = NEW_core__NativeArray(7l, &type_core__NativeArray__core__String);
2697 if (likely(varonce27!=NULL)) {
2698 var28 = varonce27;
2699 } else {
2700 var29 = "(";
2701 var30 = core__flat___NativeString___to_s_full(var29, 1l, 1l);
2702 var28 = var30;
2703 varonce27 = var28;
2704 }
2705 ((struct instance_core__NativeArray*)var26)->values[0]=var28;
2706 if (likely(varonce31!=NULL)) {
2707 var32 = varonce31;
2708 } else {
2709 var33 = "?class_info[";
2710 var34 = core__flat___NativeString___to_s_full(var33, 12l, 12l);
2711 var32 = var34;
2712 varonce31 = var32;
2713 }
2714 ((struct instance_core__NativeArray*)var26)->values[2]=var32;
2715 if (likely(varonce35!=NULL)) {
2716 var36 = varonce35;
2717 } else {
2718 var37 = "]:";
2719 var38 = core__flat___NativeString___to_s_full(var37, 2l, 2l);
2720 var36 = var38;
2721 varonce35 = var36;
2722 }
2723 ((struct instance_core__NativeArray*)var26)->values[4]=var36;
2724 if (likely(varonce39!=NULL)) {
2725 var40 = varonce39;
2726 } else {
2727 var41 = "->class)";
2728 var42 = core__flat___NativeString___to_s_full(var41, 8l, 8l);
2729 var40 = var42;
2730 varonce39 = var40;
2731 }
2732 ((struct instance_core__NativeArray*)var26)->values[6]=var40;
2733 } else {
2734 var26 = varonce;
2735 varonce = NULL;
2736 }
2737 ((struct instance_core__NativeArray*)var26)->values[1]=var_tag;
2738 ((struct instance_core__NativeArray*)var26)->values[3]=var_tag;
2739 {
2740 var43 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
2741 }
2742 ((struct instance_core__NativeArray*)var26)->values[5]=var43;
2743 {
2744 var44 = ((val*(*)(val* self))(var26->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var26); /* native_to_s on <var26:NativeArray[String]>*/
2745 }
2746 varonce = var26;
2747 var = var44;
2748 goto RET_LABEL;
2749 } else {
2750 }
2751 if (unlikely(varonce45==NULL)) {
2752 var46 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2753 if (likely(varonce47!=NULL)) {
2754 var48 = varonce47;
2755 } else {
2756 var49 = "->class";
2757 var50 = core__flat___NativeString___to_s_full(var49, 7l, 7l);
2758 var48 = var50;
2759 varonce47 = var48;
2760 }
2761 ((struct instance_core__NativeArray*)var46)->values[1]=var48;
2762 } else {
2763 var46 = varonce45;
2764 varonce45 = NULL;
2765 }
2766 {
2767 var51 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
2768 }
2769 ((struct instance_core__NativeArray*)var46)->values[0]=var51;
2770 {
2771 var52 = ((val*(*)(val* self))(var46->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var46); /* native_to_s on <var46:NativeArray[String]>*/
2772 }
2773 varonce45 = var46;
2774 var = var52;
2775 goto RET_LABEL;
2776 } else {
2777 {
2778 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
2779 var55 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
2780 if (unlikely(var55 == NULL)) {
2781 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2782 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
2783 fatal_exit(1);
2784 }
2785 var53 = var55;
2786 RET_LABEL54:(void)0;
2787 }
2788 }
2789 {
2790 { /* Inline separate_compiler#SeparateCompiler#undead_types (var53) on <var53:AbstractCompiler(SeparateCompiler)> */
2791 var58 = var53->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var53:AbstractCompiler(SeparateCompiler)> */
2792 if (unlikely(var58 == NULL)) {
2793 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
2794 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 146);
2795 fatal_exit(1);
2796 }
2797 var56 = var58;
2798 RET_LABEL57:(void)0;
2799 }
2800 }
2801 {
2802 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
2803 var61 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
2804 if (unlikely(var61 == NULL)) {
2805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2806 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2807 fatal_exit(1);
2808 }
2809 var59 = var61;
2810 RET_LABEL60:(void)0;
2811 }
2812 }
2813 {
2814 ((void(*)(val* self, val* p0))((((long)var56&3)?class_info[((long)var56&3)]:var56->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var56, var59); /* add on <var56:Set[MType]>*/
2815 }
2816 if (unlikely(varonce62==NULL)) {
2817 var63 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
2818 if (likely(varonce64!=NULL)) {
2819 var65 = varonce64;
2820 } else {
2821 var66 = "class_";
2822 var67 = core__flat___NativeString___to_s_full(var66, 6l, 6l);
2823 var65 = var67;
2824 varonce64 = var65;
2825 }
2826 ((struct instance_core__NativeArray*)var63)->values[0]=var65;
2827 } else {
2828 var63 = varonce62;
2829 varonce62 = NULL;
2830 }
2831 {
2832 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
2833 var70 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
2834 if (unlikely(var70 == NULL)) {
2835 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2836 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2837 fatal_exit(1);
2838 }
2839 var68 = var70;
2840 RET_LABEL69:(void)0;
2841 }
2842 }
2843 {
2844 var71 = ((val*(*)(val* self))(var68->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var68); /* c_name on <var68:MType>*/
2845 }
2846 ((struct instance_core__NativeArray*)var63)->values[1]=var71;
2847 {
2848 var72 = ((val*(*)(val* self))(var63->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var63); /* native_to_s on <var63:NativeArray[String]>*/
2849 }
2850 varonce62 = var63;
2851 {
2852 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
2853 }
2854 if (unlikely(varonce73==NULL)) {
2855 var74 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
2856 if (likely(varonce75!=NULL)) {
2857 var76 = varonce75;
2858 } else {
2859 var77 = "(&class_";
2860 var78 = core__flat___NativeString___to_s_full(var77, 8l, 8l);
2861 var76 = var78;
2862 varonce75 = var76;
2863 }
2864 ((struct instance_core__NativeArray*)var74)->values[0]=var76;
2865 if (likely(varonce79!=NULL)) {
2866 var80 = varonce79;
2867 } else {
2868 var81 = ")";
2869 var82 = core__flat___NativeString___to_s_full(var81, 1l, 1l);
2870 var80 = var82;
2871 varonce79 = var80;
2872 }
2873 ((struct instance_core__NativeArray*)var74)->values[2]=var80;
2874 } else {
2875 var74 = varonce73;
2876 varonce73 = NULL;
2877 }
2878 {
2879 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
2880 var85 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
2881 if (unlikely(var85 == NULL)) {
2882 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2883 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2884 fatal_exit(1);
2885 }
2886 var83 = var85;
2887 RET_LABEL84:(void)0;
2888 }
2889 }
2890 {
2891 var86 = ((val*(*)(val* self))(var83->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var83); /* c_name on <var83:MType>*/
2892 }
2893 ((struct instance_core__NativeArray*)var74)->values[1]=var86;
2894 {
2895 var87 = ((val*(*)(val* self))(var74->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var74); /* native_to_s on <var74:NativeArray[String]>*/
2896 }
2897 varonce73 = var74;
2898 var = var87;
2899 goto RET_LABEL;
2900 }
2901 RET_LABEL:;
2902 return var;
2903 }
2904 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */
2905 val* nitc___nitc__SeparateCompilerVisitor___type_info(val* self, val* p0) {
2906 val* var /* : String */;
2907 val* var_value /* var value: RuntimeVariable */;
2908 val* var1 /* : MType */;
2909 val* var3 /* : MType */;
2910 short int var4 /* : Bool */;
2911 short int var5 /* : Bool */;
2912 short int var6 /* : Bool */;
2913 short int var7 /* : Bool */;
2914 short int var_ /* var : Bool */;
2915 val* var8 /* : AbstractCompiler */;
2916 val* var10 /* : AbstractCompiler */;
2917 val* var11 /* : ModelBuilder */;
2918 val* var13 /* : ModelBuilder */;
2919 val* var14 /* : ToolContext */;
2920 val* var16 /* : ToolContext */;
2921 val* var17 /* : OptionBool */;
2922 val* var19 /* : OptionBool */;
2923 val* var20 /* : nullable Object */;
2924 val* var22 /* : nullable Object */;
2925 short int var23 /* : Bool */;
2926 short int var24 /* : Bool */;
2927 val* var25 /* : String */;
2928 val* var_tag /* var tag: String */;
2929 val* var26 /* : NativeArray[String] */;
2930 static val* varonce;
2931 static val* varonce27;
2932 val* var28 /* : String */;
2933 char* var29 /* : NativeString */;
2934 val* var30 /* : String */;
2935 static val* varonce31;
2936 val* var32 /* : String */;
2937 char* var33 /* : NativeString */;
2938 val* var34 /* : String */;
2939 static val* varonce35;
2940 val* var36 /* : String */;
2941 char* var37 /* : NativeString */;
2942 val* var38 /* : String */;
2943 static val* varonce39;
2944 val* var40 /* : String */;
2945 char* var41 /* : NativeString */;
2946 val* var42 /* : String */;
2947 val* var43 /* : String */;
2948 val* var44 /* : String */;
2949 val* var46 /* : NativeArray[String] */;
2950 static val* varonce45;
2951 static val* varonce47;
2952 val* var48 /* : String */;
2953 char* var49 /* : NativeString */;
2954 val* var50 /* : String */;
2955 val* var51 /* : String */;
2956 val* var52 /* : String */;
2957 val* var53 /* : AbstractCompiler */;
2958 val* var55 /* : AbstractCompiler */;
2959 val* var56 /* : Set[MType] */;
2960 val* var58 /* : Set[MType] */;
2961 val* var59 /* : MType */;
2962 val* var61 /* : MType */;
2963 val* var63 /* : NativeArray[String] */;
2964 static val* varonce62;
2965 static val* varonce64;
2966 val* var65 /* : String */;
2967 char* var66 /* : NativeString */;
2968 val* var67 /* : String */;
2969 val* var68 /* : MType */;
2970 val* var70 /* : MType */;
2971 val* var71 /* : String */;
2972 val* var72 /* : String */;
2973 val* var74 /* : NativeArray[String] */;
2974 static val* varonce73;
2975 static val* varonce75;
2976 val* var76 /* : String */;
2977 char* var77 /* : NativeString */;
2978 val* var78 /* : String */;
2979 static val* varonce79;
2980 val* var80 /* : String */;
2981 char* var81 /* : NativeString */;
2982 val* var82 /* : String */;
2983 val* var83 /* : MType */;
2984 val* var85 /* : MType */;
2985 val* var86 /* : String */;
2986 val* var87 /* : String */;
2987 var_value = p0;
2988 {
2989 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
2990 var3 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
2991 if (unlikely(var3 == NULL)) {
2992 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2993 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
2994 fatal_exit(1);
2995 }
2996 var1 = var3;
2997 RET_LABEL2:(void)0;
2998 }
2999 }
3000 {
3001 var4 = ((short int(*)(val* self))(var1->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var1); /* is_c_primitive on <var1:MType>*/
3002 }
3003 var5 = !var4;
3004 if (var5){
3005 {
3006 var7 = nitc___nitc__SeparateCompilerVisitor___can_be_primitive(self, var_value);
3007 }
3008 var_ = var7;
3009 if (var7){
3010 {
3011 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3012 var10 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3013 if (unlikely(var10 == NULL)) {
3014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3015 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3016 fatal_exit(1);
3017 }
3018 var8 = var10;
3019 RET_LABEL9:(void)0;
3020 }
3021 }
3022 {
3023 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var8) on <var8:AbstractCompiler(SeparateCompiler)> */
3024 var13 = var8->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var8:AbstractCompiler(SeparateCompiler)> */
3025 if (unlikely(var13 == NULL)) {
3026 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3027 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
3028 fatal_exit(1);
3029 }
3030 var11 = var13;
3031 RET_LABEL12:(void)0;
3032 }
3033 }
3034 {
3035 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var11) on <var11:ModelBuilder> */
3036 var16 = var11->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var11:ModelBuilder> */
3037 if (unlikely(var16 == NULL)) {
3038 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3039 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
3040 fatal_exit(1);
3041 }
3042 var14 = var16;
3043 RET_LABEL15:(void)0;
3044 }
3045 }
3046 {
3047 { /* Inline separate_compiler#ToolContext#opt_no_tag_primitives (var14) on <var14:ToolContext> */
3048 var19 = var14->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_tag_primitives].val; /* _opt_no_tag_primitives on <var14:ToolContext> */
3049 if (unlikely(var19 == NULL)) {
3050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_tag_primitives");
3051 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 32);
3052 fatal_exit(1);
3053 }
3054 var17 = var19;
3055 RET_LABEL18:(void)0;
3056 }
3057 }
3058 {
3059 { /* Inline opts#Option#value (var17) on <var17:OptionBool> */
3060 var22 = var17->attrs[COLOR_opts__Option___value].val; /* _value on <var17:OptionBool> */
3061 var20 = var22;
3062 RET_LABEL21:(void)0;
3063 }
3064 }
3065 var23 = (short int)((long)(var20)>>2);
3066 var24 = !var23;
3067 var6 = var24;
3068 } else {
3069 var6 = var_;
3070 }
3071 if (var6){
3072 {
3073 var25 = nitc___nitc__SeparateCompilerVisitor___extract_tag(self, var_value);
3074 }
3075 var_tag = var25;
3076 if (unlikely(varonce==NULL)) {
3077 var26 = NEW_core__NativeArray(7l, &type_core__NativeArray__core__String);
3078 if (likely(varonce27!=NULL)) {
3079 var28 = varonce27;
3080 } else {
3081 var29 = "(";
3082 var30 = core__flat___NativeString___to_s_full(var29, 1l, 1l);
3083 var28 = var30;
3084 varonce27 = var28;
3085 }
3086 ((struct instance_core__NativeArray*)var26)->values[0]=var28;
3087 if (likely(varonce31!=NULL)) {
3088 var32 = varonce31;
3089 } else {
3090 var33 = "?type_info[";
3091 var34 = core__flat___NativeString___to_s_full(var33, 11l, 11l);
3092 var32 = var34;
3093 varonce31 = var32;
3094 }
3095 ((struct instance_core__NativeArray*)var26)->values[2]=var32;
3096 if (likely(varonce35!=NULL)) {
3097 var36 = varonce35;
3098 } else {
3099 var37 = "]:";
3100 var38 = core__flat___NativeString___to_s_full(var37, 2l, 2l);
3101 var36 = var38;
3102 varonce35 = var36;
3103 }
3104 ((struct instance_core__NativeArray*)var26)->values[4]=var36;
3105 if (likely(varonce39!=NULL)) {
3106 var40 = varonce39;
3107 } else {
3108 var41 = "->type)";
3109 var42 = core__flat___NativeString___to_s_full(var41, 7l, 7l);
3110 var40 = var42;
3111 varonce39 = var40;
3112 }
3113 ((struct instance_core__NativeArray*)var26)->values[6]=var40;
3114 } else {
3115 var26 = varonce;
3116 varonce = NULL;
3117 }
3118 ((struct instance_core__NativeArray*)var26)->values[1]=var_tag;
3119 ((struct instance_core__NativeArray*)var26)->values[3]=var_tag;
3120 {
3121 var43 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
3122 }
3123 ((struct instance_core__NativeArray*)var26)->values[5]=var43;
3124 {
3125 var44 = ((val*(*)(val* self))(var26->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var26); /* native_to_s on <var26:NativeArray[String]>*/
3126 }
3127 varonce = var26;
3128 var = var44;
3129 goto RET_LABEL;
3130 } else {
3131 }
3132 if (unlikely(varonce45==NULL)) {
3133 var46 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
3134 if (likely(varonce47!=NULL)) {
3135 var48 = varonce47;
3136 } else {
3137 var49 = "->type";
3138 var50 = core__flat___NativeString___to_s_full(var49, 6l, 6l);
3139 var48 = var50;
3140 varonce47 = var48;
3141 }
3142 ((struct instance_core__NativeArray*)var46)->values[1]=var48;
3143 } else {
3144 var46 = varonce45;
3145 varonce45 = NULL;
3146 }
3147 {
3148 var51 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
3149 }
3150 ((struct instance_core__NativeArray*)var46)->values[0]=var51;
3151 {
3152 var52 = ((val*(*)(val* self))(var46->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var46); /* native_to_s on <var46:NativeArray[String]>*/
3153 }
3154 varonce45 = var46;
3155 var = var52;
3156 goto RET_LABEL;
3157 } else {
3158 {
3159 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3160 var55 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3161 if (unlikely(var55 == NULL)) {
3162 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3163 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3164 fatal_exit(1);
3165 }
3166 var53 = var55;
3167 RET_LABEL54:(void)0;
3168 }
3169 }
3170 {
3171 { /* Inline separate_compiler#SeparateCompiler#undead_types (var53) on <var53:AbstractCompiler(SeparateCompiler)> */
3172 var58 = var53->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var53:AbstractCompiler(SeparateCompiler)> */
3173 if (unlikely(var58 == NULL)) {
3174 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
3175 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 146);
3176 fatal_exit(1);
3177 }
3178 var56 = var58;
3179 RET_LABEL57:(void)0;
3180 }
3181 }
3182 {
3183 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3184 var61 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3185 if (unlikely(var61 == NULL)) {
3186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3187 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
3188 fatal_exit(1);
3189 }
3190 var59 = var61;
3191 RET_LABEL60:(void)0;
3192 }
3193 }
3194 {
3195 ((void(*)(val* self, val* p0))((((long)var56&3)?class_info[((long)var56&3)]:var56->class)->vft[COLOR_core__abstract_collection__SimpleCollection__add]))(var56, var59); /* add on <var56:Set[MType]>*/
3196 }
3197 if (unlikely(varonce62==NULL)) {
3198 var63 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
3199 if (likely(varonce64!=NULL)) {
3200 var65 = varonce64;
3201 } else {
3202 var66 = "type_";
3203 var67 = core__flat___NativeString___to_s_full(var66, 5l, 5l);
3204 var65 = var67;
3205 varonce64 = var65;
3206 }
3207 ((struct instance_core__NativeArray*)var63)->values[0]=var65;
3208 } else {
3209 var63 = varonce62;
3210 varonce62 = NULL;
3211 }
3212 {
3213 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3214 var70 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3215 if (unlikely(var70 == NULL)) {
3216 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3217 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
3218 fatal_exit(1);
3219 }
3220 var68 = var70;
3221 RET_LABEL69:(void)0;
3222 }
3223 }
3224 {
3225 var71 = ((val*(*)(val* self))(var68->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var68); /* c_name on <var68:MType>*/
3226 }
3227 ((struct instance_core__NativeArray*)var63)->values[1]=var71;
3228 {
3229 var72 = ((val*(*)(val* self))(var63->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var63); /* native_to_s on <var63:NativeArray[String]>*/
3230 }
3231 varonce62 = var63;
3232 {
3233 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
3234 }
3235 if (unlikely(varonce73==NULL)) {
3236 var74 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
3237 if (likely(varonce75!=NULL)) {
3238 var76 = varonce75;
3239 } else {
3240 var77 = "(&type_";
3241 var78 = core__flat___NativeString___to_s_full(var77, 7l, 7l);
3242 var76 = var78;
3243 varonce75 = var76;
3244 }
3245 ((struct instance_core__NativeArray*)var74)->values[0]=var76;
3246 if (likely(varonce79!=NULL)) {
3247 var80 = varonce79;
3248 } else {
3249 var81 = ")";
3250 var82 = core__flat___NativeString___to_s_full(var81, 1l, 1l);
3251 var80 = var82;
3252 varonce79 = var80;
3253 }
3254 ((struct instance_core__NativeArray*)var74)->values[2]=var80;
3255 } else {
3256 var74 = varonce73;
3257 varonce73 = NULL;
3258 }
3259 {
3260 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
3261 var85 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3262 if (unlikely(var85 == NULL)) {
3263 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3264 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1870);
3265 fatal_exit(1);
3266 }
3267 var83 = var85;
3268 RET_LABEL84:(void)0;
3269 }
3270 }
3271 {
3272 var86 = ((val*(*)(val* self))(var83->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var83); /* c_name on <var83:MType>*/
3273 }
3274 ((struct instance_core__NativeArray*)var74)->values[1]=var86;
3275 {
3276 var87 = ((val*(*)(val* self))(var74->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var74); /* native_to_s on <var74:NativeArray[String]>*/
3277 }
3278 varonce73 = var74;
3279 var = var87;
3280 goto RET_LABEL;
3281 }
3282 RET_LABEL:;
3283 return var;
3284 }
3285 /* method separate_compiler#SeparateCompilerVisitor#compile_callsite for (self: SeparateCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
3286 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
3287 val* var /* : nullable RuntimeVariable */;
3288 val* var_callsite /* var callsite: CallSite */;
3289 val* var_args /* var args: Array[RuntimeVariable] */;
3290 val* var1 /* : AbstractCompiler */;
3291 val* var3 /* : AbstractCompiler */;
3292 val* var4 /* : nullable RapidTypeAnalysis */;
3293 val* var6 /* : nullable RapidTypeAnalysis */;
3294 val* var_rta /* var rta: nullable RapidTypeAnalysis */;
3295 short int var7 /* : Bool */;
3296 short int var8 /* : Bool */;
3297 val* var9 /* : AbstractCompiler */;
3298 val* var11 /* : AbstractCompiler */;
3299 val* var12 /* : ModelBuilder */;
3300 val* var14 /* : ModelBuilder */;
3301 val* var15 /* : ToolContext */;
3302 val* var17 /* : ToolContext */;
3303 val* var18 /* : OptionBool */;
3304 val* var20 /* : OptionBool */;
3305 val* var21 /* : nullable Object */;
3306 val* var23 /* : nullable Object */;
3307 short int var24 /* : Bool */;
3308 short int var_ /* var : Bool */;
3309 short int var25 /* : Bool */;
3310 short int var26 /* : Bool */;
3311 val* var_other /* var other: nullable Object */;
3312 short int var28 /* : Bool */;
3313 short int var29 /* : Bool */;
3314 short int var_30 /* var : Bool */;
3315 val* var31 /* : MMethodDef */;
3316 val* var33 /* : MMethodDef */;
3317 val* var34 /* : Array[MProperty] */;
3318 val* var36 /* : Array[MProperty] */;
3319 short int var37 /* : Bool */;
3320 val* var38 /* : Set[MMethodDef] */;
3321 val* var_tgs /* var tgs: Set[MMethodDef] */;
3322 long var39 /* : Int */;
3323 short int var40 /* : Bool */;
3324 short int var42 /* : Bool */;
3325 val* var43 /* : nullable Object */;
3326 val* var44 /* : nullable RuntimeVariable */;
3327 short int var45 /* : Bool */;
3328 val* var46 /* : MMethodDef */;
3329 val* var48 /* : MMethodDef */;
3330 short int var49 /* : Bool */;
3331 short int var51 /* : Bool */;
3332 short int var_52 /* var : Bool */;
3333 val* var53 /* : MMethod */;
3334 val* var55 /* : MMethod */;
3335 val* var56 /* : String */;
3336 val* var58 /* : String */;
3337 static val* varonce;
3338 val* var59 /* : String */;
3339 char* var60 /* : NativeString */;
3340 val* var61 /* : String */;
3341 short int var62 /* : Bool */;
3342 short int var64 /* : Bool */;
3343 short int var65 /* : Bool */;
3344 val* var66 /* : MMethodDef */;
3345 val* var68 /* : MMethodDef */;
3346 val* var69 /* : nullable RuntimeVariable */;
3347 val* var70 /* : nullable RuntimeVariable */;
3348 var_callsite = p0;
3349 var_args = p1;
3350 {
3351 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3352 var3 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3353 if (unlikely(var3 == NULL)) {
3354 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3355 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3356 fatal_exit(1);
3357 }
3358 var1 = var3;
3359 RET_LABEL2:(void)0;
3360 }
3361 }
3362 {
3363 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
3364 var6 = var1->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var1:AbstractCompiler(SeparateCompiler)> */
3365 var4 = var6;
3366 RET_LABEL5:(void)0;
3367 }
3368 }
3369 var_rta = var4;
3370 {
3371 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3372 var11 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3373 if (unlikely(var11 == NULL)) {
3374 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3375 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3376 fatal_exit(1);
3377 }
3378 var9 = var11;
3379 RET_LABEL10:(void)0;
3380 }
3381 }
3382 {
3383 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var9) on <var9:AbstractCompiler(SeparateCompiler)> */
3384 var14 = var9->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var9:AbstractCompiler(SeparateCompiler)> */
3385 if (unlikely(var14 == NULL)) {
3386 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3387 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
3388 fatal_exit(1);
3389 }
3390 var12 = var14;
3391 RET_LABEL13:(void)0;
3392 }
3393 }
3394 {
3395 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var12) on <var12:ModelBuilder> */
3396 var17 = var12->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var12:ModelBuilder> */
3397 if (unlikely(var17 == NULL)) {
3398 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3399 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
3400 fatal_exit(1);
3401 }
3402 var15 = var17;
3403 RET_LABEL16:(void)0;
3404 }
3405 }
3406 {
3407 { /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph (var15) on <var15:ToolContext> */
3408 var20 = var15->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_direct_call_monomorph].val; /* _opt_direct_call_monomorph on <var15:ToolContext> */
3409 if (unlikely(var20 == NULL)) {
3410 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph");
3411 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 50);
3412 fatal_exit(1);
3413 }
3414 var18 = var20;
3415 RET_LABEL19:(void)0;
3416 }
3417 }
3418 {
3419 { /* Inline opts#Option#value (var18) on <var18:OptionBool> */
3420 var23 = var18->attrs[COLOR_opts__Option___value].val; /* _value on <var18:OptionBool> */
3421 var21 = var23;
3422 RET_LABEL22:(void)0;
3423 }
3424 }
3425 var24 = (short int)((long)(var21)>>2);
3426 var_ = var24;
3427 if (var24){
3428 if (var_rta == NULL) {
3429 var25 = 0; /* is null */
3430 } else {
3431 var25 = 1; /* arg is null and recv is not */
3432 }
3433 if (0) {
3434 { /* Inline kernel#Object#!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
3435 var_other = ((val*)NULL);
3436 {
3437 var28 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_rta, var_other); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
3438 }
3439 var29 = !var28;
3440 var26 = var29;
3441 goto RET_LABEL27;
3442 RET_LABEL27:(void)0;
3443 }
3444 var25 = var26;
3445 }
3446 var8 = var25;
3447 } else {
3448 var8 = var_;
3449 }
3450 var_30 = var8;
3451 if (var8){
3452 {
3453 { /* Inline typing#CallSite#mpropdef (var_callsite) on <var_callsite:CallSite> */
3454 var33 = var_callsite->attrs[COLOR_nitc__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:CallSite> */
3455 if (unlikely(var33 == NULL)) {
3456 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3457 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 656);
3458 fatal_exit(1);
3459 }
3460 var31 = var33;
3461 RET_LABEL32:(void)0;
3462 }
3463 }
3464 {
3465 { /* Inline model#MMethodDef#initializers (var31) on <var31:MMethodDef> */
3466 var36 = var31->attrs[COLOR_nitc__model__MMethodDef___initializers].val; /* _initializers on <var31:MMethodDef> */
3467 if (unlikely(var36 == NULL)) {
3468 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
3469 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2363);
3470 fatal_exit(1);
3471 }
3472 var34 = var36;
3473 RET_LABEL35:(void)0;
3474 }
3475 }
3476 {
3477 var37 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var34);
3478 }
3479 var7 = var37;
3480 } else {
3481 var7 = var_30;
3482 }
3483 if (var7){
3484 {
3485 var38 = nitc___nitc__RapidTypeAnalysis___live_targets(var_rta, var_callsite);
3486 }
3487 var_tgs = var38;
3488 {
3489 var39 = ((long(*)(val* self))((((long)var_tgs&3)?class_info[((long)var_tgs&3)]:var_tgs->class)->vft[COLOR_core__abstract_collection__Collection__length]))(var_tgs); /* length on <var_tgs:Set[MMethodDef]>*/
3490 }
3491 {
3492 { /* Inline kernel#Int#== (var39,1l) on <var39:Int> */
3493 var42 = var39 == 1l;
3494 var40 = var42;
3495 goto RET_LABEL41;
3496 RET_LABEL41:(void)0;
3497 }
3498 }
3499 if (var40){
3500 {
3501 var43 = ((val*(*)(val* self))((((long)var_tgs&3)?class_info[((long)var_tgs&3)]:var_tgs->class)->vft[COLOR_core__abstract_collection__Collection__first]))(var_tgs); /* first on <var_tgs:Set[MMethodDef]>*/
3502 }
3503 {
3504 var44 = nitc___nitc__SeparateCompilerVisitor___direct_call(self, var43, var_args);
3505 }
3506 var = var44;
3507 goto RET_LABEL;
3508 } else {
3509 }
3510 } else {
3511 }
3512 {
3513 { /* Inline typing#CallSite#mpropdef (var_callsite) on <var_callsite:CallSite> */
3514 var48 = var_callsite->attrs[COLOR_nitc__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:CallSite> */
3515 if (unlikely(var48 == NULL)) {
3516 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3517 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 656);
3518 fatal_exit(1);
3519 }
3520 var46 = var48;
3521 RET_LABEL47:(void)0;
3522 }
3523 }
3524 {
3525 { /* Inline model#MMethodDef#is_intern (var46) on <var46:MMethodDef> */
3526 var51 = var46->attrs[COLOR_nitc__model__MMethodDef___is_intern].s; /* _is_intern on <var46:MMethodDef> */
3527 var49 = var51;
3528 RET_LABEL50:(void)0;
3529 }
3530 }
3531 var_52 = var49;
3532 if (var49){
3533 {
3534 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
3535 var55 = var_callsite->attrs[COLOR_nitc__typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
3536 if (unlikely(var55 == NULL)) {
3537 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3538 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 653);
3539 fatal_exit(1);
3540 }
3541 var53 = var55;
3542 RET_LABEL54:(void)0;
3543 }
3544 }
3545 {
3546 { /* Inline model#MProperty#name (var53) on <var53:MMethod> */
3547 var58 = var53->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var53:MMethod> */
3548 if (unlikely(var58 == NULL)) {
3549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3550 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
3551 fatal_exit(1);
3552 }
3553 var56 = var58;
3554 RET_LABEL57:(void)0;
3555 }
3556 }
3557 if (likely(varonce!=NULL)) {
3558 var59 = varonce;
3559 } else {
3560 var60 = "object_id";
3561 var61 = core__flat___NativeString___to_s_full(var60, 9l, 9l);
3562 var59 = var61;
3563 varonce = var59;
3564 }
3565 {
3566 { /* Inline kernel#Object#!= (var56,var59) on <var56:String> */
3567 var_other = var59;
3568 {
3569 var64 = ((short int(*)(val* self, val* p0))(var56->class->vft[COLOR_core__kernel__Object___61d_61d]))(var56, var_other); /* == on <var56:String>*/
3570 }
3571 var65 = !var64;
3572 var62 = var65;
3573 goto RET_LABEL63;
3574 RET_LABEL63:(void)0;
3575 }
3576 }
3577 var45 = var62;
3578 } else {
3579 var45 = var_52;
3580 }
3581 if (var45){
3582 {
3583 { /* Inline typing#CallSite#mpropdef (var_callsite) on <var_callsite:CallSite> */
3584 var68 = var_callsite->attrs[COLOR_nitc__typing__CallSite___mpropdef].val; /* _mpropdef on <var_callsite:CallSite> */
3585 if (unlikely(var68 == NULL)) {
3586 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3587 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 656);
3588 fatal_exit(1);
3589 }
3590 var66 = var68;
3591 RET_LABEL67:(void)0;
3592 }
3593 }
3594 {
3595 var69 = nitc___nitc__SeparateCompilerVisitor___direct_call(self, var66, var_args);
3596 }
3597 var = var69;
3598 goto RET_LABEL;
3599 } else {
3600 }
3601 {
3602 var70 = ((val*(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(self, p0, p1); /* compile_callsite on <self:SeparateCompilerVisitor>*/
3603 }
3604 var = var70;
3605 goto RET_LABEL;
3606 RET_LABEL:;
3607 return var;
3608 }
3609 /* method separate_compiler#SeparateCompilerVisitor#direct_call for (self: SeparateCompilerVisitor, MMethodDef, Array[RuntimeVariable]): nullable RuntimeVariable */
3610 val* nitc___nitc__SeparateCompilerVisitor___direct_call(val* self, val* p0, val* p1) {
3611 val* var /* : nullable RuntimeVariable */;
3612 val* var_mpropdef /* var mpropdef: MMethodDef */;
3613 val* var_args /* var args: Array[RuntimeVariable] */;
3614 val* var1 /* : MProperty */;
3615 val* var3 /* : MProperty */;
3616 val* var4 /* : nullable RuntimeVariable */;
3617 val* var_res0 /* var res0: nullable RuntimeVariable */;
3618 val* var5 /* : MClassDef */;
3619 val* var7 /* : MClassDef */;
3620 val* var8 /* : MClassType */;
3621 val* var10 /* : MClassType */;
3622 val* var11 /* : nullable RuntimeVariable */;
3623 val* var_res /* var res: nullable RuntimeVariable */;
3624 short int var12 /* : Bool */;
3625 short int var13 /* : Bool */;
3626 val* var_other /* var other: nullable Object */;
3627 short int var15 /* : Bool */;
3628 short int var16 /* : Bool */;
3629 short int var17 /* : Bool */;
3630 short int var18 /* : Bool */;
3631 short int var20 /* : Bool */;
3632 short int var21 /* : Bool */;
3633 static val* varonce;
3634 val* var22 /* : String */;
3635 char* var23 /* : NativeString */;
3636 val* var24 /* : String */;
3637 var_mpropdef = p0;
3638 var_args = p1;
3639 {
3640 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MMethodDef> */
3641 var3 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MMethodDef> */
3642 if (unlikely(var3 == NULL)) {
3643 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
3644 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
3645 fatal_exit(1);
3646 }
3647 var1 = var3;
3648 RET_LABEL2:(void)0;
3649 }
3650 }
3651 {
3652 var4 = nitc___nitc__SeparateCompilerVisitor___before_send(self, var1, var_args);
3653 }
3654 var_res0 = var4;
3655 {
3656 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MMethodDef> */
3657 var7 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MMethodDef> */
3658 if (unlikely(var7 == NULL)) {
3659 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3660 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
3661 fatal_exit(1);
3662 }
3663 var5 = var7;
3664 RET_LABEL6:(void)0;
3665 }
3666 }
3667 {
3668 { /* Inline model#MClassDef#bound_mtype (var5) on <var5:MClassDef> */
3669 var10 = var5->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var5:MClassDef> */
3670 if (unlikely(var10 == NULL)) {
3671 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3672 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
3673 fatal_exit(1);
3674 }
3675 var8 = var10;
3676 RET_LABEL9:(void)0;
3677 }
3678 }
3679 {
3680 var11 = nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__call(self, var_mpropdef, var8, var_args);
3681 }
3682 var_res = var11;
3683 if (var_res0 == NULL) {
3684 var12 = 0; /* is null */
3685 } else {
3686 var12 = 1; /* arg is null and recv is not */
3687 }
3688 if (0) {
3689 { /* Inline kernel#Object#!= (var_res0,((val*)NULL)) on <var_res0:nullable RuntimeVariable> */
3690 var_other = ((val*)NULL);
3691 {
3692 var15 = ((short int(*)(val* self, val* p0))(var_res0->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res0, var_other); /* == on <var_res0:nullable RuntimeVariable(RuntimeVariable)>*/
3693 }
3694 var16 = !var15;
3695 var13 = var16;
3696 goto RET_LABEL14;
3697 RET_LABEL14:(void)0;
3698 }
3699 var12 = var13;
3700 }
3701 if (var12){
3702 if (var_res == NULL) {
3703 var17 = 0; /* is null */
3704 } else {
3705 var17 = 1; /* arg is null and recv is not */
3706 }
3707 if (0) {
3708 { /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable RuntimeVariable> */
3709 var_other = ((val*)NULL);
3710 {
3711 var20 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res, var_other); /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
3712 }
3713 var21 = !var20;
3714 var18 = var21;
3715 goto RET_LABEL19;
3716 RET_LABEL19:(void)0;
3717 }
3718 var17 = var18;
3719 }
3720 if (unlikely(!var17)) {
3721 PRINT_ERROR("Runtime error: %s", "Assert failed");
3722 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1364);
3723 fatal_exit(1);
3724 }
3725 {
3726 nitc___nitc__AbstractCompilerVisitor___assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <self:SeparateCompilerVisitor>*/
3727 }
3728 var_res = var_res0;
3729 } else {
3730 }
3731 if (likely(varonce!=NULL)) {
3732 var22 = varonce;
3733 } else {
3734 var23 = "}";
3735 var24 = core__flat___NativeString___to_s_full(var23, 1l, 1l);
3736 var22 = var24;
3737 varonce = var22;
3738 }
3739 {
3740 nitc___nitc__AbstractCompilerVisitor___add(self, var22); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3741 }
3742 var = var_res;
3743 goto RET_LABEL;
3744 RET_LABEL:;
3745 return var;
3746 }
3747 /* method separate_compiler#SeparateCompilerVisitor#send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
3748 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__send(val* self, val* p0, val* p1) {
3749 val* var /* : nullable RuntimeVariable */;
3750 val* var_mmethod /* var mmethod: MMethod */;
3751 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
3752 val* var1 /* : nullable Object */;
3753 val* var2 /* : MType */;
3754 val* var4 /* : MType */;
3755 short int var5 /* : Bool */;
3756 val* var6 /* : AbstractCompiler */;
3757 val* var8 /* : AbstractCompiler */;
3758 val* var9 /* : MModule */;
3759 val* var11 /* : MModule */;
3760 val* var_m /* var m: MModule */;
3761 val* var12 /* : AbstractCompiler */;
3762 val* var14 /* : AbstractCompiler */;
3763 val* var15 /* : AbstractCompiler */;
3764 val* var17 /* : AbstractCompiler */;
3765 val* var18 /* : MModule */;
3766 val* var20 /* : MModule */;
3767 val* var22 /* : nullable Object */;
3768 val* var23 /* : MType */;
3769 val* var25 /* : MType */;
3770 val* var26 /* : nullable RuntimeVariable */;
3771 val* var_res /* var res: nullable RuntimeVariable */;
3772 val* var27 /* : AbstractCompiler */;
3773 val* var29 /* : AbstractCompiler */;
3774 val* var31 /* : nullable RuntimeVariable */;
3775 var_mmethod = p0;
3776 var_arguments = p1;
3777 {
3778 var1 = core___core__SequenceRead___Collection__first(var_arguments);
3779 }
3780 {
3781 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on <var1:nullable Object(RuntimeVariable)> */
3782 var4 = var1->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var1:nullable Object(RuntimeVariable)> */
3783 if (unlikely(var4 == NULL)) {
3784 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
3785 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
3786 fatal_exit(1);
3787 }
3788 var2 = var4;
3789 RET_LABEL3:(void)0;
3790 }
3791 }
3792 {
3793 var5 = ((short int(*)(val* self))(var2->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var2); /* is_c_primitive on <var2:MType>*/
3794 }
3795 if (var5){
3796 {
3797 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3798 var8 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3799 if (unlikely(var8 == NULL)) {
3800 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3801 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3802 fatal_exit(1);
3803 }
3804 var6 = var8;
3805 RET_LABEL7:(void)0;
3806 }
3807 }
3808 {
3809 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var6) on <var6:AbstractCompiler(SeparateCompiler)> */
3810 var11 = var6->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var6:AbstractCompiler(SeparateCompiler)> */
3811 if (unlikely(var11 == NULL)) {
3812 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
3813 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
3814 fatal_exit(1);
3815 }
3816 var9 = var11;
3817 RET_LABEL10:(void)0;
3818 }
3819 }
3820 var_m = var9;
3821 {
3822 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3823 var14 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3824 if (unlikely(var14 == NULL)) {
3825 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3826 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3827 fatal_exit(1);
3828 }
3829 var12 = var14;
3830 RET_LABEL13:(void)0;
3831 }
3832 }
3833 {
3834 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3835 var17 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3836 if (unlikely(var17 == NULL)) {
3837 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3838 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3839 fatal_exit(1);
3840 }
3841 var15 = var17;
3842 RET_LABEL16:(void)0;
3843 }
3844 }
3845 {
3846 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var15) on <var15:AbstractCompiler(SeparateCompiler)> */
3847 var20 = var15->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <var15:AbstractCompiler(SeparateCompiler)> */
3848 if (unlikely(var20 == NULL)) {
3849 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
3850 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 535);
3851 fatal_exit(1);
3852 }
3853 var18 = var20;
3854 RET_LABEL19:(void)0;
3855 }
3856 }
3857 {
3858 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var12,var18) on <var12:AbstractCompiler(SeparateCompiler)> */
3859 var12->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val = var18; /* _mainmodule on <var12:AbstractCompiler(SeparateCompiler)> */
3860 RET_LABEL21:(void)0;
3861 }
3862 }
3863 {
3864 var22 = core___core__SequenceRead___Collection__first(var_arguments);
3865 }
3866 {
3867 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var22) on <var22:nullable Object(RuntimeVariable)> */
3868 var25 = var22->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var22:nullable Object(RuntimeVariable)> */
3869 if (unlikely(var25 == NULL)) {
3870 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
3871 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
3872 fatal_exit(1);
3873 }
3874 var23 = var25;
3875 RET_LABEL24:(void)0;
3876 }
3877 }
3878 {
3879 var26 = nitc___nitc__AbstractCompilerVisitor___monomorphic_send(self, var_mmethod, var23, var_arguments);
3880 }
3881 var_res = var26;
3882 {
3883 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3884 var29 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3885 if (unlikely(var29 == NULL)) {
3886 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3887 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
3888 fatal_exit(1);
3889 }
3890 var27 = var29;
3891 RET_LABEL28:(void)0;
3892 }
3893 }
3894 {
3895 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var27,var_m) on <var27:AbstractCompiler(SeparateCompiler)> */
3896 var27->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val = var_m; /* _mainmodule on <var27:AbstractCompiler(SeparateCompiler)> */
3897 RET_LABEL30:(void)0;
3898 }
3899 }
3900 var = var_res;
3901 goto RET_LABEL;
3902 } else {
3903 }
3904 {
3905 var31 = nitc___nitc__SeparateCompilerVisitor___table_send(self, var_mmethod, var_arguments, var_mmethod);
3906 }
3907 var = var31;
3908 goto RET_LABEL;
3909 RET_LABEL:;
3910 return var;
3911 }
3912 /* method separate_compiler#SeparateCompilerVisitor#before_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
3913 val* nitc___nitc__SeparateCompilerVisitor___before_send(val* self, val* p0, val* p1) {
3914 val* var /* : nullable RuntimeVariable */;
3915 val* var_mmethod /* var mmethod: MMethod */;
3916 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
3917 val* var_res /* var res: nullable RuntimeVariable */;
3918 val* var1 /* : nullable Object */;
3919 val* var_recv /* var recv: RuntimeVariable */;
3920 short int var2 /* : Bool */;
3921 short int var3 /* : Bool */;
3922 val* var4 /* : AbstractCompiler */;
3923 val* var6 /* : AbstractCompiler */;
3924 val* var7 /* : ModelBuilder */;
3925 val* var9 /* : ModelBuilder */;
3926 val* var10 /* : ToolContext */;
3927 val* var12 /* : ToolContext */;
3928 val* var13 /* : OptionBool */;
3929 val* var15 /* : OptionBool */;
3930 val* var16 /* : nullable Object */;
3931 val* var18 /* : nullable Object */;
3932 short int var19 /* : Bool */;
3933 short int var20 /* : Bool */;
3934 short int var_ /* var : Bool */;
3935 val* var21 /* : String */;
3936 val* var23 /* : String */;
3937 static val* varonce;
3938 val* var24 /* : String */;
3939 char* var25 /* : NativeString */;
3940 val* var26 /* : String */;
3941 short int var27 /* : Bool */;
3942 short int var_28 /* var : Bool */;
3943 val* var29 /* : String */;
3944 val* var31 /* : String */;
3945 static val* varonce32;
3946 val* var33 /* : String */;
3947 char* var34 /* : NativeString */;
3948 val* var35 /* : String */;
3949 short int var36 /* : Bool */;
3950 short int var_consider_null /* var consider_null: Bool */;
3951 short int var37 /* : Bool */;
3952 short int var38 /* : Bool */;
3953 val* var39 /* : MType */;
3954 val* var41 /* : MType */;
3955 short int var42 /* : Bool */;
3956 int cltype;
3957 int idtype;
3958 short int var_43 /* var : Bool */;
3959 val* var44 /* : MType */;
3960 val* var46 /* : MType */;
3961 short int var47 /* : Bool */;
3962 int cltype48;
3963 int idtype49;
3964 short int var_50 /* var : Bool */;
3965 short int var_maybenull /* var maybenull: Bool */;
3966 val* var52 /* : NativeArray[String] */;
3967 static val* varonce51;
3968 static val* varonce53;
3969 val* var54 /* : String */;
3970 char* var55 /* : NativeString */;
3971 val* var56 /* : String */;
3972 static val* varonce57;
3973 val* var58 /* : String */;
3974 char* var59 /* : NativeString */;
3975 val* var60 /* : String */;
3976 val* var61 /* : String */;
3977 val* var62 /* : String */;
3978 short int var63 /* : Bool */;
3979 val* var64 /* : String */;
3980 val* var66 /* : String */;
3981 static val* varonce67;
3982 val* var68 /* : String */;
3983 char* var69 /* : NativeString */;
3984 val* var70 /* : String */;
3985 short int var71 /* : Bool */;
3986 short int var_72 /* var : Bool */;
3987 val* var73 /* : String */;
3988 val* var75 /* : String */;
3989 static val* varonce76;
3990 val* var77 /* : String */;
3991 char* var78 /* : NativeString */;
3992 val* var79 /* : String */;
3993 short int var80 /* : Bool */;
3994 val* var81 /* : MClassType */;
3995 val* var82 /* : RuntimeVariable */;
3996 val* var83 /* : nullable Object */;
3997 val* var_arg /* var arg: RuntimeVariable */;
3998 val* var84 /* : MType */;
3999 val* var86 /* : MType */;
4000 short int var87 /* : Bool */;
4001 int cltype88;
4002 int idtype89;
4003 val* var91 /* : NativeArray[String] */;
4004 static val* varonce90;
4005 static val* varonce92;
4006 val* var93 /* : String */;
4007 char* var94 /* : NativeString */;
4008 val* var95 /* : String */;
4009 static val* varonce96;
4010 val* var97 /* : String */;
4011 char* var98 /* : NativeString */;
4012 val* var99 /* : String */;
4013 val* var100 /* : String */;
4014 val* var101 /* : String */;
4015 val* var102 /* : String */;
4016 val* var103 /* : MType */;
4017 val* var105 /* : MType */;
4018 short int var106 /* : Bool */;
4019 int cltype107;
4020 int idtype108;
4021 val* var110 /* : NativeArray[String] */;
4022 static val* varonce109;
4023 static val* varonce111;
4024 val* var112 /* : String */;
4025 char* var113 /* : NativeString */;
4026 val* var114 /* : String */;
4027 val* var115 /* : String */;
4028 val* var116 /* : String */;
4029 val* var118 /* : NativeArray[String] */;
4030 static val* varonce117;
4031 static val* varonce119;
4032 val* var120 /* : String */;
4033 char* var121 /* : NativeString */;
4034 val* var122 /* : String */;
4035 static val* varonce123;
4036 val* var124 /* : String */;
4037 char* var125 /* : NativeString */;
4038 val* var126 /* : String */;
4039 val* var127 /* : String */;
4040 val* var128 /* : String */;
4041 val* var129 /* : String */;
4042 val* var130 /* : String */;
4043 val* var132 /* : String */;
4044 static val* varonce133;
4045 val* var134 /* : String */;
4046 char* var135 /* : NativeString */;
4047 val* var136 /* : String */;
4048 short int var137 /* : Bool */;
4049 val* var138 /* : MClassType */;
4050 val* var139 /* : RuntimeVariable */;
4051 val* var140 /* : nullable Object */;
4052 val* var_arg141 /* var arg: RuntimeVariable */;
4053 val* var142 /* : MType */;
4054 val* var144 /* : MType */;
4055 short int var145 /* : Bool */;
4056 int cltype146;
4057 int idtype147;
4058 val* var149 /* : NativeArray[String] */;
4059 static val* varonce148;
4060 static val* varonce150;
4061 val* var151 /* : String */;
4062 char* var152 /* : NativeString */;
4063 val* var153 /* : String */;
4064 static val* varonce154;
4065 val* var155 /* : String */;
4066 char* var156 /* : NativeString */;
4067 val* var157 /* : String */;
4068 val* var158 /* : String */;
4069 val* var159 /* : String */;
4070 val* var160 /* : String */;
4071 val* var161 /* : MType */;
4072 val* var163 /* : MType */;
4073 short int var164 /* : Bool */;
4074 int cltype165;
4075 int idtype166;
4076 val* var168 /* : NativeArray[String] */;
4077 static val* varonce167;
4078 static val* varonce169;
4079 val* var170 /* : String */;
4080 char* var171 /* : NativeString */;
4081 val* var172 /* : String */;
4082 val* var173 /* : String */;
4083 val* var174 /* : String */;
4084 val* var176 /* : NativeArray[String] */;
4085 static val* varonce175;
4086 static val* varonce177;
4087 val* var178 /* : String */;
4088 char* var179 /* : NativeString */;
4089 val* var180 /* : String */;
4090 static val* varonce181;
4091 val* var182 /* : String */;
4092 char* var183 /* : NativeString */;
4093 val* var184 /* : String */;
4094 val* var185 /* : String */;
4095 val* var186 /* : String */;
4096 val* var187 /* : String */;
4097 static val* varonce188;
4098 val* var189 /* : String */;
4099 char* var190 /* : NativeString */;
4100 val* var191 /* : String */;
4101 static val* varonce192;
4102 val* var193 /* : String */;
4103 char* var194 /* : NativeString */;
4104 val* var195 /* : String */;
4105 static val* varonce196;
4106 val* var197 /* : String */;
4107 char* var198 /* : NativeString */;
4108 val* var199 /* : String */;
4109 short int var200 /* : Bool */;
4110 val* var201 /* : AbstractCompiler */;
4111 val* var203 /* : AbstractCompiler */;
4112 val* var204 /* : ModelBuilder */;
4113 val* var206 /* : ModelBuilder */;
4114 val* var207 /* : ToolContext */;
4115 val* var209 /* : ToolContext */;
4116 val* var210 /* : OptionBool */;
4117 val* var212 /* : OptionBool */;
4118 val* var213 /* : nullable Object */;
4119 val* var215 /* : nullable Object */;
4120 short int var216 /* : Bool */;
4121 short int var217 /* : Bool */;
4122 short int var_218 /* var : Bool */;
4123 short int var219 /* : Bool */;
4124 short int var220 /* : Bool */;
4125 val* var221 /* : String */;
4126 val* var223 /* : String */;
4127 static val* varonce224;
4128 val* var225 /* : String */;
4129 char* var226 /* : NativeString */;
4130 val* var227 /* : String */;
4131 short int var228 /* : Bool */;
4132 short int var_229 /* var : Bool */;
4133 val* var230 /* : String */;
4134 val* var232 /* : String */;
4135 static val* varonce233;
4136 val* var234 /* : String */;
4137 char* var235 /* : NativeString */;
4138 val* var236 /* : String */;
4139 short int var237 /* : Bool */;
4140 short int var_238 /* var : Bool */;
4141 val* var239 /* : String */;
4142 val* var241 /* : String */;
4143 static val* varonce242;
4144 val* var243 /* : String */;
4145 char* var244 /* : NativeString */;
4146 val* var245 /* : String */;
4147 short int var246 /* : Bool */;
4148 val* var247 /* : nullable Object */;
4149 val* var_arg248 /* var arg: RuntimeVariable */;
4150 val* var249 /* : MType */;
4151 val* var251 /* : MType */;
4152 short int var252 /* : Bool */;
4153 int cltype253;
4154 int idtype254;
4155 short int var255 /* : Bool */;
4156 short int var256 /* : Bool */;
4157 val* var_other /* var other: nullable Object */;
4158 short int var258 /* : Bool */;
4159 short int var260 /* : Bool */;
4160 val* var261 /* : MClassType */;
4161 val* var262 /* : RuntimeVariable */;
4162 val* var263 /* : String */;
4163 val* var265 /* : String */;
4164 static val* varonce266;
4165 val* var267 /* : String */;
4166 char* var268 /* : NativeString */;
4167 val* var269 /* : String */;
4168 short int var270 /* : Bool */;
4169 val* var272 /* : NativeArray[String] */;
4170 static val* varonce271;
4171 static val* varonce273;
4172 val* var274 /* : String */;
4173 char* var275 /* : NativeString */;
4174 val* var276 /* : String */;
4175 val* var277 /* : String */;
4176 val* var278 /* : String */;
4177 val* var280 /* : NativeArray[String] */;
4178 static val* varonce279;
4179 static val* varonce281;
4180 val* var282 /* : String */;
4181 char* var283 /* : NativeString */;
4182 val* var284 /* : String */;
4183 val* var285 /* : String */;
4184 val* var286 /* : String */;
4185 static val* varonce287;
4186 val* var288 /* : String */;
4187 char* var289 /* : NativeString */;
4188 val* var290 /* : String */;
4189 static val* varonce291;
4190 val* var292 /* : String */;
4191 char* var293 /* : NativeString */;
4192 val* var294 /* : String */;
4193 var_mmethod = p0;
4194 var_arguments = p1;
4195 var_res = ((val*)NULL);
4196 {
4197 var1 = core___core__SequenceRead___Collection__first(var_arguments);
4198 }
4199 var_recv = var1;
4200 {
4201 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4202 var6 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4203 if (unlikely(var6 == NULL)) {
4204 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4205 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
4206 fatal_exit(1);
4207 }
4208 var4 = var6;
4209 RET_LABEL5:(void)0;
4210 }
4211 }
4212 {
4213 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var4) on <var4:AbstractCompiler(SeparateCompiler)> */
4214 var9 = var4->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var4:AbstractCompiler(SeparateCompiler)> */
4215 if (unlikely(var9 == NULL)) {
4216 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4217 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
4218 fatal_exit(1);
4219 }
4220 var7 = var9;
4221 RET_LABEL8:(void)0;
4222 }
4223 }
4224 {
4225 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var7) on <var7:ModelBuilder> */
4226 var12 = var7->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var7:ModelBuilder> */
4227 if (unlikely(var12 == NULL)) {
4228 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4229 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
4230 fatal_exit(1);
4231 }
4232 var10 = var12;
4233 RET_LABEL11:(void)0;
4234 }
4235 }
4236 {
4237 { /* Inline abstract_compiler#ToolContext#opt_no_check_null (var10) on <var10:ToolContext> */
4238 var15 = var10->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on <var10:ToolContext> */
4239 if (unlikely(var15 == NULL)) {
4240 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null");
4241 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 56);
4242 fatal_exit(1);
4243 }
4244 var13 = var15;
4245 RET_LABEL14:(void)0;
4246 }
4247 }
4248 {
4249 { /* Inline opts#Option#value (var13) on <var13:OptionBool> */
4250 var18 = var13->attrs[COLOR_opts__Option___value].val; /* _value on <var13:OptionBool> */
4251 var16 = var18;
4252 RET_LABEL17:(void)0;
4253 }
4254 }
4255 var19 = (short int)((long)(var16)>>2);
4256 var20 = !var19;
4257 var_ = var20;
4258 if (var20){
4259 var3 = var_;
4260 } else {
4261 {
4262 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4263 var23 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4264 if (unlikely(var23 == NULL)) {
4265 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4266 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4267 fatal_exit(1);
4268 }
4269 var21 = var23;
4270 RET_LABEL22:(void)0;
4271 }
4272 }
4273 if (likely(varonce!=NULL)) {
4274 var24 = varonce;
4275 } else {
4276 var25 = "==";
4277 var26 = core__flat___NativeString___to_s_full(var25, 2l, 2l);
4278 var24 = var26;
4279 varonce = var24;
4280 }
4281 {
4282 var27 = ((short int(*)(val* self, val* p0))(var21->class->vft[COLOR_core__kernel__Object___61d_61d]))(var21, var24); /* == on <var21:String>*/
4283 }
4284 var3 = var27;
4285 }
4286 var_28 = var3;
4287 if (var3){
4288 var2 = var_28;
4289 } else {
4290 {
4291 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4292 var31 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4293 if (unlikely(var31 == NULL)) {
4294 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4295 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4296 fatal_exit(1);
4297 }
4298 var29 = var31;
4299 RET_LABEL30:(void)0;
4300 }
4301 }
4302 if (likely(varonce32!=NULL)) {
4303 var33 = varonce32;
4304 } else {
4305 var34 = "!=";
4306 var35 = core__flat___NativeString___to_s_full(var34, 2l, 2l);
4307 var33 = var35;
4308 varonce32 = var33;
4309 }
4310 {
4311 var36 = ((short int(*)(val* self, val* p0))(var29->class->vft[COLOR_core__kernel__Object___61d_61d]))(var29, var33); /* == on <var29:String>*/
4312 }
4313 var2 = var36;
4314 }
4315 var_consider_null = var2;
4316 {
4317 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_recv) on <var_recv:RuntimeVariable> */
4318 var41 = var_recv->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
4319 if (unlikely(var41 == NULL)) {
4320 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4321 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
4322 fatal_exit(1);
4323 }
4324 var39 = var41;
4325 RET_LABEL40:(void)0;
4326 }
4327 }
4328 /* <var39:MType> isa MNullableType */
4329 cltype = type_nitc__MNullableType.color;
4330 idtype = type_nitc__MNullableType.id;
4331 if(cltype >= var39->type->table_size) {
4332 var42 = 0;
4333 } else {
4334 var42 = var39->type->type_table[cltype] == idtype;
4335 }
4336 var_43 = var42;
4337 if (var42){
4338 var38 = var_43;
4339 } else {
4340 {
4341 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_recv) on <var_recv:RuntimeVariable> */
4342 var46 = var_recv->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
4343 if (unlikely(var46 == NULL)) {
4344 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4345 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
4346 fatal_exit(1);
4347 }
4348 var44 = var46;
4349 RET_LABEL45:(void)0;
4350 }
4351 }
4352 /* <var44:MType> isa MNullType */
4353 cltype48 = type_nitc__MNullType.color;
4354 idtype49 = type_nitc__MNullType.id;
4355 if(cltype48 >= var44->type->table_size) {
4356 var47 = 0;
4357 } else {
4358 var47 = var44->type->type_table[cltype48] == idtype49;
4359 }
4360 var38 = var47;
4361 }
4362 var_50 = var38;
4363 if (var38){
4364 var37 = var_consider_null;
4365 } else {
4366 var37 = var_50;
4367 }
4368 var_maybenull = var37;
4369 if (var_maybenull){
4370 if (unlikely(varonce51==NULL)) {
4371 var52 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
4372 if (likely(varonce53!=NULL)) {
4373 var54 = varonce53;
4374 } else {
4375 var55 = "if (";
4376 var56 = core__flat___NativeString___to_s_full(var55, 4l, 4l);
4377 var54 = var56;
4378 varonce53 = var54;
4379 }
4380 ((struct instance_core__NativeArray*)var52)->values[0]=var54;
4381 if (likely(varonce57!=NULL)) {
4382 var58 = varonce57;
4383 } else {
4384 var59 = " == NULL) {";
4385 var60 = core__flat___NativeString___to_s_full(var59, 11l, 11l);
4386 var58 = var60;
4387 varonce57 = var58;
4388 }
4389 ((struct instance_core__NativeArray*)var52)->values[2]=var58;
4390 } else {
4391 var52 = varonce51;
4392 varonce51 = NULL;
4393 }
4394 {
4395 var61 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv); /* to_s on <var_recv:RuntimeVariable>*/
4396 }
4397 ((struct instance_core__NativeArray*)var52)->values[1]=var61;
4398 {
4399 var62 = ((val*(*)(val* self))(var52->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var52); /* native_to_s on <var52:NativeArray[String]>*/
4400 }
4401 varonce51 = var52;
4402 {
4403 nitc___nitc__AbstractCompilerVisitor___add(self, var62); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4404 }
4405 {
4406 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4407 var66 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4408 if (unlikely(var66 == NULL)) {
4409 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4410 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4411 fatal_exit(1);
4412 }
4413 var64 = var66;
4414 RET_LABEL65:(void)0;
4415 }
4416 }
4417 if (likely(varonce67!=NULL)) {
4418 var68 = varonce67;
4419 } else {
4420 var69 = "==";
4421 var70 = core__flat___NativeString___to_s_full(var69, 2l, 2l);
4422 var68 = var70;
4423 varonce67 = var68;
4424 }
4425 {
4426 var71 = ((short int(*)(val* self, val* p0))(var64->class->vft[COLOR_core__kernel__Object___61d_61d]))(var64, var68); /* == on <var64:String>*/
4427 }
4428 var_72 = var71;
4429 if (var71){
4430 var63 = var_72;
4431 } else {
4432 {
4433 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4434 var75 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4435 if (unlikely(var75 == NULL)) {
4436 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4437 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4438 fatal_exit(1);
4439 }
4440 var73 = var75;
4441 RET_LABEL74:(void)0;
4442 }
4443 }
4444 if (likely(varonce76!=NULL)) {
4445 var77 = varonce76;
4446 } else {
4447 var78 = "is_same_instance";
4448 var79 = core__flat___NativeString___to_s_full(var78, 16l, 16l);
4449 var77 = var79;
4450 varonce76 = var77;
4451 }
4452 {
4453 var80 = ((short int(*)(val* self, val* p0))(var73->class->vft[COLOR_core__kernel__Object___61d_61d]))(var73, var77); /* == on <var73:String>*/
4454 }
4455 var63 = var80;
4456 }
4457 if (var63){
4458 {
4459 var81 = nitc___nitc__AbstractCompilerVisitor___bool_type(self);
4460 }
4461 {
4462 var82 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var81);
4463 }
4464 var_res = var82;
4465 {
4466 var83 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_arguments, 1l);
4467 }
4468 var_arg = var83;
4469 {
4470 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on <var_arg:RuntimeVariable> */
4471 var86 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg:RuntimeVariable> */
4472 if (unlikely(var86 == NULL)) {
4473 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4474 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
4475 fatal_exit(1);
4476 }
4477 var84 = var86;
4478 RET_LABEL85:(void)0;
4479 }
4480 }
4481 /* <var84:MType> isa MNullableType */
4482 cltype88 = type_nitc__MNullableType.color;
4483 idtype89 = type_nitc__MNullableType.id;
4484 if(cltype88 >= var84->type->table_size) {
4485 var87 = 0;
4486 } else {
4487 var87 = var84->type->type_table[cltype88] == idtype89;
4488 }
4489 if (var87){
4490 if (unlikely(varonce90==NULL)) {
4491 var91 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
4492 if (likely(varonce92!=NULL)) {
4493 var93 = varonce92;
4494 } else {
4495 var94 = " = (";
4496 var95 = core__flat___NativeString___to_s_full(var94, 4l, 4l);
4497 var93 = var95;
4498 varonce92 = var93;
4499 }
4500 ((struct instance_core__NativeArray*)var91)->values[1]=var93;
4501 if (likely(varonce96!=NULL)) {
4502 var97 = varonce96;
4503 } else {
4504 var98 = " == NULL);";
4505 var99 = core__flat___NativeString___to_s_full(var98, 10l, 10l);
4506 var97 = var99;
4507 varonce96 = var97;
4508 }
4509 ((struct instance_core__NativeArray*)var91)->values[3]=var97;
4510 } else {
4511 var91 = varonce90;
4512 varonce90 = NULL;
4513 }
4514 {
4515 var100 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
4516 }
4517 ((struct instance_core__NativeArray*)var91)->values[0]=var100;
4518 {
4519 var101 = ((val*(*)(val* self))(var_arg->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_arg); /* to_s on <var_arg:RuntimeVariable>*/
4520 }
4521 ((struct instance_core__NativeArray*)var91)->values[2]=var101;
4522 {
4523 var102 = ((val*(*)(val* self))(var91->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var91); /* native_to_s on <var91:NativeArray[String]>*/
4524 }
4525 varonce90 = var91;
4526 {
4527 nitc___nitc__AbstractCompilerVisitor___add(self, var102); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4528 }
4529 } else {
4530 {
4531 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on <var_arg:RuntimeVariable> */
4532 var105 = var_arg->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg:RuntimeVariable> */
4533 if (unlikely(var105 == NULL)) {
4534 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4535 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
4536 fatal_exit(1);
4537 }
4538 var103 = var105;
4539 RET_LABEL104:(void)0;
4540 }
4541 }
4542 /* <var103:MType> isa MNullType */
4543 cltype107 = type_nitc__MNullType.color;
4544 idtype108 = type_nitc__MNullType.id;
4545 if(cltype107 >= var103->type->table_size) {
4546 var106 = 0;
4547 } else {
4548 var106 = var103->type->type_table[cltype107] == idtype108;
4549 }
4550 if (var106){
4551 if (unlikely(varonce109==NULL)) {
4552 var110 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
4553 if (likely(varonce111!=NULL)) {
4554 var112 = varonce111;
4555 } else {
4556 var113 = " = 1; /* is null */";
4557 var114 = core__flat___NativeString___to_s_full(var113, 19l, 19l);
4558 var112 = var114;
4559 varonce111 = var112;
4560 }
4561 ((struct instance_core__NativeArray*)var110)->values[1]=var112;
4562 } else {
4563 var110 = varonce109;
4564 varonce109 = NULL;
4565 }
4566 {
4567 var115 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
4568 }
4569 ((struct instance_core__NativeArray*)var110)->values[0]=var115;
4570 {
4571 var116 = ((val*(*)(val* self))(var110->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var110); /* native_to_s on <var110:NativeArray[String]>*/
4572 }
4573 varonce109 = var110;
4574 {
4575 nitc___nitc__AbstractCompilerVisitor___add(self, var116); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4576 }
4577 } else {
4578 if (unlikely(varonce117==NULL)) {
4579 var118 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
4580 if (likely(varonce119!=NULL)) {
4581 var120 = varonce119;
4582 } else {
4583 var121 = " = 0; /* ";
4584 var122 = core__flat___NativeString___to_s_full(var121, 9l, 9l);
4585 var120 = var122;
4586 varonce119 = var120;
4587 }
4588 ((struct instance_core__NativeArray*)var118)->values[1]=var120;
4589 if (likely(varonce123!=NULL)) {
4590 var124 = varonce123;
4591 } else {
4592 var125 = " cannot be null */";
4593 var126 = core__flat___NativeString___to_s_full(var125, 18l, 18l);
4594 var124 = var126;
4595 varonce123 = var124;
4596 }
4597 ((struct instance_core__NativeArray*)var118)->values[3]=var124;
4598 } else {
4599 var118 = varonce117;
4600 varonce117 = NULL;
4601 }
4602 {
4603 var127 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
4604 }
4605 ((struct instance_core__NativeArray*)var118)->values[0]=var127;
4606 {
4607 var128 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_arg);
4608 }
4609 ((struct instance_core__NativeArray*)var118)->values[2]=var128;
4610 {
4611 var129 = ((val*(*)(val* self))(var118->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var118); /* native_to_s on <var118:NativeArray[String]>*/
4612 }
4613 varonce117 = var118;
4614 {
4615 nitc___nitc__AbstractCompilerVisitor___add(self, var129); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4616 }
4617 }
4618 }
4619 } else {
4620 {
4621 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4622 var132 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4623 if (unlikely(var132 == NULL)) {
4624 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4625 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4626 fatal_exit(1);
4627 }
4628 var130 = var132;
4629 RET_LABEL131:(void)0;
4630 }
4631 }
4632 if (likely(varonce133!=NULL)) {
4633 var134 = varonce133;
4634 } else {
4635 var135 = "!=";
4636 var136 = core__flat___NativeString___to_s_full(var135, 2l, 2l);
4637 var134 = var136;
4638 varonce133 = var134;
4639 }
4640 {
4641 var137 = ((short int(*)(val* self, val* p0))(var130->class->vft[COLOR_core__kernel__Object___61d_61d]))(var130, var134); /* == on <var130:String>*/
4642 }
4643 if (var137){
4644 {
4645 var138 = nitc___nitc__AbstractCompilerVisitor___bool_type(self);
4646 }
4647 {
4648 var139 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var138);
4649 }
4650 var_res = var139;
4651 {
4652 var140 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_arguments, 1l);
4653 }
4654 var_arg141 = var140;
4655 {
4656 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg141) on <var_arg141:RuntimeVariable> */
4657 var144 = var_arg141->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg141:RuntimeVariable> */
4658 if (unlikely(var144 == NULL)) {
4659 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4660 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
4661 fatal_exit(1);
4662 }
4663 var142 = var144;
4664 RET_LABEL143:(void)0;
4665 }
4666 }
4667 /* <var142:MType> isa MNullableType */
4668 cltype146 = type_nitc__MNullableType.color;
4669 idtype147 = type_nitc__MNullableType.id;
4670 if(cltype146 >= var142->type->table_size) {
4671 var145 = 0;
4672 } else {
4673 var145 = var142->type->type_table[cltype146] == idtype147;
4674 }
4675 if (var145){
4676 if (unlikely(varonce148==NULL)) {
4677 var149 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
4678 if (likely(varonce150!=NULL)) {
4679 var151 = varonce150;
4680 } else {
4681 var152 = " = (";
4682 var153 = core__flat___NativeString___to_s_full(var152, 4l, 4l);
4683 var151 = var153;
4684 varonce150 = var151;
4685 }
4686 ((struct instance_core__NativeArray*)var149)->values[1]=var151;
4687 if (likely(varonce154!=NULL)) {
4688 var155 = varonce154;
4689 } else {
4690 var156 = " != NULL);";
4691 var157 = core__flat___NativeString___to_s_full(var156, 10l, 10l);
4692 var155 = var157;
4693 varonce154 = var155;
4694 }
4695 ((struct instance_core__NativeArray*)var149)->values[3]=var155;
4696 } else {
4697 var149 = varonce148;
4698 varonce148 = NULL;
4699 }
4700 {
4701 var158 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
4702 }
4703 ((struct instance_core__NativeArray*)var149)->values[0]=var158;
4704 {
4705 var159 = ((val*(*)(val* self))(var_arg141->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_arg141); /* to_s on <var_arg141:RuntimeVariable>*/
4706 }
4707 ((struct instance_core__NativeArray*)var149)->values[2]=var159;
4708 {
4709 var160 = ((val*(*)(val* self))(var149->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var149); /* native_to_s on <var149:NativeArray[String]>*/
4710 }
4711 varonce148 = var149;
4712 {
4713 nitc___nitc__AbstractCompilerVisitor___add(self, var160); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4714 }
4715 } else {
4716 {
4717 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg141) on <var_arg141:RuntimeVariable> */
4718 var163 = var_arg141->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg141:RuntimeVariable> */
4719 if (unlikely(var163 == NULL)) {
4720 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4721 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
4722 fatal_exit(1);
4723 }
4724 var161 = var163;
4725 RET_LABEL162:(void)0;
4726 }
4727 }
4728 /* <var161:MType> isa MNullType */
4729 cltype165 = type_nitc__MNullType.color;
4730 idtype166 = type_nitc__MNullType.id;
4731 if(cltype165 >= var161->type->table_size) {
4732 var164 = 0;
4733 } else {
4734 var164 = var161->type->type_table[cltype165] == idtype166;
4735 }
4736 if (var164){
4737 if (unlikely(varonce167==NULL)) {
4738 var168 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
4739 if (likely(varonce169!=NULL)) {
4740 var170 = varonce169;
4741 } else {
4742 var171 = " = 0; /* is null */";
4743 var172 = core__flat___NativeString___to_s_full(var171, 19l, 19l);
4744 var170 = var172;
4745 varonce169 = var170;
4746 }
4747 ((struct instance_core__NativeArray*)var168)->values[1]=var170;
4748 } else {
4749 var168 = varonce167;
4750 varonce167 = NULL;
4751 }
4752 {
4753 var173 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
4754 }
4755 ((struct instance_core__NativeArray*)var168)->values[0]=var173;
4756 {
4757 var174 = ((val*(*)(val* self))(var168->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var168); /* native_to_s on <var168:NativeArray[String]>*/
4758 }
4759 varonce167 = var168;
4760 {
4761 nitc___nitc__AbstractCompilerVisitor___add(self, var174); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4762 }
4763 } else {
4764 if (unlikely(varonce175==NULL)) {
4765 var176 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
4766 if (likely(varonce177!=NULL)) {
4767 var178 = varonce177;
4768 } else {
4769 var179 = " = 1; /* ";
4770 var180 = core__flat___NativeString___to_s_full(var179, 9l, 9l);
4771 var178 = var180;
4772 varonce177 = var178;
4773 }
4774 ((struct instance_core__NativeArray*)var176)->values[1]=var178;
4775 if (likely(varonce181!=NULL)) {
4776 var182 = varonce181;
4777 } else {
4778 var183 = " cannot be null */";
4779 var184 = core__flat___NativeString___to_s_full(var183, 18l, 18l);
4780 var182 = var184;
4781 varonce181 = var182;
4782 }
4783 ((struct instance_core__NativeArray*)var176)->values[3]=var182;
4784 } else {
4785 var176 = varonce175;
4786 varonce175 = NULL;
4787 }
4788 {
4789 var185 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
4790 }
4791 ((struct instance_core__NativeArray*)var176)->values[0]=var185;
4792 {
4793 var186 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_arg141);
4794 }
4795 ((struct instance_core__NativeArray*)var176)->values[2]=var186;
4796 {
4797 var187 = ((val*(*)(val* self))(var176->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var176); /* native_to_s on <var176:NativeArray[String]>*/
4798 }
4799 varonce175 = var176;
4800 {
4801 nitc___nitc__AbstractCompilerVisitor___add(self, var187); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4802 }
4803 }
4804 }
4805 } else {
4806 if (likely(varonce188!=NULL)) {
4807 var189 = varonce188;
4808 } else {
4809 var190 = "Receiver is null";
4810 var191 = core__flat___NativeString___to_s_full(var190, 16l, 16l);
4811 var189 = var191;
4812 varonce188 = var189;
4813 }
4814 {
4815 nitc___nitc__AbstractCompilerVisitor___add_abort(self, var189); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
4816 }
4817 }
4818 }
4819 if (likely(varonce192!=NULL)) {
4820 var193 = varonce192;
4821 } else {
4822 var194 = "} else {";
4823 var195 = core__flat___NativeString___to_s_full(var194, 8l, 8l);
4824 var193 = var195;
4825 varonce192 = var193;
4826 }
4827 {
4828 nitc___nitc__AbstractCompilerVisitor___add(self, var193); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4829 }
4830 } else {
4831 if (likely(varonce196!=NULL)) {
4832 var197 = varonce196;
4833 } else {
4834 var198 = "{";
4835 var199 = core__flat___NativeString___to_s_full(var198, 1l, 1l);
4836 var197 = var199;
4837 varonce196 = var197;
4838 }
4839 {
4840 nitc___nitc__AbstractCompilerVisitor___add(self, var197); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4841 }
4842 }
4843 {
4844 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4845 var203 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4846 if (unlikely(var203 == NULL)) {
4847 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4848 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
4849 fatal_exit(1);
4850 }
4851 var201 = var203;
4852 RET_LABEL202:(void)0;
4853 }
4854 }
4855 {
4856 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var201) on <var201:AbstractCompiler(SeparateCompiler)> */
4857 var206 = var201->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var201:AbstractCompiler(SeparateCompiler)> */
4858 if (unlikely(var206 == NULL)) {
4859 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4860 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
4861 fatal_exit(1);
4862 }
4863 var204 = var206;
4864 RET_LABEL205:(void)0;
4865 }
4866 }
4867 {
4868 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var204) on <var204:ModelBuilder> */
4869 var209 = var204->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var204:ModelBuilder> */
4870 if (unlikely(var209 == NULL)) {
4871 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4872 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
4873 fatal_exit(1);
4874 }
4875 var207 = var209;
4876 RET_LABEL208:(void)0;
4877 }
4878 }
4879 {
4880 { /* Inline separate_compiler#ToolContext#opt_no_shortcut_equate (var207) on <var207:ToolContext> */
4881 var212 = var207->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_shortcut_equate].val; /* _opt_no_shortcut_equate on <var207:ToolContext> */
4882 if (unlikely(var212 == NULL)) {
4883 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_equate");
4884 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 30);
4885 fatal_exit(1);
4886 }
4887 var210 = var212;
4888 RET_LABEL211:(void)0;
4889 }
4890 }
4891 {
4892 { /* Inline opts#Option#value (var210) on <var210:OptionBool> */
4893 var215 = var210->attrs[COLOR_opts__Option___value].val; /* _value on <var210:OptionBool> */
4894 var213 = var215;
4895 RET_LABEL214:(void)0;
4896 }
4897 }
4898 var216 = (short int)((long)(var213)>>2);
4899 var217 = !var216;
4900 var_218 = var217;
4901 if (var217){
4902 {
4903 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4904 var223 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4905 if (unlikely(var223 == NULL)) {
4906 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4907 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4908 fatal_exit(1);
4909 }
4910 var221 = var223;
4911 RET_LABEL222:(void)0;
4912 }
4913 }
4914 if (likely(varonce224!=NULL)) {
4915 var225 = varonce224;
4916 } else {
4917 var226 = "==";
4918 var227 = core__flat___NativeString___to_s_full(var226, 2l, 2l);
4919 var225 = var227;
4920 varonce224 = var225;
4921 }
4922 {
4923 var228 = ((short int(*)(val* self, val* p0))(var221->class->vft[COLOR_core__kernel__Object___61d_61d]))(var221, var225); /* == on <var221:String>*/
4924 }
4925 var_229 = var228;
4926 if (var228){
4927 var220 = var_229;
4928 } else {
4929 {
4930 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4931 var232 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4932 if (unlikely(var232 == NULL)) {
4933 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4934 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4935 fatal_exit(1);
4936 }
4937 var230 = var232;
4938 RET_LABEL231:(void)0;
4939 }
4940 }
4941 if (likely(varonce233!=NULL)) {
4942 var234 = varonce233;
4943 } else {
4944 var235 = "!=";
4945 var236 = core__flat___NativeString___to_s_full(var235, 2l, 2l);
4946 var234 = var236;
4947 varonce233 = var234;
4948 }
4949 {
4950 var237 = ((short int(*)(val* self, val* p0))(var230->class->vft[COLOR_core__kernel__Object___61d_61d]))(var230, var234); /* == on <var230:String>*/
4951 }
4952 var220 = var237;
4953 }
4954 var_238 = var220;
4955 if (var220){
4956 var219 = var_238;
4957 } else {
4958 {
4959 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
4960 var241 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
4961 if (unlikely(var241 == NULL)) {
4962 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4963 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
4964 fatal_exit(1);
4965 }
4966 var239 = var241;
4967 RET_LABEL240:(void)0;
4968 }
4969 }
4970 if (likely(varonce242!=NULL)) {
4971 var243 = varonce242;
4972 } else {
4973 var244 = "is_same_instance";
4974 var245 = core__flat___NativeString___to_s_full(var244, 16l, 16l);
4975 var243 = var245;
4976 varonce242 = var243;
4977 }
4978 {
4979 var246 = ((short int(*)(val* self, val* p0))(var239->class->vft[COLOR_core__kernel__Object___61d_61d]))(var239, var243); /* == on <var239:String>*/
4980 }
4981 var219 = var246;
4982 }
4983 var200 = var219;
4984 } else {
4985 var200 = var_218;
4986 }
4987 if (var200){
4988 {
4989 var247 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_arguments, 1l);
4990 }
4991 var_arg248 = var247;
4992 {
4993 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg248) on <var_arg248:RuntimeVariable> */
4994 var251 = var_arg248->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg248:RuntimeVariable> */
4995 if (unlikely(var251 == NULL)) {
4996 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
4997 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
4998 fatal_exit(1);
4999 }
5000 var249 = var251;
5001 RET_LABEL250:(void)0;
5002 }
5003 }
5004 /* <var249:MType> isa MNullType */
5005 cltype253 = type_nitc__MNullType.color;
5006 idtype254 = type_nitc__MNullType.id;
5007 if(cltype253 >= var249->type->table_size) {
5008 var252 = 0;
5009 } else {
5010 var252 = var249->type->type_table[cltype253] == idtype254;
5011 }
5012 if (var252){
5013 if (var_res == NULL) {
5014 var255 = 1; /* is null */
5015 } else {
5016 var255 = 0; /* arg is null but recv is not */
5017 }
5018 if (0) {
5019 { /* Inline kernel#Object#== (var_res,((val*)NULL)) on <var_res:nullable RuntimeVariable> */
5020 var_other = ((val*)NULL);
5021 {
5022 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable RuntimeVariable(RuntimeVariable)> */
5023 var260 = var_res == var_other;
5024 var258 = var260;
5025 goto RET_LABEL259;
5026 RET_LABEL259:(void)0;
5027 }
5028 }
5029 var256 = var258;
5030 goto RET_LABEL257;
5031 RET_LABEL257:(void)0;
5032 }
5033 var255 = var256;
5034 }
5035 if (var255){
5036 {
5037 var261 = nitc___nitc__AbstractCompilerVisitor___bool_type(self);
5038 }
5039 {
5040 var262 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var261);
5041 }
5042 var_res = var262;
5043 } else {
5044 }
5045 {
5046 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
5047 var265 = var_mmethod->attrs[COLOR_nitc__model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
5048 if (unlikely(var265 == NULL)) {
5049 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5050 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1951);
5051 fatal_exit(1);
5052 }
5053 var263 = var265;
5054 RET_LABEL264:(void)0;
5055 }
5056 }
5057 if (likely(varonce266!=NULL)) {
5058 var267 = varonce266;
5059 } else {
5060 var268 = "!=";
5061 var269 = core__flat___NativeString___to_s_full(var268, 2l, 2l);
5062 var267 = var269;
5063 varonce266 = var267;
5064 }
5065 {
5066 var270 = ((short int(*)(val* self, val* p0))(var263->class->vft[COLOR_core__kernel__Object___61d_61d]))(var263, var267); /* == on <var263:String>*/
5067 }
5068 if (var270){
5069 if (unlikely(varonce271==NULL)) {
5070 var272 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
5071 if (likely(varonce273!=NULL)) {
5072 var274 = varonce273;
5073 } else {
5074 var275 = " = 1; /* arg is null and recv is not */";
5075 var276 = core__flat___NativeString___to_s_full(var275, 39l, 39l);
5076 var274 = var276;
5077 varonce273 = var274;
5078 }
5079 ((struct instance_core__NativeArray*)var272)->values[1]=var274;
5080 } else {
5081 var272 = varonce271;
5082 varonce271 = NULL;
5083 }
5084 {
5085 var277 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
5086 }
5087 ((struct instance_core__NativeArray*)var272)->values[0]=var277;
5088 {
5089 var278 = ((val*(*)(val* self))(var272->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var272); /* native_to_s on <var272:NativeArray[String]>*/
5090 }
5091 varonce271 = var272;
5092 {
5093 nitc___nitc__AbstractCompilerVisitor___add(self, var278); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5094 }
5095 } else {
5096 if (unlikely(varonce279==NULL)) {
5097 var280 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
5098 if (likely(varonce281!=NULL)) {
5099 var282 = varonce281;
5100 } else {
5101 var283 = " = 0; /* arg is null but recv is not */";
5102 var284 = core__flat___NativeString___to_s_full(var283, 39l, 39l);
5103 var282 = var284;
5104 varonce281 = var282;
5105 }
5106 ((struct instance_core__NativeArray*)var280)->values[1]=var282;
5107 } else {
5108 var280 = varonce279;
5109 varonce279 = NULL;
5110 }
5111 {
5112 var285 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
5113 }
5114 ((struct instance_core__NativeArray*)var280)->values[0]=var285;
5115 {
5116 var286 = ((val*(*)(val* self))(var280->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var280); /* native_to_s on <var280:NativeArray[String]>*/
5117 }
5118 varonce279 = var280;
5119 {
5120 nitc___nitc__AbstractCompilerVisitor___add(self, var286); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5121 }
5122 }
5123 if (likely(varonce287!=NULL)) {
5124 var288 = varonce287;
5125 } else {
5126 var289 = "}";
5127 var290 = core__flat___NativeString___to_s_full(var289, 1l, 1l);
5128 var288 = var290;
5129 varonce287 = var288;
5130 }
5131 {
5132 nitc___nitc__AbstractCompilerVisitor___add(self, var288); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5133 }
5134 if (likely(varonce291!=NULL)) {
5135 var292 = varonce291;
5136 } else {
5137 var293 = "if (0) {";
5138 var294 = core__flat___NativeString___to_s_full(var293, 8l, 8l);
5139 var292 = var294;
5140 varonce291 = var292;
5141 }
5142 {
5143 nitc___nitc__AbstractCompilerVisitor___add(self, var292); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5144 }
5145 } else {
5146 }
5147 } else {
5148 }
5149 var = var_res;
5150 goto RET_LABEL;
5151 RET_LABEL:;
5152 return var;
5153 }
5154 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable], MEntity): nullable RuntimeVariable */
5155 val* nitc___nitc__SeparateCompilerVisitor___table_send(val* self, val* p0, val* p1, val* p2) {
5156 val* var /* : nullable RuntimeVariable */;
5157 val* var_mmethod /* var mmethod: MMethod */;
5158 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
5159 val* var_mentity /* var mentity: MEntity */;
5160 val* var1 /* : AbstractCompiler */;
5161 val* var3 /* : AbstractCompiler */;
5162 val* var4 /* : ModelBuilder */;
5163 val* var6 /* : ModelBuilder */;
5164 val* var_ /* var : ModelBuilder */;
5165 long var7 /* : Int */;
5166 long var9 /* : Int */;
5167 long var10 /* : Int */;
5168 short int var12 /* : Bool */;
5169 int cltype;
5170 int idtype;
5171 const char* var_class_name;
5172 long var13 /* : Int */;
5173 val* var15 /* : AbstractCompiler */;
5174 val* var17 /* : AbstractCompiler */;
5175 val* var18 /* : ModelBuilder */;
5176 val* var20 /* : ModelBuilder */;
5177 val* var21 /* : ToolContext */;
5178 val* var23 /* : ToolContext */;
5179 val* var24 /* : OptionBool */;
5180 val* var26 /* : OptionBool */;
5181 val* var27 /* : nullable Object */;
5182 val* var29 /* : nullable Object */;
5183 short int var30 /* : Bool */;
5184 static val* varonce;
5185 val* var31 /* : String */;
5186 char* var32 /* : NativeString */;
5187 val* var33 /* : String */;
5188 long var34 /* : Int */;
5189 long var36 /* : Int */;
5190 val* var37 /* : MPropDef */;
5191 val* var39 /* : MPropDef */;
5192 val* var40 /* : nullable MSignature */;
5193 val* var42 /* : nullable MSignature */;
5194 long var43 /* : Int */;
5195 long var44 /* : Int */;
5196 short int var46 /* : Bool */;
5197 int cltype47;
5198 int idtype48;
5199 const char* var_class_name49;
5200 long var50 /* : Int */;
5201 short int var51 /* : Bool */;
5202 short int var53 /* : Bool */;
5203 val* var55 /* : NativeArray[String] */;
5204 static val* varonce54;
5205 static val* varonce56;
5206 val* var57 /* : String */;
5207 char* var58 /* : NativeString */;
5208 val* var59 /* : String */;
5209 static val* varonce60;
5210 val* var61 /* : String */;
5211 char* var62 /* : NativeString */;
5212 val* var63 /* : String */;
5213 static val* varonce64;
5214 val* var65 /* : String */;
5215 char* var66 /* : NativeString */;
5216 val* var67 /* : String */;
5217 val* var68 /* : String */;
5218 long var69 /* : Int */;
5219 long var71 /* : Int */;
5220 val* var72 /* : String */;
5221 val* var73 /* : String */;
5222 val* var74 /* : nullable RuntimeVariable */;
5223 val* var_res0 /* var res0: nullable RuntimeVariable */;
5224 val* var75 /* : MPropDef */;
5225 val* var77 /* : MPropDef */;
5226 val* var78 /* : SeparateRuntimeFunction */;
5227 val* var_runtime_function /* var runtime_function: SeparateRuntimeFunction */;
5228 val* var79 /* : MSignature */;
5229 val* var81 /* : MSignature */;
5230 val* var_msignature /* var msignature: MSignature */;
5231 val* var82 /* : MPropDef */;
5232 val* var84 /* : MPropDef */;
5233 val* var85 /* : nullable MType */;
5234 val* var87 /* : nullable MType */;
5235 val* var_ret /* var ret: nullable MType */;
5236 short int var88 /* : Bool */;
5237 short int var89 /* : Bool */;
5238 val* var_other /* var other: nullable Object */;
5239 short int var91 /* : Bool */;
5240 short int var93 /* : Bool */;
5241 val* var_res /* var res: nullable RuntimeVariable */;
5242 val* var94 /* : RuntimeVariable */;
5243 static val* varonce95;
5244 val* var96 /* : String */;
5245 char* var97 /* : NativeString */;
5246 val* var98 /* : String */;
5247 val* var99 /* : String */;
5248 val* var_ss /* var ss: String */;
5249 val* var100 /* : String */;
5250 val* var_const_color /* var const_color: String */;
5251 short int var101 /* : Bool */;
5252 short int var102 /* : Bool */;
5253 val* var_other104 /* var other: nullable Object */;
5254 short int var105 /* : Bool */;
5255 short int var106 /* : Bool */;
5256 val* var108 /* : NativeArray[String] */;
5257 static val* varonce107;
5258 static val* varonce109;
5259 val* var110 /* : String */;
5260 char* var111 /* : NativeString */;
5261 val* var112 /* : String */;
5262 val* var113 /* : String */;
5263 val* var114 /* : String */;
5264 val* var_ress /* var ress: nullable Object */;
5265 static val* varonce115;
5266 val* var116 /* : String */;
5267 char* var117 /* : NativeString */;
5268 val* var118 /* : String */;
5269 short int var119 /* : Bool */;
5270 short int var120 /* : Bool */;
5271 int cltype121;
5272 int idtype122;
5273 short int var_123 /* var : Bool */;
5274 val* var124 /* : AbstractCompiler */;
5275 val* var126 /* : AbstractCompiler */;
5276 val* var127 /* : ModelBuilder */;
5277 val* var129 /* : ModelBuilder */;
5278 val* var130 /* : ToolContext */;
5279 val* var132 /* : ToolContext */;
5280 val* var133 /* : OptionBool */;
5281 val* var135 /* : OptionBool */;
5282 val* var136 /* : nullable Object */;
5283 val* var138 /* : nullable Object */;
5284 short int var139 /* : Bool */;
5285 val* var140 /* : AbstractCompiler */;
5286 val* var142 /* : AbstractCompiler */;
5287 val* var143 /* : nullable MMethodDef */;
5288 val* var_md /* var md: nullable MMethodDef */;
5289 short int var144 /* : Bool */;
5290 short int var145 /* : Bool */;
5291 short int var147 /* : Bool */;
5292 short int var148 /* : Bool */;
5293 val* var149 /* : SeparateRuntimeFunction */;
5294 val* var150 /* : String */;
5295 val* var_callsym /* var callsym: String */;
5296 val* var152 /* : NativeArray[String] */;
5297 static val* varonce151;
5298 static val* varonce153;
5299 val* var154 /* : String */;
5300 char* var155 /* : NativeString */;
5301 val* var156 /* : String */;
5302 static val* varonce157;
5303 val* var158 /* : String */;
5304 char* var159 /* : NativeString */;
5305 val* var160 /* : String */;
5306 static val* varonce161;
5307 val* var162 /* : String */;
5308 char* var163 /* : NativeString */;
5309 val* var164 /* : String */;
5310 static val* varonce165;
5311 val* var166 /* : String */;
5312 char* var167 /* : NativeString */;
5313 val* var168 /* : String */;
5314 val* var169 /* : String */;
5315 val* var170 /* : nullable Object */;
5316 val* var171 /* : String */;
5317 val* var172 /* : String */;
5318 val* var174 /* : NativeArray[String] */;
5319 static val* varonce173;
5320 static val* varonce175;
5321 val* var176 /* : String */;
5322 char* var177 /* : NativeString */;
5323 val* var178 /* : String */;
5324 static val* varonce179;
5325 val* var180 /* : String */;
5326 char* var181 /* : NativeString */;
5327 val* var182 /* : String */;
5328 static val* varonce183;
5329 val* var184 /* : String */;
5330 char* var185 /* : NativeString */;
5331 val* var186 /* : String */;
5332 static val* varonce187;
5333 val* var188 /* : String */;
5334 char* var189 /* : NativeString */;
5335 val* var190 /* : String */;
5336 static val* varonce191;
5337 val* var192 /* : String */;
5338 char* var193 /* : NativeString */;
5339 val* var194 /* : String */;
5340 static val* varonce195;
5341 val* var196 /* : String */;
5342 char* var197 /* : NativeString */;
5343 val* var198 /* : String */;
5344 static val* varonce199;
5345 val* var200 /* : String */;
5346 char* var201 /* : NativeString */;
5347 val* var202 /* : String */;
5348 val* var203 /* : String */;
5349 val* var204 /* : nullable Object */;
5350 val* var205 /* : String */;
5351 val* var206 /* : String */;
5352 val* var207 /* : nullable Object */;
5353 val* var208 /* : String */;
5354 val* var209 /* : String */;
5355 short int var210 /* : Bool */;
5356 short int var211 /* : Bool */;
5357 int cltype212;
5358 int idtype213;
5359 short int var_214 /* var : Bool */;
5360 val* var215 /* : AbstractCompiler */;
5361 val* var217 /* : AbstractCompiler */;
5362 val* var218 /* : ModelBuilder */;
5363 val* var220 /* : ModelBuilder */;
5364 val* var221 /* : ToolContext */;
5365 val* var223 /* : ToolContext */;
5366 val* var224 /* : OptionBool */;
5367 val* var226 /* : OptionBool */;
5368 val* var227 /* : nullable Object */;
5369 val* var229 /* : nullable Object */;
5370 short int var230 /* : Bool */;
5371 static val* varonce231;
5372 val* var232 /* : String */;
5373 char* var233 /* : NativeString */;
5374 val* var234 /* : String */;
5375 val* var235 /* : String */;
5376 val* var_callsym236 /* var callsym: String */;
5377 val* var238 /* : NativeArray[String] */;
5378 static val* varonce237;
5379 static val* varonce239;
5380 val* var240 /* : String */;
5381 char* var241 /* : NativeString */;
5382 val* var242 /* : String */;
5383 static val* varonce243;
5384 val* var244 /* : String */;
5385 char* var245 /* : NativeString */;
5386 val* var246 /* : String */;
5387 val* var247 /* : String */;
5388 val* var249 /* : NativeArray[String] */;
5389 static val* varonce248;
5390 static val* varonce250;
5391 val* var251 /* : String */;
5392 char* var252 /* : NativeString */;
5393 val* var253 /* : String */;
5394 static val* varonce254;
5395 val* var255 /* : String */;
5396 char* var256 /* : NativeString */;
5397 val* var257 /* : String */;
5398 static val* varonce258;
5399 val* var259 /* : String */;
5400 char* var260 /* : NativeString */;
5401 val* var261 /* : String */;
5402 static val* varonce262;
5403 val* var263 /* : String */;
5404 char* var264 /* : NativeString */;
5405 val* var265 /* : String */;
5406 static val* varonce266;
5407 val* var267 /* : String */;
5408 char* var268 /* : NativeString */;
5409 val* var269 /* : String */;
5410 static val* varonce270;
5411 val* var271 /* : String */;
5412 char* var272 /* : NativeString */;
5413 val* var273 /* : String */;
5414 static val* varonce274;
5415 val* var275 /* : String */;
5416 char* var276 /* : NativeString */;
5417 val* var277 /* : String */;
5418 val* var278 /* : String */;
5419 val* var279 /* : nullable Object */;
5420 val* var280 /* : String */;
5421 val* var281 /* : String */;
5422 val* var282 /* : nullable Object */;
5423 val* var283 /* : String */;
5424 val* var284 /* : String */;
5425 static val* varonce285;
5426 val* var286 /* : String */;
5427 char* var287 /* : NativeString */;
5428 val* var288 /* : String */;
5429 val* var290 /* : NativeArray[String] */;
5430 static val* varonce289;
5431 static val* varonce291;
5432 val* var292 /* : String */;
5433 char* var293 /* : NativeString */;
5434 val* var294 /* : String */;
5435 static val* varonce295;
5436 val* var296 /* : String */;
5437 char* var297 /* : NativeString */;
5438 val* var298 /* : String */;
5439 static val* varonce299;
5440 val* var300 /* : String */;
5441 char* var301 /* : NativeString */;
5442 val* var302 /* : String */;
5443 static val* varonce303;
5444 val* var304 /* : String */;
5445 char* var305 /* : NativeString */;
5446 val* var306 /* : String */;
5447 val* var307 /* : String */;
5448 val* var308 /* : nullable Object */;
5449 val* var309 /* : String */;
5450 val* var310 /* : String */;
5451 static val* varonce311;
5452 val* var312 /* : String */;
5453 char* var313 /* : NativeString */;
5454 val* var314 /* : String */;
5455 short int var315 /* : Bool */;
5456 short int var316 /* : Bool */;
5457 int cltype317;
5458 int idtype318;
5459 short int var_319 /* var : Bool */;
5460 val* var320 /* : AbstractCompiler */;
5461 val* var322 /* : AbstractCompiler */;
5462 val* var323 /* : ModelBuilder */;
5463 val* var325 /* : ModelBuilder */;
5464 val* var326 /* : ToolContext */;
5465 val* var328 /* : ToolContext */;
5466 val* var329 /* : OptionBool */;
5467 val* var331 /* : OptionBool */;
5468 val* var332 /* : nullable Object */;
5469 val* var334 /* : nullable Object */;
5470 short int var335 /* : Bool */;
5471 static val* varonce336;
5472 val* var337 /* : String */;
5473 char* var338 /* : NativeString */;
5474 val* var339 /* : String */;
5475 val* var340 /* : String */;
5476 val* var_callsym341 /* var callsym: String */;
5477 val* var343 /* : NativeArray[String] */;
5478 static val* varonce342;
5479 static val* varonce344;
5480 val* var345 /* : String */;
5481 char* var346 /* : NativeString */;
5482 val* var347 /* : String */;
5483 static val* varonce348;
5484 val* var349 /* : String */;
5485 char* var350 /* : NativeString */;
5486 val* var351 /* : String */;
5487 static val* varonce352;
5488 val* var353 /* : String */;
5489 char* var354 /* : NativeString */;
5490 val* var355 /* : String */;
5491 static val* varonce356;
5492 val* var357 /* : String */;
5493 char* var358 /* : NativeString */;
5494 val* var359 /* : String */;
5495 val* var360 /* : String */;
5496 val* var361 /* : nullable Object */;
5497 val* var362 /* : String */;
5498 val* var363 /* : String */;
5499 val* var365 /* : NativeArray[String] */;
5500 static val* varonce364;
5501 static val* varonce366;
5502 val* var367 /* : String */;
5503 char* var368 /* : NativeString */;
5504 val* var369 /* : String */;
5505 static val* varonce370;
5506 val* var371 /* : String */;
5507 char* var372 /* : NativeString */;
5508 val* var373 /* : String */;
5509 static val* varonce374;
5510 val* var375 /* : String */;
5511 char* var376 /* : NativeString */;
5512 val* var377 /* : String */;
5513 static val* varonce378;
5514 val* var379 /* : String */;
5515 char* var380 /* : NativeString */;
5516 val* var381 /* : String */;
5517 static val* varonce382;
5518 val* var383 /* : String */;
5519 char* var384 /* : NativeString */;
5520 val* var385 /* : String */;
5521 static val* varonce386;
5522 val* var387 /* : String */;
5523 char* var388 /* : NativeString */;
5524 val* var389 /* : String */;
5525 static val* varonce390;
5526 val* var391 /* : String */;
5527 char* var392 /* : NativeString */;
5528 val* var393 /* : String */;
5529 val* var394 /* : String */;
5530 val* var395 /* : nullable Object */;
5531 val* var396 /* : String */;
5532 val* var397 /* : String */;
5533 val* var398 /* : nullable Object */;
5534 val* var399 /* : String */;
5535 val* var400 /* : String */;
5536 short int var401 /* : Bool */;
5537 short int var402 /* : Bool */;
5538 short int var404 /* : Bool */;
5539 short int var405 /* : Bool */;
5540 short int var406 /* : Bool */;
5541 short int var407 /* : Bool */;
5542 short int var409 /* : Bool */;
5543 short int var410 /* : Bool */;
5544 static val* varonce411;
5545 val* var412 /* : String */;
5546 char* var413 /* : NativeString */;
5547 val* var414 /* : String */;
5548 var_mmethod = p0;
5549 var_arguments = p1;
5550 var_mentity = p2;
5551 {
5552 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5553 var3 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5554 if (unlikely(var3 == NULL)) {
5555 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5556 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
5557 fatal_exit(1);
5558 }
5559 var1 = var3;
5560 RET_LABEL2:(void)0;
5561 }
5562 }
5563 {
5564 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
5565 var6 = var1->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler(SeparateCompiler)> */
5566 if (unlikely(var6 == NULL)) {
5567 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5568 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
5569 fatal_exit(1);
5570 }
5571 var4 = var6;
5572 RET_LABEL5:(void)0;
5573 }
5574 }
5575 var_ = var4;
5576 {
5577 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var_) on <var_:ModelBuilder> */
5578 var9 = var_->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var_:ModelBuilder> */
5579 var7 = var9;
5580 RET_LABEL8:(void)0;
5581 }
5582 }
5583 {
5584 { /* Inline kernel#Int#+ (var7,1l) on <var7:Int> */
5585 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5586 /* <1l:Int> isa OTHER */
5587 var12 = 1; /* easy <1l:Int> isa OTHER*/
5588 if (unlikely(!var12)) {
5589 var_class_name = type_core__Int.name;
5590 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
5591 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5592 fatal_exit(1);
5593 }
5594 var13 = var7 + 1l;
5595 var10 = var13;
5596 goto RET_LABEL11;
5597 RET_LABEL11:(void)0;
5598 }
5599 }
5600 {
5601 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables= (var_,var10) on <var_:ModelBuilder> */
5602 var_->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_tables].l = var10; /* _nb_invok_by_tables on <var_:ModelBuilder> */
5603 RET_LABEL14:(void)0;
5604 }
5605 }
5606 {
5607 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5608 var17 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5609 if (unlikely(var17 == NULL)) {
5610 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5611 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
5612 fatal_exit(1);
5613 }
5614 var15 = var17;
5615 RET_LABEL16:(void)0;
5616 }
5617 }
5618 {
5619 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var15) on <var15:AbstractCompiler(SeparateCompiler)> */
5620 var20 = var15->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var15:AbstractCompiler(SeparateCompiler)> */
5621 if (unlikely(var20 == NULL)) {
5622 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5623 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
5624 fatal_exit(1);
5625 }
5626 var18 = var20;
5627 RET_LABEL19:(void)0;
5628 }
5629 }
5630 {
5631 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var18) on <var18:ModelBuilder> */
5632 var23 = var18->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var18:ModelBuilder> */
5633 if (unlikely(var23 == NULL)) {
5634 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5635 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
5636 fatal_exit(1);
5637 }
5638 var21 = var23;
5639 RET_LABEL22:(void)0;
5640 }
5641 }
5642 {
5643 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var21) on <var21:ToolContext> */
5644 var26 = var21->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var21:ToolContext> */
5645 if (unlikely(var26 == NULL)) {
5646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
5647 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 62);
5648 fatal_exit(1);
5649 }
5650 var24 = var26;
5651 RET_LABEL25:(void)0;
5652 }
5653 }
5654 {
5655 { /* Inline opts#Option#value (var24) on <var24:OptionBool> */
5656 var29 = var24->attrs[COLOR_opts__Option___value].val; /* _value on <var24:OptionBool> */
5657 var27 = var29;
5658 RET_LABEL28:(void)0;
5659 }
5660 }
5661 var30 = (short int)((long)(var27)>>2);
5662 if (var30){
5663 if (likely(varonce!=NULL)) {
5664 var31 = varonce;
5665 } else {
5666 var32 = "count_invoke_by_tables++;";
5667 var33 = core__flat___NativeString___to_s_full(var32, 25l, 25l);
5668 var31 = var33;
5669 varonce = var31;
5670 }
5671 {
5672 nitc___nitc__AbstractCompilerVisitor___add(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5673 }
5674 } else {
5675 }
5676 {
5677 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
5678 var36 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
5679 var34 = var36;
5680 RET_LABEL35:(void)0;
5681 }
5682 }
5683 {
5684 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
5685 var39 = var_mmethod->attrs[COLOR_nitc__model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
5686 if (unlikely(var39 == NULL)) {
5687 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5688 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1986);
5689 fatal_exit(1);
5690 }
5691 var37 = var39;
5692 RET_LABEL38:(void)0;
5693 }
5694 }
5695 {
5696 { /* Inline model#MMethodDef#msignature (var37) on <var37:MPropDef(MMethodDef)> */
5697 var42 = var37->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var37:MPropDef(MMethodDef)> */
5698 var40 = var42;
5699 RET_LABEL41:(void)0;
5700 }
5701 }
5702 if (var40 == NULL) {
5703 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5704 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1454);
5705 fatal_exit(1);
5706 } else {
5707 var43 = nitc___nitc__MSignature___arity(var40);
5708 }
5709 {
5710 { /* Inline kernel#Int#+ (var43,1l) on <var43:Int> */
5711 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
5712 /* <1l:Int> isa OTHER */
5713 var46 = 1; /* easy <1l:Int> isa OTHER*/
5714 if (unlikely(!var46)) {
5715 var_class_name49 = type_core__Int.name;
5716 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
5717 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
5718 fatal_exit(1);
5719 }
5720 var50 = var43 + 1l;
5721 var44 = var50;
5722 goto RET_LABEL45;
5723 RET_LABEL45:(void)0;
5724 }
5725 }
5726 {
5727 { /* Inline kernel#Int#== (var34,var44) on <var34:Int> */
5728 var53 = var34 == var44;
5729 var51 = var53;
5730 goto RET_LABEL52;
5731 RET_LABEL52:(void)0;
5732 }
5733 }
5734 if (unlikely(!var51)) {
5735 if (unlikely(varonce54==NULL)) {
5736 var55 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
5737 if (likely(varonce56!=NULL)) {
5738 var57 = varonce56;
5739 } else {
5740 var58 = "Invalid arity for ";
5741 var59 = core__flat___NativeString___to_s_full(var58, 18l, 18l);
5742 var57 = var59;
5743 varonce56 = var57;
5744 }
5745 ((struct instance_core__NativeArray*)var55)->values[0]=var57;
5746 if (likely(varonce60!=NULL)) {
5747 var61 = varonce60;
5748 } else {
5749 var62 = ". ";
5750 var63 = core__flat___NativeString___to_s_full(var62, 2l, 2l);
5751 var61 = var63;
5752 varonce60 = var61;
5753 }
5754 ((struct instance_core__NativeArray*)var55)->values[2]=var61;
5755 if (likely(varonce64!=NULL)) {
5756 var65 = varonce64;
5757 } else {
5758 var66 = " arguments given.";
5759 var67 = core__flat___NativeString___to_s_full(var66, 17l, 17l);
5760 var65 = var67;
5761 varonce64 = var65;
5762 }
5763 ((struct instance_core__NativeArray*)var55)->values[4]=var65;
5764 } else {
5765 var55 = varonce54;
5766 varonce54 = NULL;
5767 }
5768 {
5769 var68 = ((val*(*)(val* self))(var_mmethod->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethod); /* to_s on <var_mmethod:MMethod>*/
5770 }
5771 ((struct instance_core__NativeArray*)var55)->values[1]=var68;
5772 {
5773 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
5774 var71 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
5775 var69 = var71;
5776 RET_LABEL70:(void)0;
5777 }
5778 }
5779 var72 = core__flat___Int___core__abstract_text__Object__to_s(var69);
5780 ((struct instance_core__NativeArray*)var55)->values[3]=var72;
5781 {
5782 var73 = ((val*(*)(val* self))(var55->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var55); /* native_to_s on <var55:NativeArray[String]>*/
5783 }
5784 varonce54 = var55;
5785 {
5786 nitc___nitc__AbstractCompilerVisitor___debug(self, var73); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:SeparateCompilerVisitor>*/
5787 }
5788 PRINT_ERROR("Runtime error: %s", "Assert failed");
5789 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1454);
5790 fatal_exit(1);
5791 }
5792 {
5793 var74 = nitc___nitc__SeparateCompilerVisitor___before_send(self, var_mmethod, var_arguments);
5794 }
5795 var_res0 = var74;
5796 {
5797 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
5798 var77 = var_mmethod->attrs[COLOR_nitc__model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
5799 if (unlikely(var77 == NULL)) {
5800 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5801 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1986);
5802 fatal_exit(1);
5803 }
5804 var75 = var77;
5805 RET_LABEL76:(void)0;
5806 }
5807 }
5808 {
5809 var78 = nitc__separate_compiler___MMethodDef___virtual_runtime_function(var75);
5810 }
5811 var_runtime_function = var78;
5812 {
5813 { /* Inline separate_compiler#SeparateRuntimeFunction#called_signature (var_runtime_function) on <var_runtime_function:SeparateRuntimeFunction> */
5814 var81 = var_runtime_function->attrs[COLOR_nitc__separate_compiler__SeparateRuntimeFunction___called_signature].val; /* _called_signature on <var_runtime_function:SeparateRuntimeFunction> */
5815 if (unlikely(var81 == NULL)) {
5816 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _called_signature");
5817 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 2226);
5818 fatal_exit(1);
5819 }
5820 var79 = var81;
5821 RET_LABEL80:(void)0;
5822 }
5823 }
5824 var_msignature = var79;
5825 {
5826 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
5827 var84 = var_mmethod->attrs[COLOR_nitc__model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
5828 if (unlikely(var84 == NULL)) {
5829 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5830 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1986);
5831 fatal_exit(1);
5832 }
5833 var82 = var84;
5834 RET_LABEL83:(void)0;
5835 }
5836 }
5837 {
5838 nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__adapt_signature(self, var82, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <self:SeparateCompilerVisitor>*/
5839 }
5840 {
5841 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
5842 var87 = var_msignature->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
5843 var85 = var87;
5844 RET_LABEL86:(void)0;
5845 }
5846 }
5847 var_ret = var85;
5848 if (var_ret == NULL) {
5849 var88 = 1; /* is null */
5850 } else {
5851 var88 = 0; /* arg is null but recv is not */
5852 }
5853 if (0) {
5854 { /* Inline kernel#Object#== (var_ret,((val*)NULL)) on <var_ret:nullable MType> */
5855 var_other = ((val*)NULL);
5856 {
5857 { /* Inline kernel#Object#is_same_instance (var_ret,var_other) on <var_ret:nullable MType(MType)> */
5858 var93 = var_ret == var_other;
5859 var91 = var93;
5860 goto RET_LABEL92;
5861 RET_LABEL92:(void)0;
5862 }
5863 }
5864 var89 = var91;
5865 goto RET_LABEL90;
5866 RET_LABEL90:(void)0;
5867 }
5868 var88 = var89;
5869 }
5870 if (var88){
5871 var_res = ((val*)NULL);
5872 } else {
5873 {
5874 var94 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var_ret);
5875 }
5876 var_res = var94;
5877 }
5878 if (likely(varonce95!=NULL)) {
5879 var96 = varonce95;
5880 } else {
5881 var97 = ", ";
5882 var98 = core__flat___NativeString___to_s_full(var97, 2l, 2l);
5883 var96 = var98;
5884 varonce95 = var96;
5885 }
5886 {
5887 var99 = core__abstract_text___Collection___join(var_arguments, var96);
5888 }
5889 var_ss = var99;
5890 {
5891 var100 = nitc__separate_compiler___MEntity___const_color(var_mentity);
5892 }
5893 var_const_color = var100;
5894 if (var_res == NULL) {
5895 var101 = 0; /* is null */
5896 } else {
5897 var101 = 1; /* arg is null and recv is not */
5898 }
5899 if (0) {
5900 { /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable RuntimeVariable> */
5901 var_other104 = ((val*)NULL);
5902 {
5903 var105 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res, var_other104); /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
5904 }
5905 var106 = !var105;
5906 var102 = var106;
5907 goto RET_LABEL103;
5908 RET_LABEL103:(void)0;
5909 }
5910 var101 = var102;
5911 }
5912 if (var101){
5913 if (unlikely(varonce107==NULL)) {
5914 var108 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
5915 if (likely(varonce109!=NULL)) {
5916 var110 = varonce109;
5917 } else {
5918 var111 = " = ";
5919 var112 = core__flat___NativeString___to_s_full(var111, 3l, 3l);
5920 var110 = var112;
5921 varonce109 = var110;
5922 }
5923 ((struct instance_core__NativeArray*)var108)->values[1]=var110;
5924 } else {
5925 var108 = varonce107;
5926 varonce107 = NULL;
5927 }
5928 {
5929 var113 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
5930 }
5931 ((struct instance_core__NativeArray*)var108)->values[0]=var113;
5932 {
5933 var114 = ((val*(*)(val* self))(var108->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var108); /* native_to_s on <var108:NativeArray[String]>*/
5934 }
5935 varonce107 = var108;
5936 var_ress = var114;
5937 } else {
5938 if (likely(varonce115!=NULL)) {
5939 var116 = varonce115;
5940 } else {
5941 var117 = "";
5942 var118 = core__flat___NativeString___to_s_full(var117, 0l, 0l);
5943 var116 = var118;
5944 varonce115 = var116;
5945 }
5946 var_ress = var116;
5947 }
5948 /* <var_mentity:MEntity> isa MMethod */
5949 cltype121 = type_nitc__MMethod.color;
5950 idtype122 = type_nitc__MMethod.id;
5951 if(cltype121 >= var_mentity->type->table_size) {
5952 var120 = 0;
5953 } else {
5954 var120 = var_mentity->type->type_table[cltype121] == idtype122;
5955 }
5956 var_123 = var120;
5957 if (var120){
5958 {
5959 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5960 var126 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5961 if (unlikely(var126 == NULL)) {
5962 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5963 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
5964 fatal_exit(1);
5965 }
5966 var124 = var126;
5967 RET_LABEL125:(void)0;
5968 }
5969 }
5970 {
5971 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var124) on <var124:AbstractCompiler(SeparateCompiler)> */
5972 var129 = var124->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var124:AbstractCompiler(SeparateCompiler)> */
5973 if (unlikely(var129 == NULL)) {
5974 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5975 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
5976 fatal_exit(1);
5977 }
5978 var127 = var129;
5979 RET_LABEL128:(void)0;
5980 }
5981 }
5982 {
5983 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var127) on <var127:ModelBuilder> */
5984 var132 = var127->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var127:ModelBuilder> */
5985 if (unlikely(var132 == NULL)) {
5986 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5987 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
5988 fatal_exit(1);
5989 }
5990 var130 = var132;
5991 RET_LABEL131:(void)0;
5992 }
5993 }
5994 {
5995 { /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph0 (var130) on <var130:ToolContext> */
5996 var135 = var130->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_direct_call_monomorph0].val; /* _opt_direct_call_monomorph0 on <var130:ToolContext> */
5997 if (unlikely(var135 == NULL)) {
5998 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph0");
5999 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 52);
6000 fatal_exit(1);
6001 }
6002 var133 = var135;
6003 RET_LABEL134:(void)0;
6004 }
6005 }
6006 {
6007 { /* Inline opts#Option#value (var133) on <var133:OptionBool> */
6008 var138 = var133->attrs[COLOR_opts__Option___value].val; /* _value on <var133:OptionBool> */
6009 var136 = var138;
6010 RET_LABEL137:(void)0;
6011 }
6012 }
6013 var139 = (short int)((long)(var136)>>2);
6014 var119 = var139;
6015 } else {
6016 var119 = var_123;
6017 }
6018 if (var119){
6019 {
6020 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6021 var142 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6022 if (unlikely(var142 == NULL)) {
6023 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6024 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
6025 fatal_exit(1);
6026 }
6027 var140 = var142;
6028 RET_LABEL141:(void)0;
6029 }
6030 }
6031 {
6032 var143 = nitc___nitc__SeparateCompiler___is_monomorphic(var140, var_mentity);
6033 }
6034 var_md = var143;
6035 if (var_md == NULL) {
6036 var144 = 0; /* is null */
6037 } else {
6038 var144 = 1; /* arg is null and recv is not */
6039 }
6040 if (0) {
6041 { /* Inline kernel#Object#!= (var_md,((val*)NULL)) on <var_md:nullable MMethodDef> */
6042 var_other104 = ((val*)NULL);
6043 {
6044 var147 = ((short int(*)(val* self, val* p0))(var_md->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_md, var_other104); /* == on <var_md:nullable MMethodDef(MMethodDef)>*/
6045 }
6046 var148 = !var147;
6047 var145 = var148;
6048 goto RET_LABEL146;
6049 RET_LABEL146:(void)0;
6050 }
6051 var144 = var145;
6052 }
6053 if (var144){
6054 {
6055 var149 = nitc__separate_compiler___MMethodDef___virtual_runtime_function(var_md);
6056 }
6057 {
6058 var150 = nitc___nitc__AbstractRuntimeFunction___c_name(var149);
6059 }
6060 var_callsym = var150;
6061 {
6062 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var_callsym); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6063 }
6064 if (unlikely(varonce151==NULL)) {
6065 var152 = NEW_core__NativeArray(9l, &type_core__NativeArray__core__String);
6066 if (likely(varonce153!=NULL)) {
6067 var154 = varonce153;
6068 } else {
6069 var155 = "(";
6070 var156 = core__flat___NativeString___to_s_full(var155, 1l, 1l);
6071 var154 = var156;
6072 varonce153 = var154;
6073 }
6074 ((struct instance_core__NativeArray*)var152)->values[2]=var154;
6075 if (likely(varonce157!=NULL)) {
6076 var158 = varonce157;
6077 } else {
6078 var159 = "); /* ";
6079 var160 = core__flat___NativeString___to_s_full(var159, 6l, 6l);
6080 var158 = var160;
6081 varonce157 = var158;
6082 }
6083 ((struct instance_core__NativeArray*)var152)->values[4]=var158;
6084 if (likely(varonce161!=NULL)) {
6085 var162 = varonce161;
6086 } else {
6087 var163 = " on ";
6088 var164 = core__flat___NativeString___to_s_full(var163, 4l, 4l);
6089 var162 = var164;
6090 varonce161 = var162;
6091 }
6092 ((struct instance_core__NativeArray*)var152)->values[6]=var162;
6093 if (likely(varonce165!=NULL)) {
6094 var166 = varonce165;
6095 } else {
6096 var167 = "*/";
6097 var168 = core__flat___NativeString___to_s_full(var167, 2l, 2l);
6098 var166 = var168;
6099 varonce165 = var166;
6100 }
6101 ((struct instance_core__NativeArray*)var152)->values[8]=var166;
6102 } else {
6103 var152 = varonce151;
6104 varonce151 = NULL;
6105 }
6106 ((struct instance_core__NativeArray*)var152)->values[0]=var_ress;
6107 ((struct instance_core__NativeArray*)var152)->values[1]=var_callsym;
6108 ((struct instance_core__NativeArray*)var152)->values[3]=var_ss;
6109 {
6110 var169 = ((val*(*)(val* self))(var_mmethod->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethod); /* to_s on <var_mmethod:MMethod>*/
6111 }
6112 ((struct instance_core__NativeArray*)var152)->values[5]=var169;
6113 {
6114 var170 = core___core__SequenceRead___Collection__first(var_arguments);
6115 }
6116 {
6117 var171 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var170);
6118 }
6119 ((struct instance_core__NativeArray*)var152)->values[7]=var171;
6120 {
6121 var172 = ((val*(*)(val* self))(var152->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var152); /* native_to_s on <var152:NativeArray[String]>*/
6122 }
6123 varonce151 = var152;
6124 {
6125 nitc___nitc__AbstractCompilerVisitor___add(self, var172); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6126 }
6127 } else {
6128 {
6129 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var_const_color); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6130 }
6131 if (unlikely(varonce173==NULL)) {
6132 var174 = NEW_core__NativeArray(14l, &type_core__NativeArray__core__String);
6133 if (likely(varonce175!=NULL)) {
6134 var176 = varonce175;
6135 } else {
6136 var177 = "((";
6137 var178 = core__flat___NativeString___to_s_full(var177, 2l, 2l);
6138 var176 = var178;
6139 varonce175 = var176;
6140 }
6141 ((struct instance_core__NativeArray*)var174)->values[1]=var176;
6142 if (likely(varonce179!=NULL)) {
6143 var180 = varonce179;
6144 } else {
6145 var181 = ")(";
6146 var182 = core__flat___NativeString___to_s_full(var181, 2l, 2l);
6147 var180 = var182;
6148 varonce179 = var180;
6149 }
6150 ((struct instance_core__NativeArray*)var174)->values[3]=var180;
6151 if (likely(varonce183!=NULL)) {
6152 var184 = varonce183;
6153 } else {
6154 var185 = "->vft[";
6155 var186 = core__flat___NativeString___to_s_full(var185, 6l, 6l);
6156 var184 = var186;
6157 varonce183 = var184;
6158 }
6159 ((struct instance_core__NativeArray*)var174)->values[5]=var184;
6160 if (likely(varonce187!=NULL)) {
6161 var188 = varonce187;
6162 } else {
6163 var189 = "]))(";
6164 var190 = core__flat___NativeString___to_s_full(var189, 4l, 4l);
6165 var188 = var190;
6166 varonce187 = var188;
6167 }
6168 ((struct instance_core__NativeArray*)var174)->values[7]=var188;
6169 if (likely(varonce191!=NULL)) {
6170 var192 = varonce191;
6171 } else {
6172 var193 = "); /* ";
6173 var194 = core__flat___NativeString___to_s_full(var193, 6l, 6l);
6174 var192 = var194;
6175 varonce191 = var192;
6176 }
6177 ((struct instance_core__NativeArray*)var174)->values[9]=var192;
6178 if (likely(varonce195!=NULL)) {
6179 var196 = varonce195;
6180 } else {
6181 var197 = " on ";
6182 var198 = core__flat___NativeString___to_s_full(var197, 4l, 4l);
6183 var196 = var198;
6184 varonce195 = var196;
6185 }
6186 ((struct instance_core__NativeArray*)var174)->values[11]=var196;
6187 if (likely(varonce199!=NULL)) {
6188 var200 = varonce199;
6189 } else {
6190 var201 = "*/";
6191 var202 = core__flat___NativeString___to_s_full(var201, 2l, 2l);
6192 var200 = var202;
6193 varonce199 = var200;
6194 }
6195 ((struct instance_core__NativeArray*)var174)->values[13]=var200;
6196 } else {
6197 var174 = varonce173;
6198 varonce173 = NULL;
6199 }
6200 ((struct instance_core__NativeArray*)var174)->values[0]=var_ress;
6201 {
6202 var203 = nitc___nitc__SeparateRuntimeFunction___c_funptrtype(var_runtime_function);
6203 }
6204 ((struct instance_core__NativeArray*)var174)->values[2]=var203;
6205 {
6206 var204 = core___core__SequenceRead___Collection__first(var_arguments);
6207 }
6208 {
6209 var205 = nitc___nitc__SeparateCompilerVisitor___class_info(self, var204);
6210 }
6211 ((struct instance_core__NativeArray*)var174)->values[4]=var205;
6212 ((struct instance_core__NativeArray*)var174)->values[6]=var_const_color;
6213 ((struct instance_core__NativeArray*)var174)->values[8]=var_ss;
6214 {
6215 var206 = ((val*(*)(val* self))(var_mmethod->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethod); /* to_s on <var_mmethod:MMethod>*/
6216 }
6217 ((struct instance_core__NativeArray*)var174)->values[10]=var206;
6218 {
6219 var207 = core___core__SequenceRead___Collection__first(var_arguments);
6220 }
6221 {
6222 var208 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var207);
6223 }
6224 ((struct instance_core__NativeArray*)var174)->values[12]=var208;
6225 {
6226 var209 = ((val*(*)(val* self))(var174->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var174); /* native_to_s on <var174:NativeArray[String]>*/
6227 }
6228 varonce173 = var174;
6229 {
6230 nitc___nitc__AbstractCompilerVisitor___add(self, var209); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6231 }
6232 }
6233 } else {
6234 /* <var_mentity:MEntity> isa MMethod */
6235 cltype212 = type_nitc__MMethod.color;
6236 idtype213 = type_nitc__MMethod.id;
6237 if(cltype212 >= var_mentity->type->table_size) {
6238 var211 = 0;
6239 } else {
6240 var211 = var_mentity->type->type_table[cltype212] == idtype213;
6241 }
6242 var_214 = var211;
6243 if (var211){
6244 {
6245 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6246 var217 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6247 if (unlikely(var217 == NULL)) {
6248 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6249 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
6250 fatal_exit(1);
6251 }
6252 var215 = var217;
6253 RET_LABEL216:(void)0;
6254 }
6255 }
6256 {
6257 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var215) on <var215:AbstractCompiler(SeparateCompiler)> */
6258 var220 = var215->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var215:AbstractCompiler(SeparateCompiler)> */
6259 if (unlikely(var220 == NULL)) {
6260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6261 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
6262 fatal_exit(1);
6263 }
6264 var218 = var220;
6265 RET_LABEL219:(void)0;
6266 }
6267 }
6268 {
6269 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var218) on <var218:ModelBuilder> */
6270 var223 = var218->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var218:ModelBuilder> */
6271 if (unlikely(var223 == NULL)) {
6272 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6273 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
6274 fatal_exit(1);
6275 }
6276 var221 = var223;
6277 RET_LABEL222:(void)0;
6278 }
6279 }
6280 {
6281 { /* Inline separate_compiler#ToolContext#opt_guard_call (var221) on <var221:ToolContext> */
6282 var226 = var221->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_guard_call].val; /* _opt_guard_call on <var221:ToolContext> */
6283 if (unlikely(var226 == NULL)) {
6284 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_guard_call");
6285 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 39);
6286 fatal_exit(1);
6287 }
6288 var224 = var226;
6289 RET_LABEL225:(void)0;
6290 }
6291 }
6292 {
6293 { /* Inline opts#Option#value (var224) on <var224:OptionBool> */
6294 var229 = var224->attrs[COLOR_opts__Option___value].val; /* _value on <var224:OptionBool> */
6295 var227 = var229;
6296 RET_LABEL228:(void)0;
6297 }
6298 }
6299 var230 = (short int)((long)(var227)>>2);
6300 var210 = var230;
6301 } else {
6302 var210 = var_214;
6303 }
6304 if (var210){
6305 if (likely(varonce231!=NULL)) {
6306 var232 = varonce231;
6307 } else {
6308 var233 = "CALL_";
6309 var234 = core__flat___NativeString___to_s_full(var233, 5l, 5l);
6310 var232 = var234;
6311 varonce231 = var232;
6312 }
6313 {
6314 var235 = ((val*(*)(val* self, val* p0))(var232->class->vft[COLOR_core__abstract_text__String___43d]))(var232, var_const_color); /* + on <var232:String>*/
6315 }
6316 var_callsym236 = var235;
6317 {
6318 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var_callsym236); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6319 }
6320 if (unlikely(varonce237==NULL)) {
6321 var238 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
6322 if (likely(varonce239!=NULL)) {
6323 var240 = varonce239;
6324 } else {
6325 var241 = "if (!";
6326 var242 = core__flat___NativeString___to_s_full(var241, 5l, 5l);
6327 var240 = var242;
6328 varonce239 = var240;
6329 }
6330 ((struct instance_core__NativeArray*)var238)->values[0]=var240;
6331 if (likely(varonce243!=NULL)) {
6332 var244 = varonce243;
6333 } else {
6334 var245 = ") {";
6335 var246 = core__flat___NativeString___to_s_full(var245, 3l, 3l);
6336 var244 = var246;
6337 varonce243 = var244;
6338 }
6339 ((struct instance_core__NativeArray*)var238)->values[2]=var244;
6340 } else {
6341 var238 = varonce237;
6342 varonce237 = NULL;
6343 }
6344 ((struct instance_core__NativeArray*)var238)->values[1]=var_callsym236;
6345 {
6346 var247 = ((val*(*)(val* self))(var238->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var238); /* native_to_s on <var238:NativeArray[String]>*/
6347 }
6348 varonce237 = var238;
6349 {
6350 nitc___nitc__AbstractCompilerVisitor___add(self, var247); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6351 }
6352 {
6353 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var_const_color); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6354 }
6355 if (unlikely(varonce248==NULL)) {
6356 var249 = NEW_core__NativeArray(14l, &type_core__NativeArray__core__String);
6357 if (likely(varonce250!=NULL)) {
6358 var251 = varonce250;
6359 } else {
6360 var252 = "((";
6361 var253 = core__flat___NativeString___to_s_full(var252, 2l, 2l);
6362 var251 = var253;
6363 varonce250 = var251;
6364 }
6365 ((struct instance_core__NativeArray*)var249)->values[1]=var251;
6366 if (likely(varonce254!=NULL)) {
6367 var255 = varonce254;
6368 } else {
6369 var256 = ")(";
6370 var257 = core__flat___NativeString___to_s_full(var256, 2l, 2l);
6371 var255 = var257;
6372 varonce254 = var255;
6373 }
6374 ((struct instance_core__NativeArray*)var249)->values[3]=var255;
6375 if (likely(varonce258!=NULL)) {
6376 var259 = varonce258;
6377 } else {
6378 var260 = "->vft[";
6379 var261 = core__flat___NativeString___to_s_full(var260, 6l, 6l);
6380 var259 = var261;
6381 varonce258 = var259;
6382 }
6383 ((struct instance_core__NativeArray*)var249)->values[5]=var259;
6384 if (likely(varonce262!=NULL)) {
6385 var263 = varonce262;
6386 } else {
6387 var264 = "]))(";
6388 var265 = core__flat___NativeString___to_s_full(var264, 4l, 4l);
6389 var263 = var265;
6390 varonce262 = var263;
6391 }
6392 ((struct instance_core__NativeArray*)var249)->values[7]=var263;
6393 if (likely(varonce266!=NULL)) {
6394 var267 = varonce266;
6395 } else {
6396 var268 = "); /* ";
6397 var269 = core__flat___NativeString___to_s_full(var268, 6l, 6l);
6398 var267 = var269;
6399 varonce266 = var267;
6400 }
6401 ((struct instance_core__NativeArray*)var249)->values[9]=var267;
6402 if (likely(varonce270!=NULL)) {
6403 var271 = varonce270;
6404 } else {
6405 var272 = " on ";
6406 var273 = core__flat___NativeString___to_s_full(var272, 4l, 4l);
6407 var271 = var273;
6408 varonce270 = var271;
6409 }
6410 ((struct instance_core__NativeArray*)var249)->values[11]=var271;
6411 if (likely(varonce274!=NULL)) {
6412 var275 = varonce274;
6413 } else {
6414 var276 = "*/";
6415 var277 = core__flat___NativeString___to_s_full(var276, 2l, 2l);
6416 var275 = var277;
6417 varonce274 = var275;
6418 }
6419 ((struct instance_core__NativeArray*)var249)->values[13]=var275;
6420 } else {
6421 var249 = varonce248;
6422 varonce248 = NULL;
6423 }
6424 ((struct instance_core__NativeArray*)var249)->values[0]=var_ress;
6425 {
6426 var278 = nitc___nitc__SeparateRuntimeFunction___c_funptrtype(var_runtime_function);
6427 }
6428 ((struct instance_core__NativeArray*)var249)->values[2]=var278;
6429 {
6430 var279 = core___core__SequenceRead___Collection__first(var_arguments);
6431 }
6432 {
6433 var280 = nitc___nitc__SeparateCompilerVisitor___class_info(self, var279);
6434 }
6435 ((struct instance_core__NativeArray*)var249)->values[4]=var280;
6436 ((struct instance_core__NativeArray*)var249)->values[6]=var_const_color;
6437 ((struct instance_core__NativeArray*)var249)->values[8]=var_ss;
6438 {
6439 var281 = ((val*(*)(val* self))(var_mmethod->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethod); /* to_s on <var_mmethod:MMethod>*/
6440 }
6441 ((struct instance_core__NativeArray*)var249)->values[10]=var281;
6442 {
6443 var282 = core___core__SequenceRead___Collection__first(var_arguments);
6444 }
6445 {
6446 var283 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var282);
6447 }
6448 ((struct instance_core__NativeArray*)var249)->values[12]=var283;
6449 {
6450 var284 = ((val*(*)(val* self))(var249->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var249); /* native_to_s on <var249:NativeArray[String]>*/
6451 }
6452 varonce248 = var249;
6453 {
6454 nitc___nitc__AbstractCompilerVisitor___add(self, var284); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6455 }
6456 if (likely(varonce285!=NULL)) {
6457 var286 = varonce285;
6458 } else {
6459 var287 = "} else {";
6460 var288 = core__flat___NativeString___to_s_full(var287, 8l, 8l);
6461 var286 = var288;
6462 varonce285 = var286;
6463 }
6464 {
6465 nitc___nitc__AbstractCompilerVisitor___add(self, var286); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6466 }
6467 if (unlikely(varonce289==NULL)) {
6468 var290 = NEW_core__NativeArray(9l, &type_core__NativeArray__core__String);
6469 if (likely(varonce291!=NULL)) {
6470 var292 = varonce291;
6471 } else {
6472 var293 = "(";
6473 var294 = core__flat___NativeString___to_s_full(var293, 1l, 1l);
6474 var292 = var294;
6475 varonce291 = var292;
6476 }
6477 ((struct instance_core__NativeArray*)var290)->values[2]=var292;
6478 if (likely(varonce295!=NULL)) {
6479 var296 = varonce295;
6480 } else {
6481 var297 = "); /* ";
6482 var298 = core__flat___NativeString___to_s_full(var297, 6l, 6l);
6483 var296 = var298;
6484 varonce295 = var296;
6485 }
6486 ((struct instance_core__NativeArray*)var290)->values[4]=var296;
6487 if (likely(varonce299!=NULL)) {
6488 var300 = varonce299;
6489 } else {
6490 var301 = " on ";
6491 var302 = core__flat___NativeString___to_s_full(var301, 4l, 4l);
6492 var300 = var302;
6493 varonce299 = var300;
6494 }
6495 ((struct instance_core__NativeArray*)var290)->values[6]=var300;
6496 if (likely(varonce303!=NULL)) {
6497 var304 = varonce303;
6498 } else {
6499 var305 = "*/";
6500 var306 = core__flat___NativeString___to_s_full(var305, 2l, 2l);
6501 var304 = var306;
6502 varonce303 = var304;
6503 }
6504 ((struct instance_core__NativeArray*)var290)->values[8]=var304;
6505 } else {
6506 var290 = varonce289;
6507 varonce289 = NULL;
6508 }
6509 ((struct instance_core__NativeArray*)var290)->values[0]=var_ress;
6510 ((struct instance_core__NativeArray*)var290)->values[1]=var_callsym236;
6511 ((struct instance_core__NativeArray*)var290)->values[3]=var_ss;
6512 {
6513 var307 = ((val*(*)(val* self))(var_mmethod->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethod); /* to_s on <var_mmethod:MMethod>*/
6514 }
6515 ((struct instance_core__NativeArray*)var290)->values[5]=var307;
6516 {
6517 var308 = core___core__SequenceRead___Collection__first(var_arguments);
6518 }
6519 {
6520 var309 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var308);
6521 }
6522 ((struct instance_core__NativeArray*)var290)->values[7]=var309;
6523 {
6524 var310 = ((val*(*)(val* self))(var290->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var290); /* native_to_s on <var290:NativeArray[String]>*/
6525 }
6526 varonce289 = var290;
6527 {
6528 nitc___nitc__AbstractCompilerVisitor___add(self, var310); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6529 }
6530 if (likely(varonce311!=NULL)) {
6531 var312 = varonce311;
6532 } else {
6533 var313 = "}";
6534 var314 = core__flat___NativeString___to_s_full(var313, 1l, 1l);
6535 var312 = var314;
6536 varonce311 = var312;
6537 }
6538 {
6539 nitc___nitc__AbstractCompilerVisitor___add(self, var312); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6540 }
6541 } else {
6542 /* <var_mentity:MEntity> isa MMethod */
6543 cltype317 = type_nitc__MMethod.color;
6544 idtype318 = type_nitc__MMethod.id;
6545 if(cltype317 >= var_mentity->type->table_size) {
6546 var316 = 0;
6547 } else {
6548 var316 = var_mentity->type->type_table[cltype317] == idtype318;
6549 }
6550 var_319 = var316;
6551 if (var316){
6552 {
6553 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6554 var322 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6555 if (unlikely(var322 == NULL)) {
6556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6557 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
6558 fatal_exit(1);
6559 }
6560 var320 = var322;
6561 RET_LABEL321:(void)0;
6562 }
6563 }
6564 {
6565 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var320) on <var320:AbstractCompiler(SeparateCompiler)> */
6566 var325 = var320->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var320:AbstractCompiler(SeparateCompiler)> */
6567 if (unlikely(var325 == NULL)) {
6568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6569 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
6570 fatal_exit(1);
6571 }
6572 var323 = var325;
6573 RET_LABEL324:(void)0;
6574 }
6575 }
6576 {
6577 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var323) on <var323:ModelBuilder> */
6578 var328 = var323->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var323:ModelBuilder> */
6579 if (unlikely(var328 == NULL)) {
6580 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6581 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
6582 fatal_exit(1);
6583 }
6584 var326 = var328;
6585 RET_LABEL327:(void)0;
6586 }
6587 }
6588 {
6589 { /* Inline separate_compiler#ToolContext#opt_trampoline_call (var326) on <var326:ToolContext> */
6590 var331 = var326->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_trampoline_call].val; /* _opt_trampoline_call on <var326:ToolContext> */
6591 if (unlikely(var331 == NULL)) {
6592 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_trampoline_call");
6593 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 37);
6594 fatal_exit(1);
6595 }
6596 var329 = var331;
6597 RET_LABEL330:(void)0;
6598 }
6599 }
6600 {
6601 { /* Inline opts#Option#value (var329) on <var329:OptionBool> */
6602 var334 = var329->attrs[COLOR_opts__Option___value].val; /* _value on <var329:OptionBool> */
6603 var332 = var334;
6604 RET_LABEL333:(void)0;
6605 }
6606 }
6607 var335 = (short int)((long)(var332)>>2);
6608 var315 = var335;
6609 } else {
6610 var315 = var_319;
6611 }
6612 if (var315){
6613 if (likely(varonce336!=NULL)) {
6614 var337 = varonce336;
6615 } else {
6616 var338 = "CALL_";
6617 var339 = core__flat___NativeString___to_s_full(var338, 5l, 5l);
6618 var337 = var339;
6619 varonce336 = var337;
6620 }
6621 {
6622 var340 = ((val*(*)(val* self, val* p0))(var337->class->vft[COLOR_core__abstract_text__String___43d]))(var337, var_const_color); /* + on <var337:String>*/
6623 }
6624 var_callsym341 = var340;
6625 {
6626 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var_callsym341); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6627 }
6628 if (unlikely(varonce342==NULL)) {
6629 var343 = NEW_core__NativeArray(9l, &type_core__NativeArray__core__String);
6630 if (likely(varonce344!=NULL)) {
6631 var345 = varonce344;
6632 } else {
6633 var346 = "(";
6634 var347 = core__flat___NativeString___to_s_full(var346, 1l, 1l);
6635 var345 = var347;
6636 varonce344 = var345;
6637 }
6638 ((struct instance_core__NativeArray*)var343)->values[2]=var345;
6639 if (likely(varonce348!=NULL)) {
6640 var349 = varonce348;
6641 } else {
6642 var350 = "); /* ";
6643 var351 = core__flat___NativeString___to_s_full(var350, 6l, 6l);
6644 var349 = var351;
6645 varonce348 = var349;
6646 }
6647 ((struct instance_core__NativeArray*)var343)->values[4]=var349;
6648 if (likely(varonce352!=NULL)) {
6649 var353 = varonce352;
6650 } else {
6651 var354 = " on ";
6652 var355 = core__flat___NativeString___to_s_full(var354, 4l, 4l);
6653 var353 = var355;
6654 varonce352 = var353;
6655 }
6656 ((struct instance_core__NativeArray*)var343)->values[6]=var353;
6657 if (likely(varonce356!=NULL)) {
6658 var357 = varonce356;
6659 } else {
6660 var358 = "*/";
6661 var359 = core__flat___NativeString___to_s_full(var358, 2l, 2l);
6662 var357 = var359;
6663 varonce356 = var357;
6664 }
6665 ((struct instance_core__NativeArray*)var343)->values[8]=var357;
6666 } else {
6667 var343 = varonce342;
6668 varonce342 = NULL;
6669 }
6670 ((struct instance_core__NativeArray*)var343)->values[0]=var_ress;
6671 ((struct instance_core__NativeArray*)var343)->values[1]=var_callsym341;
6672 ((struct instance_core__NativeArray*)var343)->values[3]=var_ss;
6673 {
6674 var360 = ((val*(*)(val* self))(var_mmethod->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethod); /* to_s on <var_mmethod:MMethod>*/
6675 }
6676 ((struct instance_core__NativeArray*)var343)->values[5]=var360;
6677 {
6678 var361 = core___core__SequenceRead___Collection__first(var_arguments);
6679 }
6680 {
6681 var362 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var361);
6682 }
6683 ((struct instance_core__NativeArray*)var343)->values[7]=var362;
6684 {
6685 var363 = ((val*(*)(val* self))(var343->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var343); /* native_to_s on <var343:NativeArray[String]>*/
6686 }
6687 varonce342 = var343;
6688 {
6689 nitc___nitc__AbstractCompilerVisitor___add(self, var363); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6690 }
6691 } else {
6692 {
6693 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var_const_color); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6694 }
6695 if (unlikely(varonce364==NULL)) {
6696 var365 = NEW_core__NativeArray(14l, &type_core__NativeArray__core__String);
6697 if (likely(varonce366!=NULL)) {
6698 var367 = varonce366;
6699 } else {
6700 var368 = "((";
6701 var369 = core__flat___NativeString___to_s_full(var368, 2l, 2l);
6702 var367 = var369;
6703 varonce366 = var367;
6704 }
6705 ((struct instance_core__NativeArray*)var365)->values[1]=var367;
6706 if (likely(varonce370!=NULL)) {
6707 var371 = varonce370;
6708 } else {
6709 var372 = ")(";
6710 var373 = core__flat___NativeString___to_s_full(var372, 2l, 2l);
6711 var371 = var373;
6712 varonce370 = var371;
6713 }
6714 ((struct instance_core__NativeArray*)var365)->values[3]=var371;
6715 if (likely(varonce374!=NULL)) {
6716 var375 = varonce374;
6717 } else {
6718 var376 = "->vft[";
6719 var377 = core__flat___NativeString___to_s_full(var376, 6l, 6l);
6720 var375 = var377;
6721 varonce374 = var375;
6722 }
6723 ((struct instance_core__NativeArray*)var365)->values[5]=var375;
6724 if (likely(varonce378!=NULL)) {
6725 var379 = varonce378;
6726 } else {
6727 var380 = "]))(";
6728 var381 = core__flat___NativeString___to_s_full(var380, 4l, 4l);
6729 var379 = var381;
6730 varonce378 = var379;
6731 }
6732 ((struct instance_core__NativeArray*)var365)->values[7]=var379;
6733 if (likely(varonce382!=NULL)) {
6734 var383 = varonce382;
6735 } else {
6736 var384 = "); /* ";
6737 var385 = core__flat___NativeString___to_s_full(var384, 6l, 6l);
6738 var383 = var385;
6739 varonce382 = var383;
6740 }
6741 ((struct instance_core__NativeArray*)var365)->values[9]=var383;
6742 if (likely(varonce386!=NULL)) {
6743 var387 = varonce386;
6744 } else {
6745 var388 = " on ";
6746 var389 = core__flat___NativeString___to_s_full(var388, 4l, 4l);
6747 var387 = var389;
6748 varonce386 = var387;
6749 }
6750 ((struct instance_core__NativeArray*)var365)->values[11]=var387;
6751 if (likely(varonce390!=NULL)) {
6752 var391 = varonce390;
6753 } else {
6754 var392 = "*/";
6755 var393 = core__flat___NativeString___to_s_full(var392, 2l, 2l);
6756 var391 = var393;
6757 varonce390 = var391;
6758 }
6759 ((struct instance_core__NativeArray*)var365)->values[13]=var391;
6760 } else {
6761 var365 = varonce364;
6762 varonce364 = NULL;
6763 }
6764 ((struct instance_core__NativeArray*)var365)->values[0]=var_ress;
6765 {
6766 var394 = nitc___nitc__SeparateRuntimeFunction___c_funptrtype(var_runtime_function);
6767 }
6768 ((struct instance_core__NativeArray*)var365)->values[2]=var394;
6769 {
6770 var395 = core___core__SequenceRead___Collection__first(var_arguments);
6771 }
6772 {
6773 var396 = nitc___nitc__SeparateCompilerVisitor___class_info(self, var395);
6774 }
6775 ((struct instance_core__NativeArray*)var365)->values[4]=var396;
6776 ((struct instance_core__NativeArray*)var365)->values[6]=var_const_color;
6777 ((struct instance_core__NativeArray*)var365)->values[8]=var_ss;
6778 {
6779 var397 = ((val*(*)(val* self))(var_mmethod->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethod); /* to_s on <var_mmethod:MMethod>*/
6780 }
6781 ((struct instance_core__NativeArray*)var365)->values[10]=var397;
6782 {
6783 var398 = core___core__SequenceRead___Collection__first(var_arguments);
6784 }
6785 {
6786 var399 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var398);
6787 }
6788 ((struct instance_core__NativeArray*)var365)->values[12]=var399;
6789 {
6790 var400 = ((val*(*)(val* self))(var365->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var365); /* native_to_s on <var365:NativeArray[String]>*/
6791 }
6792 varonce364 = var365;
6793 {
6794 nitc___nitc__AbstractCompilerVisitor___add(self, var400); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6795 }
6796 }
6797 }
6798 }
6799 if (var_res0 == NULL) {
6800 var401 = 0; /* is null */
6801 } else {
6802 var401 = 1; /* arg is null and recv is not */
6803 }
6804 if (0) {
6805 { /* Inline kernel#Object#!= (var_res0,((val*)NULL)) on <var_res0:nullable RuntimeVariable> */
6806 var_other104 = ((val*)NULL);
6807 {
6808 var404 = ((short int(*)(val* self, val* p0))(var_res0->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res0, var_other104); /* == on <var_res0:nullable RuntimeVariable(RuntimeVariable)>*/
6809 }
6810 var405 = !var404;
6811 var402 = var405;
6812 goto RET_LABEL403;
6813 RET_LABEL403:(void)0;
6814 }
6815 var401 = var402;
6816 }
6817 if (var401){
6818 if (var_res == NULL) {
6819 var406 = 0; /* is null */
6820 } else {
6821 var406 = 1; /* arg is null and recv is not */
6822 }
6823 if (0) {
6824 { /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable RuntimeVariable> */
6825 var_other104 = ((val*)NULL);
6826 {
6827 var409 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_res, var_other104); /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
6828 }
6829 var410 = !var409;
6830 var407 = var410;
6831 goto RET_LABEL408;
6832 RET_LABEL408:(void)0;
6833 }
6834 var406 = var407;
6835 }
6836 if (unlikely(!var406)) {
6837 PRINT_ERROR("Runtime error: %s", "Assert failed");
6838 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1512);
6839 fatal_exit(1);
6840 }
6841 {
6842 nitc___nitc__AbstractCompilerVisitor___assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <self:SeparateCompilerVisitor>*/
6843 }
6844 var_res = var_res0;
6845 } else {
6846 }
6847 if (likely(varonce411!=NULL)) {
6848 var412 = varonce411;
6849 } else {
6850 var413 = "}";
6851 var414 = core__flat___NativeString___to_s_full(var413, 1l, 1l);
6852 var412 = var414;
6853 varonce411 = var412;
6854 }
6855 {
6856 nitc___nitc__AbstractCompilerVisitor___add(self, var412); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6857 }
6858 var = var_res;
6859 goto RET_LABEL;
6860 RET_LABEL:;
6861 return var;
6862 }
6863 /* method separate_compiler#SeparateCompilerVisitor#call for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
6864 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
6865 val* var /* : nullable RuntimeVariable */;
6866 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
6867 val* var_recvtype /* var recvtype: MClassType */;
6868 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
6869 long var1 /* : Int */;
6870 long var3 /* : Int */;
6871 val* var4 /* : nullable MSignature */;
6872 val* var6 /* : nullable MSignature */;
6873 long var7 /* : Int */;
6874 long var8 /* : Int */;
6875 short int var10 /* : Bool */;
6876 int cltype;
6877 int idtype;
6878 const char* var_class_name;
6879 long var11 /* : Int */;
6880 short int var12 /* : Bool */;
6881 short int var14 /* : Bool */;
6882 val* var15 /* : NativeArray[String] */;
6883 static val* varonce;
6884 static val* varonce16;
6885 val* var17 /* : String */;
6886 char* var18 /* : NativeString */;
6887 val* var19 /* : String */;
6888 static val* varonce20;
6889 val* var21 /* : String */;
6890 char* var22 /* : NativeString */;
6891 val* var23 /* : String */;
6892 static val* varonce24;
6893 val* var25 /* : String */;
6894 char* var26 /* : NativeString */;
6895 val* var27 /* : String */;
6896 val* var28 /* : String */;
6897 long var29 /* : Int */;
6898 long var31 /* : Int */;
6899 val* var32 /* : String */;
6900 val* var33 /* : String */;
6901 val* var34 /* : nullable MSignature */;
6902 val* var36 /* : nullable MSignature */;
6903 val* var37 /* : nullable MType */;
6904 val* var39 /* : nullable MType */;
6905 val* var_ret /* var ret: nullable MType */;
6906 short int var40 /* : Bool */;
6907 short int var41 /* : Bool */;
6908 val* var_other /* var other: nullable Object */;
6909 short int var43 /* : Bool */;
6910 short int var45 /* : Bool */;
6911 val* var_res /* var res: nullable RuntimeVariable */;
6912 val* var46 /* : MClassDef */;
6913 val* var48 /* : MClassDef */;
6914 val* var49 /* : MClassType */;
6915 val* var51 /* : MClassType */;
6916 val* var52 /* : MClassDef */;
6917 val* var54 /* : MClassDef */;
6918 val* var55 /* : MClassType */;
6919 val* var57 /* : MClassType */;
6920 val* var58 /* : MClassDef */;
6921 val* var60 /* : MClassDef */;
6922 val* var61 /* : MModule */;
6923 val* var63 /* : MModule */;
6924 val* var64 /* : MType */;
6925 val* var65 /* : RuntimeVariable */;
6926 short int var66 /* : Bool */;
6927 short int var67 /* : Bool */;
6928 short int var68 /* : Bool */;
6929 short int var70 /* : Bool */;
6930 short int var_ /* var : Bool */;
6931 val* var71 /* : AbstractCompiler */;
6932 val* var73 /* : AbstractCompiler */;
6933 val* var74 /* : ModelBuilder */;
6934 val* var76 /* : ModelBuilder */;
6935 val* var77 /* : ToolContext */;
6936 val* var79 /* : ToolContext */;
6937 val* var80 /* : OptionBool */;
6938 val* var82 /* : OptionBool */;
6939 val* var83 /* : nullable Object */;
6940 val* var85 /* : nullable Object */;
6941 short int var86 /* : Bool */;
6942 short int var87 /* : Bool */;
6943 short int var_88 /* var : Bool */;
6944 short int var89 /* : Bool */;
6945 val* var90 /* : AbstractCompiler */;
6946 val* var92 /* : AbstractCompiler */;
6947 val* var93 /* : ModelBuilder */;
6948 val* var95 /* : ModelBuilder */;
6949 val* var96 /* : ToolContext */;
6950 val* var98 /* : ToolContext */;
6951 val* var99 /* : OptionBool */;
6952 val* var101 /* : OptionBool */;
6953 val* var102 /* : nullable Object */;
6954 val* var104 /* : nullable Object */;
6955 short int var105 /* : Bool */;
6956 short int var_106 /* var : Bool */;
6957 short int var107 /* : Bool */;
6958 val* var108 /* : AbstractCompiler */;
6959 val* var110 /* : AbstractCompiler */;
6960 val* var111 /* : ModelBuilder */;
6961 val* var113 /* : ModelBuilder */;
6962 val* var_114 /* var : ModelBuilder */;
6963 long var115 /* : Int */;
6964 long var117 /* : Int */;
6965 long var118 /* : Int */;
6966 short int var120 /* : Bool */;
6967 int cltype121;
6968 int idtype122;
6969 const char* var_class_name123;
6970 long var124 /* : Int */;
6971 val* var126 /* : AbstractCompiler */;
6972 val* var128 /* : AbstractCompiler */;
6973 val* var129 /* : ModelBuilder */;
6974 val* var131 /* : ModelBuilder */;
6975 val* var132 /* : ToolContext */;
6976 val* var134 /* : ToolContext */;
6977 val* var135 /* : OptionBool */;
6978 val* var137 /* : OptionBool */;
6979 val* var138 /* : nullable Object */;
6980 val* var140 /* : nullable Object */;
6981 short int var141 /* : Bool */;
6982 static val* varonce142;
6983 val* var143 /* : String */;
6984 char* var144 /* : NativeString */;
6985 val* var145 /* : String */;
6986 val* var146 /* : StaticFrame */;
6987 val* var_frame /* var frame: StaticFrame */;
6988 static val* varonce147;
6989 val* var148 /* : String */;
6990 char* var149 /* : NativeString */;
6991 val* var150 /* : String */;
6992 val* var151 /* : String */;
6993 val* var154 /* : nullable StaticFrame */;
6994 val* var156 /* : nullable StaticFrame */;
6995 val* var_old_frame /* var old_frame: nullable StaticFrame */;
6996 val* var159 /* : NativeArray[String] */;
6997 static val* varonce158;
6998 static val* varonce160;
6999 val* var161 /* : String */;
7000 char* var162 /* : NativeString */;
7001 val* var163 /* : String */;
7002 static val* varonce164;
7003 val* var165 /* : String */;
7004 char* var166 /* : NativeString */;
7005 val* var167 /* : String */;
7006 static val* varonce168;
7007 val* var169 /* : String */;
7008 char* var170 /* : NativeString */;
7009 val* var171 /* : String */;
7010 static val* varonce172;
7011 val* var173 /* : String */;
7012 char* var174 /* : NativeString */;
7013 val* var175 /* : String */;
7014 val* var176 /* : String */;
7015 static val* varonce177;
7016 val* var178 /* : String */;
7017 char* var179 /* : NativeString */;
7018 val* var180 /* : String */;
7019 val* var181 /* : String */;
7020 val* var182 /* : nullable Object */;
7021 val* var183 /* : String */;
7022 val* var184 /* : String */;
7023 val* var185 /* : nullable RuntimeVariable */;
7024 val* var187 /* : NativeArray[String] */;
7025 static val* varonce186;
7026 static val* varonce188;
7027 val* var189 /* : String */;
7028 char* var190 /* : NativeString */;
7029 val* var191 /* : String */;
7030 val* var192 /* : nullable String */;
7031 val* var194 /* : nullable String */;
7032 val* var195 /* : String */;
7033 static val* varonce196;
7034 val* var197 /* : String */;
7035 char* var198 /* : NativeString */;
7036 val* var199 /* : String */;
7037 val* var201 /* : AbstractCompiler */;
7038 val* var203 /* : AbstractCompiler */;
7039 val* var204 /* : ModelBuilder */;
7040 val* var206 /* : ModelBuilder */;
7041 val* var_207 /* var : ModelBuilder */;
7042 long var208 /* : Int */;
7043 long var210 /* : Int */;
7044 long var211 /* : Int */;
7045 short int var213 /* : Bool */;
7046 int cltype214;
7047 int idtype215;
7048 const char* var_class_name216;
7049 long var217 /* : Int */;
7050 val* var219 /* : AbstractCompiler */;
7051 val* var221 /* : AbstractCompiler */;
7052 val* var222 /* : ModelBuilder */;
7053 val* var224 /* : ModelBuilder */;
7054 val* var225 /* : ToolContext */;
7055 val* var227 /* : ToolContext */;
7056 val* var228 /* : OptionBool */;
7057 val* var230 /* : OptionBool */;
7058 val* var231 /* : nullable Object */;
7059 val* var233 /* : nullable Object */;
7060 short int var234 /* : Bool */;
7061 static val* varonce235;
7062 val* var236 /* : String */;
7063 char* var237 /* : NativeString */;
7064 val* var238 /* : String */;
7065 val* var239 /* : String */;
7066 short int var240 /* : Bool */;
7067 short int var241 /* : Bool */;
7068 short int var243 /* : Bool */;
7069 short int var245 /* : Bool */;
7070 val* var247 /* : NativeArray[String] */;
7071 static val* varonce246;
7072 static val* varonce248;
7073 val* var249 /* : String */;
7074 char* var250 /* : NativeString */;
7075 val* var251 /* : String */;
7076 static val* varonce252;
7077 val* var253 /* : String */;
7078 char* var254 /* : NativeString */;
7079 val* var255 /* : String */;
7080 static val* varonce256;
7081 val* var257 /* : String */;
7082 char* var258 /* : NativeString */;
7083 val* var259 /* : String */;
7084 static val* varonce260;
7085 val* var261 /* : String */;
7086 char* var262 /* : NativeString */;
7087 val* var263 /* : String */;
7088 val* var264 /* : String */;
7089 static val* varonce265;
7090 val* var266 /* : String */;
7091 char* var267 /* : NativeString */;
7092 val* var268 /* : String */;
7093 val* var269 /* : String */;
7094 val* var270 /* : String */;
7095 val* var271 /* : nullable Object */;
7096 val* var272 /* : String */;
7097 val* var273 /* : String */;
7098 val* var275 /* : NativeArray[String] */;
7099 static val* varonce274;
7100 static val* varonce276;
7101 val* var277 /* : String */;
7102 char* var278 /* : NativeString */;
7103 val* var279 /* : String */;
7104 static val* varonce280;
7105 val* var281 /* : String */;
7106 char* var282 /* : NativeString */;
7107 val* var283 /* : String */;
7108 static val* varonce284;
7109 val* var285 /* : String */;
7110 char* var286 /* : NativeString */;
7111 val* var287 /* : String */;
7112 val* var288 /* : String */;
7113 val* var289 /* : String */;
7114 static val* varonce290;
7115 val* var291 /* : String */;
7116 char* var292 /* : NativeString */;
7117 val* var293 /* : String */;
7118 val* var294 /* : String */;
7119 val* var295 /* : String */;
7120 var_mmethoddef = p0;
7121 var_recvtype = p1;
7122 var_arguments = p2;
7123 {
7124 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
7125 var3 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
7126 var1 = var3;
7127 RET_LABEL2:(void)0;
7128 }
7129 }
7130 {
7131 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
7132 var6 = var_mmethoddef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
7133 var4 = var6;
7134 RET_LABEL5:(void)0;
7135 }
7136 }
7137 if (var4 == NULL) {
7138 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7139 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1524);
7140 fatal_exit(1);
7141 } else {
7142 var7 = nitc___nitc__MSignature___arity(var4);
7143 }
7144 {
7145 { /* Inline kernel#Int#+ (var7,1l) on <var7:Int> */
7146 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7147 /* <1l:Int> isa OTHER */
7148 var10 = 1; /* easy <1l:Int> isa OTHER*/
7149 if (unlikely(!var10)) {
7150 var_class_name = type_core__Int.name;
7151 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
7152 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
7153 fatal_exit(1);
7154 }
7155 var11 = var7 + 1l;
7156 var8 = var11;
7157 goto RET_LABEL9;
7158 RET_LABEL9:(void)0;
7159 }
7160 }
7161 {
7162 { /* Inline kernel#Int#== (var1,var8) on <var1:Int> */
7163 var14 = var1 == var8;
7164 var12 = var14;
7165 goto RET_LABEL13;
7166 RET_LABEL13:(void)0;
7167 }
7168 }
7169 if (unlikely(!var12)) {
7170 if (unlikely(varonce==NULL)) {
7171 var15 = NEW_core__NativeArray(5l, &type_core__NativeArray__core__String);
7172 if (likely(varonce16!=NULL)) {
7173 var17 = varonce16;
7174 } else {
7175 var18 = "Invalid arity for ";
7176 var19 = core__flat___NativeString___to_s_full(var18, 18l, 18l);
7177 var17 = var19;
7178 varonce16 = var17;
7179 }
7180 ((struct instance_core__NativeArray*)var15)->values[0]=var17;
7181 if (likely(varonce20!=NULL)) {
7182 var21 = varonce20;
7183 } else {
7184 var22 = ". ";
7185 var23 = core__flat___NativeString___to_s_full(var22, 2l, 2l);
7186 var21 = var23;
7187 varonce20 = var21;
7188 }
7189 ((struct instance_core__NativeArray*)var15)->values[2]=var21;
7190 if (likely(varonce24!=NULL)) {
7191 var25 = varonce24;
7192 } else {
7193 var26 = " arguments given.";
7194 var27 = core__flat___NativeString___to_s_full(var26, 17l, 17l);
7195 var25 = var27;
7196 varonce24 = var25;
7197 }
7198 ((struct instance_core__NativeArray*)var15)->values[4]=var25;
7199 } else {
7200 var15 = varonce;
7201 varonce = NULL;
7202 }
7203 {
7204 var28 = ((val*(*)(val* self))(var_mmethoddef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethoddef); /* to_s on <var_mmethoddef:MMethodDef>*/
7205 }
7206 ((struct instance_core__NativeArray*)var15)->values[1]=var28;
7207 {
7208 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
7209 var31 = var_arguments->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
7210 var29 = var31;
7211 RET_LABEL30:(void)0;
7212 }
7213 }
7214 var32 = core__flat___Int___core__abstract_text__Object__to_s(var29);
7215 ((struct instance_core__NativeArray*)var15)->values[3]=var32;
7216 {
7217 var33 = ((val*(*)(val* self))(var15->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var15); /* native_to_s on <var15:NativeArray[String]>*/
7218 }
7219 varonce = var15;
7220 {
7221 nitc___nitc__AbstractCompilerVisitor___debug(self, var33); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:SeparateCompilerVisitor>*/
7222 }
7223 PRINT_ERROR("Runtime error: %s", "Assert failed");
7224 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1524);
7225 fatal_exit(1);
7226 }
7227 {
7228 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
7229 var36 = var_mmethoddef->attrs[COLOR_nitc__model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
7230 var34 = var36;
7231 RET_LABEL35:(void)0;
7232 }
7233 }
7234 if (var34 == NULL) {
7235 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7236 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1527);
7237 fatal_exit(1);
7238 } else {
7239 { /* Inline model#MSignature#return_mtype (var34) on <var34:nullable MSignature> */
7240 if (unlikely(var34 == NULL)) {
7241 PRINT_ERROR("Runtime error: %s", "Receiver is null");
7242 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1795);
7243 fatal_exit(1);
7244 }
7245 var39 = var34->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var34:nullable MSignature> */
7246 var37 = var39;
7247 RET_LABEL38:(void)0;
7248 }
7249 }
7250 var_ret = var37;
7251 if (var_ret == NULL) {
7252 var40 = 1; /* is null */
7253 } else {
7254 var40 = 0; /* arg is null but recv is not */
7255 }
7256 if (0) {
7257 { /* Inline kernel#Object#== (var_ret,((val*)NULL)) on <var_ret:nullable MType> */
7258 var_other = ((val*)NULL);
7259 {
7260 { /* Inline kernel#Object#is_same_instance (var_ret,var_other) on <var_ret:nullable MType(MType)> */
7261 var45 = var_ret == var_other;
7262 var43 = var45;
7263 goto RET_LABEL44;
7264 RET_LABEL44:(void)0;
7265 }
7266 }
7267 var41 = var43;
7268 goto RET_LABEL42;
7269 RET_LABEL42:(void)0;
7270 }
7271 var40 = var41;
7272 }
7273 if (var40){
7274 var_res = ((val*)NULL);
7275 } else {
7276 {
7277 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
7278 var48 = var_mmethoddef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
7279 if (unlikely(var48 == NULL)) {
7280 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7281 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
7282 fatal_exit(1);
7283 }
7284 var46 = var48;
7285 RET_LABEL47:(void)0;
7286 }
7287 }
7288 {
7289 { /* Inline model#MClassDef#bound_mtype (var46) on <var46:MClassDef> */
7290 var51 = var46->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var46:MClassDef> */
7291 if (unlikely(var51 == NULL)) {
7292 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
7293 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
7294 fatal_exit(1);
7295 }
7296 var49 = var51;
7297 RET_LABEL50:(void)0;
7298 }
7299 }
7300 {
7301 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
7302 var54 = var_mmethoddef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
7303 if (unlikely(var54 == NULL)) {
7304 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7305 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
7306 fatal_exit(1);
7307 }
7308 var52 = var54;
7309 RET_LABEL53:(void)0;
7310 }
7311 }
7312 {
7313 { /* Inline model#MClassDef#bound_mtype (var52) on <var52:MClassDef> */
7314 var57 = var52->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var52:MClassDef> */
7315 if (unlikely(var57 == NULL)) {
7316 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
7317 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
7318 fatal_exit(1);
7319 }
7320 var55 = var57;
7321 RET_LABEL56:(void)0;
7322 }
7323 }
7324 {
7325 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
7326 var60 = var_mmethoddef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
7327 if (unlikely(var60 == NULL)) {
7328 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7329 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
7330 fatal_exit(1);
7331 }
7332 var58 = var60;
7333 RET_LABEL59:(void)0;
7334 }
7335 }
7336 {
7337 { /* Inline model#MClassDef#mmodule (var58) on <var58:MClassDef> */
7338 var63 = var58->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var58:MClassDef> */
7339 if (unlikely(var63 == NULL)) {
7340 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
7341 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 573);
7342 fatal_exit(1);
7343 }
7344 var61 = var63;
7345 RET_LABEL62:(void)0;
7346 }
7347 }
7348 {
7349 var64 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_ret->class->vft[COLOR_nitc__model__MType__resolve_for]))(var_ret, var49, var55, var61, 1); /* resolve_for on <var_ret:nullable MType(MType)>*/
7350 }
7351 var_ret = var64;
7352 {
7353 var65 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var_ret);
7354 }
7355 var_res = var65;
7356 }
7357 {
7358 { /* Inline model#MMethodDef#is_intern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
7359 var70 = var_mmethoddef->attrs[COLOR_nitc__model__MMethodDef___is_intern].s; /* _is_intern on <var_mmethoddef:MMethodDef> */
7360 var68 = var70;
7361 RET_LABEL69:(void)0;
7362 }
7363 }
7364 var_ = var68;
7365 if (var68){
7366 {
7367 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7368 var73 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7369 if (unlikely(var73 == NULL)) {
7370 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7371 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
7372 fatal_exit(1);
7373 }
7374 var71 = var73;
7375 RET_LABEL72:(void)0;
7376 }
7377 }
7378 {
7379 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var71) on <var71:AbstractCompiler(SeparateCompiler)> */
7380 var76 = var71->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var71:AbstractCompiler(SeparateCompiler)> */
7381 if (unlikely(var76 == NULL)) {
7382 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7383 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
7384 fatal_exit(1);
7385 }
7386 var74 = var76;
7387 RET_LABEL75:(void)0;
7388 }
7389 }
7390 {
7391 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var74) on <var74:ModelBuilder> */
7392 var79 = var74->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var74:ModelBuilder> */
7393 if (unlikely(var79 == NULL)) {
7394 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7395 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
7396 fatal_exit(1);
7397 }
7398 var77 = var79;
7399 RET_LABEL78:(void)0;
7400 }
7401 }
7402 {
7403 { /* Inline separate_compiler#ToolContext#opt_no_inline_intern (var77) on <var77:ToolContext> */
7404 var82 = var77->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_inline_intern].val; /* _opt_no_inline_intern on <var77:ToolContext> */
7405 if (unlikely(var82 == NULL)) {
7406 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_inline_intern");
7407 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 26);
7408 fatal_exit(1);
7409 }
7410 var80 = var82;
7411 RET_LABEL81:(void)0;
7412 }
7413 }
7414 {
7415 { /* Inline opts#Option#value (var80) on <var80:OptionBool> */
7416 var85 = var80->attrs[COLOR_opts__Option___value].val; /* _value on <var80:OptionBool> */
7417 var83 = var85;
7418 RET_LABEL84:(void)0;
7419 }
7420 }
7421 var86 = (short int)((long)(var83)>>2);
7422 var87 = !var86;
7423 var67 = var87;
7424 } else {
7425 var67 = var_;
7426 }
7427 var_88 = var67;
7428 if (var67){
7429 var66 = var_88;
7430 } else {
7431 {
7432 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7433 var92 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7434 if (unlikely(var92 == NULL)) {
7435 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7436 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
7437 fatal_exit(1);
7438 }
7439 var90 = var92;
7440 RET_LABEL91:(void)0;
7441 }
7442 }
7443 {
7444 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var90) on <var90:AbstractCompiler(SeparateCompiler)> */
7445 var95 = var90->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var90:AbstractCompiler(SeparateCompiler)> */
7446 if (unlikely(var95 == NULL)) {
7447 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7448 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
7449 fatal_exit(1);
7450 }
7451 var93 = var95;
7452 RET_LABEL94:(void)0;
7453 }
7454 }
7455 {
7456 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var93) on <var93:ModelBuilder> */
7457 var98 = var93->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var93:ModelBuilder> */
7458 if (unlikely(var98 == NULL)) {
7459 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7460 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
7461 fatal_exit(1);
7462 }
7463 var96 = var98;
7464 RET_LABEL97:(void)0;
7465 }
7466 }
7467 {
7468 { /* Inline separate_compiler#ToolContext#opt_inline_some_methods (var96) on <var96:ToolContext> */
7469 var101 = var96->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_inline_some_methods].val; /* _opt_inline_some_methods on <var96:ToolContext> */
7470 if (unlikely(var101 == NULL)) {
7471 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_some_methods");
7472 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 48);
7473 fatal_exit(1);
7474 }
7475 var99 = var101;
7476 RET_LABEL100:(void)0;
7477 }
7478 }
7479 {
7480 { /* Inline opts#Option#value (var99) on <var99:OptionBool> */
7481 var104 = var99->attrs[COLOR_opts__Option___value].val; /* _value on <var99:OptionBool> */
7482 var102 = var104;
7483 RET_LABEL103:(void)0;
7484 }
7485 }
7486 var105 = (short int)((long)(var102)>>2);
7487 var_106 = var105;
7488 if (var105){
7489 {
7490 var107 = nitc__abstract_compiler___MMethodDef___can_inline(var_mmethoddef, self);
7491 }
7492 var89 = var107;
7493 } else {
7494 var89 = var_106;
7495 }
7496 var66 = var89;
7497 }
7498 if (var66){
7499 {
7500 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7501 var110 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7502 if (unlikely(var110 == NULL)) {
7503 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7504 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
7505 fatal_exit(1);
7506 }
7507 var108 = var110;
7508 RET_LABEL109:(void)0;
7509 }
7510 }
7511 {
7512 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var108) on <var108:AbstractCompiler(SeparateCompiler)> */
7513 var113 = var108->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var108:AbstractCompiler(SeparateCompiler)> */
7514 if (unlikely(var113 == NULL)) {
7515 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7516 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
7517 fatal_exit(1);
7518 }
7519 var111 = var113;
7520 RET_LABEL112:(void)0;
7521 }
7522 }
7523 var_114 = var111;
7524 {
7525 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var_114) on <var_114:ModelBuilder> */
7526 var117 = var_114->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var_114:ModelBuilder> */
7527 var115 = var117;
7528 RET_LABEL116:(void)0;
7529 }
7530 }
7531 {
7532 { /* Inline kernel#Int#+ (var115,1l) on <var115:Int> */
7533 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7534 /* <1l:Int> isa OTHER */
7535 var120 = 1; /* easy <1l:Int> isa OTHER*/
7536 if (unlikely(!var120)) {
7537 var_class_name123 = type_core__Int.name;
7538 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name123);
7539 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
7540 fatal_exit(1);
7541 }
7542 var124 = var115 + 1l;
7543 var118 = var124;
7544 goto RET_LABEL119;
7545 RET_LABEL119:(void)0;
7546 }
7547 }
7548 {
7549 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline= (var_114,var118) on <var_114:ModelBuilder> */
7550 var_114->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_inline].l = var118; /* _nb_invok_by_inline on <var_114:ModelBuilder> */
7551 RET_LABEL125:(void)0;
7552 }
7553 }
7554 {
7555 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7556 var128 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7557 if (unlikely(var128 == NULL)) {
7558 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7559 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
7560 fatal_exit(1);
7561 }
7562 var126 = var128;
7563 RET_LABEL127:(void)0;
7564 }
7565 }
7566 {
7567 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var126) on <var126:AbstractCompiler(SeparateCompiler)> */
7568 var131 = var126->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var126:AbstractCompiler(SeparateCompiler)> */
7569 if (unlikely(var131 == NULL)) {
7570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7571 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
7572 fatal_exit(1);
7573 }
7574 var129 = var131;
7575 RET_LABEL130:(void)0;
7576 }
7577 }
7578 {
7579 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var129) on <var129:ModelBuilder> */
7580 var134 = var129->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var129:ModelBuilder> */
7581 if (unlikely(var134 == NULL)) {
7582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7583 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
7584 fatal_exit(1);
7585 }
7586 var132 = var134;
7587 RET_LABEL133:(void)0;
7588 }
7589 }
7590 {
7591 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var132) on <var132:ToolContext> */
7592 var137 = var132->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var132:ToolContext> */
7593 if (unlikely(var137 == NULL)) {
7594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
7595 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 62);
7596 fatal_exit(1);
7597 }
7598 var135 = var137;
7599 RET_LABEL136:(void)0;
7600 }
7601 }
7602 {
7603 { /* Inline opts#Option#value (var135) on <var135:OptionBool> */
7604 var140 = var135->attrs[COLOR_opts__Option___value].val; /* _value on <var135:OptionBool> */
7605 var138 = var140;
7606 RET_LABEL139:(void)0;
7607 }
7608 }
7609 var141 = (short int)((long)(var138)>>2);
7610 if (var141){
7611 if (likely(varonce142!=NULL)) {
7612 var143 = varonce142;
7613 } else {
7614 var144 = "count_invoke_by_inline++;";
7615 var145 = core__flat___NativeString___to_s_full(var144, 25l, 25l);
7616 var143 = var145;
7617 varonce142 = var143;
7618 }
7619 {
7620 nitc___nitc__AbstractCompilerVisitor___add(self, var143); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7621 }
7622 } else {
7623 }
7624 var146 = NEW_nitc__StaticFrame(&type_nitc__StaticFrame);
7625 {
7626 ((void(*)(val* self, val* p0))(var146->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__visitor_61d]))(var146, self); /* visitor= on <var146:StaticFrame>*/
7627 }
7628 {
7629 ((void(*)(val* self, val* p0))(var146->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__mpropdef_61d]))(var146, var_mmethoddef); /* mpropdef= on <var146:StaticFrame>*/
7630 }
7631 {
7632 ((void(*)(val* self, val* p0))(var146->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__receiver_61d]))(var146, var_recvtype); /* receiver= on <var146:StaticFrame>*/
7633 }
7634 {
7635 ((void(*)(val* self, val* p0))(var146->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__arguments_61d]))(var146, var_arguments); /* arguments= on <var146:StaticFrame>*/
7636 }
7637 {
7638 ((void(*)(val* self))(var146->class->vft[COLOR_core__kernel__Object__init]))(var146); /* init on <var146:StaticFrame>*/
7639 }
7640 var_frame = var146;
7641 if (likely(varonce147!=NULL)) {
7642 var148 = varonce147;
7643 } else {
7644 var149 = "RET_LABEL";
7645 var150 = core__flat___NativeString___to_s_full(var149, 9l, 9l);
7646 var148 = var150;
7647 varonce147 = var148;
7648 }
7649 {
7650 var151 = nitc___nitc__AbstractCompilerVisitor___get_name(self, var148);
7651 }
7652 {
7653 { /* Inline abstract_compiler#StaticFrame#returnlabel= (var_frame,var151) on <var_frame:StaticFrame> */
7654 var_frame->attrs[COLOR_nitc__abstract_compiler__StaticFrame___returnlabel].val = var151; /* _returnlabel on <var_frame:StaticFrame> */
7655 RET_LABEL152:(void)0;
7656 }
7657 }
7658 {
7659 { /* Inline abstract_compiler#StaticFrame#returnvar= (var_frame,var_res) on <var_frame:StaticFrame> */
7660 var_frame->attrs[COLOR_nitc__abstract_compiler__StaticFrame___returnvar].val = var_res; /* _returnvar on <var_frame:StaticFrame> */
7661 RET_LABEL153:(void)0;
7662 }
7663 }
7664 {
7665 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
7666 var156 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
7667 var154 = var156;
7668 RET_LABEL155:(void)0;
7669 }
7670 }
7671 var_old_frame = var154;
7672 {
7673 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on <self:SeparateCompilerVisitor> */
7674 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <self:SeparateCompilerVisitor> */
7675 RET_LABEL157:(void)0;
7676 }
7677 }
7678 if (unlikely(varonce158==NULL)) {
7679 var159 = NEW_core__NativeArray(7l, &type_core__NativeArray__core__String);
7680 if (likely(varonce160!=NULL)) {
7681 var161 = varonce160;
7682 } else {
7683 var162 = "{ /* Inline ";
7684 var163 = core__flat___NativeString___to_s_full(var162, 12l, 12l);
7685 var161 = var163;
7686 varonce160 = var161;
7687 }
7688 ((struct instance_core__NativeArray*)var159)->values[0]=var161;
7689 if (likely(varonce164!=NULL)) {
7690 var165 = varonce164;
7691 } else {
7692 var166 = " (";
7693 var167 = core__flat___NativeString___to_s_full(var166, 2l, 2l);
7694 var165 = var167;
7695 varonce164 = var165;
7696 }
7697 ((struct instance_core__NativeArray*)var159)->values[2]=var165;
7698 if (likely(varonce168!=NULL)) {
7699 var169 = varonce168;
7700 } else {
7701 var170 = ") on ";
7702 var171 = core__flat___NativeString___to_s_full(var170, 5l, 5l);
7703 var169 = var171;
7704 varonce168 = var169;
7705 }
7706 ((struct instance_core__NativeArray*)var159)->values[4]=var169;
7707 if (likely(varonce172!=NULL)) {
7708 var173 = varonce172;
7709 } else {
7710 var174 = " */";
7711 var175 = core__flat___NativeString___to_s_full(var174, 3l, 3l);
7712 var173 = var175;
7713 varonce172 = var173;
7714 }
7715 ((struct instance_core__NativeArray*)var159)->values[6]=var173;
7716 } else {
7717 var159 = varonce158;
7718 varonce158 = NULL;
7719 }
7720 {
7721 var176 = ((val*(*)(val* self))(var_mmethoddef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethoddef); /* to_s on <var_mmethoddef:MMethodDef>*/
7722 }
7723 ((struct instance_core__NativeArray*)var159)->values[1]=var176;
7724 if (likely(varonce177!=NULL)) {
7725 var178 = varonce177;
7726 } else {
7727 var179 = ",";
7728 var180 = core__flat___NativeString___to_s_full(var179, 1l, 1l);
7729 var178 = var180;
7730 varonce177 = var178;
7731 }
7732 {
7733 var181 = core__abstract_text___Collection___join(var_arguments, var178);
7734 }
7735 ((struct instance_core__NativeArray*)var159)->values[3]=var181;
7736 {
7737 var182 = core___core__SequenceRead___Collection__first(var_arguments);
7738 }
7739 {
7740 var183 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var182);
7741 }
7742 ((struct instance_core__NativeArray*)var159)->values[5]=var183;
7743 {
7744 var184 = ((val*(*)(val* self))(var159->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var159); /* native_to_s on <var159:NativeArray[String]>*/
7745 }
7746 varonce158 = var159;
7747 {
7748 nitc___nitc__AbstractCompilerVisitor___add(self, var184); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7749 }
7750 {
7751 var185 = nitc__abstract_compiler___MMethodDef___compile_inside_to_c(var_mmethoddef, self, var_arguments);
7752 }
7753 if (unlikely(varonce186==NULL)) {
7754 var187 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
7755 if (likely(varonce188!=NULL)) {
7756 var189 = varonce188;
7757 } else {
7758 var190 = ":(void)0;";
7759 var191 = core__flat___NativeString___to_s_full(var190, 9l, 9l);
7760 var189 = var191;
7761 varonce188 = var189;
7762 }
7763 ((struct instance_core__NativeArray*)var187)->values[1]=var189;
7764 } else {
7765 var187 = varonce186;
7766 varonce186 = NULL;
7767 }
7768 {
7769 { /* Inline abstract_compiler#StaticFrame#returnlabel (var_frame) on <var_frame:StaticFrame> */
7770 var194 = var_frame->attrs[COLOR_nitc__abstract_compiler__StaticFrame___returnlabel].val; /* _returnlabel on <var_frame:StaticFrame> */
7771 var192 = var194;
7772 RET_LABEL193:(void)0;
7773 }
7774 }
7775 if (unlikely(var192 == NULL)) {
7776 PRINT_ERROR("Runtime error: %s", "Cast failed");
7777 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1546);
7778 fatal_exit(1);
7779 }
7780 ((struct instance_core__NativeArray*)var187)->values[0]=var192;
7781 {
7782 var195 = ((val*(*)(val* self))(var187->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var187); /* native_to_s on <var187:NativeArray[String]>*/
7783 }
7784 varonce186 = var187;
7785 {
7786 nitc___nitc__AbstractCompilerVisitor___add(self, var195); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7787 }
7788 if (likely(varonce196!=NULL)) {
7789 var197 = varonce196;
7790 } else {
7791 var198 = "}";
7792 var199 = core__flat___NativeString___to_s_full(var198, 1l, 1l);
7793 var197 = var199;
7794 varonce196 = var197;
7795 }
7796 {
7797 nitc___nitc__AbstractCompilerVisitor___add(self, var197); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7798 }
7799 {
7800 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on <self:SeparateCompilerVisitor> */
7801 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on <self:SeparateCompilerVisitor> */
7802 RET_LABEL200:(void)0;
7803 }
7804 }
7805 var = var_res;
7806 goto RET_LABEL;
7807 } else {
7808 }
7809 {
7810 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7811 var203 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7812 if (unlikely(var203 == NULL)) {
7813 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7814 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
7815 fatal_exit(1);
7816 }
7817 var201 = var203;
7818 RET_LABEL202:(void)0;
7819 }
7820 }
7821 {
7822 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var201) on <var201:AbstractCompiler(SeparateCompiler)> */
7823 var206 = var201->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var201:AbstractCompiler(SeparateCompiler)> */
7824 if (unlikely(var206 == NULL)) {
7825 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7826 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
7827 fatal_exit(1);
7828 }
7829 var204 = var206;
7830 RET_LABEL205:(void)0;
7831 }
7832 }
7833 var_207 = var204;
7834 {
7835 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var_207) on <var_207:ModelBuilder> */
7836 var210 = var_207->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var_207:ModelBuilder> */
7837 var208 = var210;
7838 RET_LABEL209:(void)0;
7839 }
7840 }
7841 {
7842 { /* Inline kernel#Int#+ (var208,1l) on <var208:Int> */
7843 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7844 /* <1l:Int> isa OTHER */
7845 var213 = 1; /* easy <1l:Int> isa OTHER*/
7846 if (unlikely(!var213)) {
7847 var_class_name216 = type_core__Int.name;
7848 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name216);
7849 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
7850 fatal_exit(1);
7851 }
7852 var217 = var208 + 1l;
7853 var211 = var217;
7854 goto RET_LABEL212;
7855 RET_LABEL212:(void)0;
7856 }
7857 }
7858 {
7859 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct= (var_207,var211) on <var_207:ModelBuilder> */
7860 var_207->attrs[COLOR_nitc__separate_compiler__ModelBuilder___nb_invok_by_direct].l = var211; /* _nb_invok_by_direct on <var_207:ModelBuilder> */
7861 RET_LABEL218:(void)0;
7862 }
7863 }
7864 {
7865 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7866 var221 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7867 if (unlikely(var221 == NULL)) {
7868 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7869 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
7870 fatal_exit(1);
7871 }
7872 var219 = var221;
7873 RET_LABEL220:(void)0;
7874 }
7875 }
7876 {
7877 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var219) on <var219:AbstractCompiler(SeparateCompiler)> */
7878 var224 = var219->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var219:AbstractCompiler(SeparateCompiler)> */
7879 if (unlikely(var224 == NULL)) {
7880 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7881 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
7882 fatal_exit(1);
7883 }
7884 var222 = var224;
7885 RET_LABEL223:(void)0;
7886 }
7887 }
7888 {
7889 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var222) on <var222:ModelBuilder> */
7890 var227 = var222->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var222:ModelBuilder> */
7891 if (unlikely(var227 == NULL)) {
7892 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7893 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
7894 fatal_exit(1);
7895 }
7896 var225 = var227;
7897 RET_LABEL226:(void)0;
7898 }
7899 }
7900 {
7901 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var225) on <var225:ToolContext> */
7902 var230 = var225->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var225:ToolContext> */
7903 if (unlikely(var230 == NULL)) {
7904 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
7905 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 62);
7906 fatal_exit(1);
7907 }
7908 var228 = var230;
7909 RET_LABEL229:(void)0;
7910 }
7911 }
7912 {
7913 { /* Inline opts#Option#value (var228) on <var228:OptionBool> */
7914 var233 = var228->attrs[COLOR_opts__Option___value].val; /* _value on <var228:OptionBool> */
7915 var231 = var233;
7916 RET_LABEL232:(void)0;
7917 }
7918 }
7919 var234 = (short int)((long)(var231)>>2);
7920 if (var234){
7921 if (likely(varonce235!=NULL)) {
7922 var236 = varonce235;
7923 } else {
7924 var237 = "count_invoke_by_direct++;";
7925 var238 = core__flat___NativeString___to_s_full(var237, 25l, 25l);
7926 var236 = var238;
7927 varonce235 = var236;
7928 }
7929 {
7930 nitc___nitc__AbstractCompilerVisitor___add(self, var236); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7931 }
7932 } else {
7933 }
7934 {
7935 nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__adapt_signature(self, var_mmethoddef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <self:SeparateCompilerVisitor>*/
7936 }
7937 {
7938 var239 = nitc___nitc__MPropDef___nitc__model_base__MEntity__c_name(var_mmethoddef);
7939 }
7940 {
7941 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var239); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
7942 }
7943 if (var_res == NULL) {
7944 var240 = 1; /* is null */
7945 } else {
7946 var240 = 0; /* arg is null but recv is not */
7947 }
7948 if (0) {
7949 { /* Inline kernel#Object#== (var_res,((val*)NULL)) on <var_res:nullable RuntimeVariable> */
7950 var_other = ((val*)NULL);
7951 {
7952 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable RuntimeVariable(RuntimeVariable)> */
7953 var245 = var_res == var_other;
7954 var243 = var245;
7955 goto RET_LABEL244;
7956 RET_LABEL244:(void)0;
7957 }
7958 }
7959 var241 = var243;
7960 goto RET_LABEL242;
7961 RET_LABEL242:(void)0;
7962 }
7963 var240 = var241;
7964 }
7965 if (var240){
7966 if (unlikely(varonce246==NULL)) {
7967 var247 = NEW_core__NativeArray(8l, &type_core__NativeArray__core__String);
7968 if (likely(varonce248!=NULL)) {
7969 var249 = varonce248;
7970 } else {
7971 var250 = "(";
7972 var251 = core__flat___NativeString___to_s_full(var250, 1l, 1l);
7973 var249 = var251;
7974 varonce248 = var249;
7975 }
7976 ((struct instance_core__NativeArray*)var247)->values[1]=var249;
7977 if (likely(varonce252!=NULL)) {
7978 var253 = varonce252;
7979 } else {
7980 var254 = "); /* Direct call ";
7981 var255 = core__flat___NativeString___to_s_full(var254, 18l, 18l);
7982 var253 = var255;
7983 varonce252 = var253;
7984 }
7985 ((struct instance_core__NativeArray*)var247)->values[3]=var253;
7986 if (likely(varonce256!=NULL)) {
7987 var257 = varonce256;
7988 } else {
7989 var258 = " on ";
7990 var259 = core__flat___NativeString___to_s_full(var258, 4l, 4l);
7991 var257 = var259;
7992 varonce256 = var257;
7993 }
7994 ((struct instance_core__NativeArray*)var247)->values[5]=var257;
7995 if (likely(varonce260!=NULL)) {
7996 var261 = varonce260;
7997 } else {
7998 var262 = "*/";
7999 var263 = core__flat___NativeString___to_s_full(var262, 2l, 2l);
8000 var261 = var263;
8001 varonce260 = var261;
8002 }
8003 ((struct instance_core__NativeArray*)var247)->values[7]=var261;
8004 } else {
8005 var247 = varonce246;
8006 varonce246 = NULL;
8007 }
8008 {
8009 var264 = nitc___nitc__MPropDef___nitc__model_base__MEntity__c_name(var_mmethoddef);
8010 }
8011 ((struct instance_core__NativeArray*)var247)->values[0]=var264;
8012 if (likely(varonce265!=NULL)) {
8013 var266 = varonce265;
8014 } else {
8015 var267 = ", ";
8016 var268 = core__flat___NativeString___to_s_full(var267, 2l, 2l);
8017 var266 = var268;
8018 varonce265 = var266;
8019 }
8020 {
8021 var269 = core__abstract_text___Collection___join(var_arguments, var266);
8022 }
8023 ((struct instance_core__NativeArray*)var247)->values[2]=var269;
8024 {
8025 var270 = ((val*(*)(val* self))(var_mmethoddef->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mmethoddef); /* to_s on <var_mmethoddef:MMethodDef>*/
8026 }
8027 ((struct instance_core__NativeArray*)var247)->values[4]=var270;
8028 {
8029 var271 = core___core__SequenceRead___Collection__first(var_arguments);
8030 }
8031 {
8032 var272 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var271);
8033 }
8034 ((struct instance_core__NativeArray*)var247)->values[6]=var272;
8035 {
8036 var273 = ((val*(*)(val* self))(var247->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var247); /* native_to_s on <var247:NativeArray[String]>*/
8037 }
8038 varonce246 = var247;
8039 {
8040 nitc___nitc__AbstractCompilerVisitor___add(self, var273); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8041 }
8042 var = ((val*)NULL);
8043 goto RET_LABEL;
8044 } else {
8045 if (unlikely(varonce274==NULL)) {
8046 var275 = NEW_core__NativeArray(6l, &type_core__NativeArray__core__String);
8047 if (likely(varonce276!=NULL)) {
8048 var277 = varonce276;
8049 } else {
8050 var278 = " = ";
8051 var279 = core__flat___NativeString___to_s_full(var278, 3l, 3l);
8052 var277 = var279;
8053 varonce276 = var277;
8054 }
8055 ((struct instance_core__NativeArray*)var275)->values[1]=var277;
8056 if (likely(varonce280!=NULL)) {
8057 var281 = varonce280;
8058 } else {
8059 var282 = "(";
8060 var283 = core__flat___NativeString___to_s_full(var282, 1l, 1l);
8061 var281 = var283;
8062 varonce280 = var281;
8063 }
8064 ((struct instance_core__NativeArray*)var275)->values[3]=var281;
8065 if (likely(varonce284!=NULL)) {
8066 var285 = varonce284;
8067 } else {
8068 var286 = ");";
8069 var287 = core__flat___NativeString___to_s_full(var286, 2l, 2l);
8070 var285 = var287;
8071 varonce284 = var285;
8072 }
8073 ((struct instance_core__NativeArray*)var275)->values[5]=var285;
8074 } else {
8075 var275 = varonce274;
8076 varonce274 = NULL;
8077 }
8078 {
8079 var288 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
8080 }
8081 ((struct instance_core__NativeArray*)var275)->values[0]=var288;
8082 {
8083 var289 = nitc___nitc__MPropDef___nitc__model_base__MEntity__c_name(var_mmethoddef);
8084 }
8085 ((struct instance_core__NativeArray*)var275)->values[2]=var289;
8086 if (likely(varonce290!=NULL)) {
8087 var291 = varonce290;
8088 } else {
8089 var292 = ", ";
8090 var293 = core__flat___NativeString___to_s_full(var292, 2l, 2l);
8091 var291 = var293;
8092 varonce290 = var291;
8093 }
8094 {
8095 var294 = core__abstract_text___Collection___join(var_arguments, var291);
8096 }
8097 ((struct instance_core__NativeArray*)var275)->values[4]=var294;
8098 {
8099 var295 = ((val*(*)(val* self))(var275->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var275); /* native_to_s on <var275:NativeArray[String]>*/
8100 }
8101 varonce274 = var275;
8102 {
8103 nitc___nitc__AbstractCompilerVisitor___add(self, var295); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8104 }
8105 }
8106 var = var_res;
8107 goto RET_LABEL;
8108 RET_LABEL:;
8109 return var;
8110 }
8111 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
8112 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
8113 val* var /* : nullable RuntimeVariable */;
8114 val* var_m /* var m: MMethodDef */;
8115 val* var_recvtype /* var recvtype: MClassType */;
8116 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
8117 val* var1 /* : nullable Object */;
8118 val* var2 /* : MType */;
8119 val* var4 /* : MType */;
8120 short int var5 /* : Bool */;
8121 val* var6 /* : AbstractCompiler */;
8122 val* var8 /* : AbstractCompiler */;
8123 val* var9 /* : MModule */;
8124 val* var11 /* : MModule */;
8125 val* var_main /* var main: MModule */;
8126 val* var12 /* : AbstractCompiler */;
8127 val* var14 /* : AbstractCompiler */;
8128 val* var15 /* : AbstractCompiler */;
8129 val* var17 /* : AbstractCompiler */;
8130 val* var18 /* : MModule */;
8131 val* var20 /* : MModule */;
8132 val* var22 /* : nullable RuntimeVariable */;
8133 val* var_res /* var res: nullable RuntimeVariable */;
8134 val* var23 /* : AbstractCompiler */;
8135 val* var25 /* : AbstractCompiler */;
8136 val* var27 /* : MProperty */;
8137 val* var29 /* : MProperty */;
8138 val* var30 /* : nullable RuntimeVariable */;
8139 var_m = p0;
8140 var_recvtype = p1;
8141 var_arguments = p2;
8142 {
8143 var1 = core___core__SequenceRead___Collection__first(var_arguments);
8144 }
8145 {
8146 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on <var1:nullable Object(RuntimeVariable)> */
8147 var4 = var1->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var1:nullable Object(RuntimeVariable)> */
8148 if (unlikely(var4 == NULL)) {
8149 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
8150 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1873);
8151 fatal_exit(1);
8152 }
8153 var2 = var4;
8154 RET_LABEL3:(void)0;
8155 }
8156 }
8157 {
8158 var5 = ((short int(*)(val* self))(var2->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var2); /* is_c_primitive on <var2:MType>*/
8159 }
8160 if (var5){
8161 {
8162 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8163 var8 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8164 if (unlikely(var8 == NULL)) {
8165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8166 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
8167 fatal_exit(1);
8168 }
8169 var6 = var8;
8170 RET_LABEL7:(void)0;
8171 }
8172 }
8173 {
8174 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var6) on <var6:AbstractCompiler(SeparateCompiler)> */
8175 var11 = var6->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var6:AbstractCompiler(SeparateCompiler)> */
8176 if (unlikely(var11 == NULL)) {
8177 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
8178 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 531);
8179 fatal_exit(1);
8180 }
8181 var9 = var11;
8182 RET_LABEL10:(void)0;
8183 }
8184 }
8185 var_main = var9;
8186 {
8187 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8188 var14 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8189 if (unlikely(var14 == NULL)) {
8190 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8191 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
8192 fatal_exit(1);
8193 }
8194 var12 = var14;
8195 RET_LABEL13:(void)0;
8196 }
8197 }
8198 {
8199 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8200 var17 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8201 if (unlikely(var17 == NULL)) {
8202 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8203 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
8204 fatal_exit(1);
8205 }
8206 var15 = var17;
8207 RET_LABEL16:(void)0;
8208 }
8209 }
8210 {
8211 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var15) on <var15:AbstractCompiler(SeparateCompiler)> */
8212 var20 = var15->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <var15:AbstractCompiler(SeparateCompiler)> */
8213 if (unlikely(var20 == NULL)) {
8214 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
8215 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 535);
8216 fatal_exit(1);
8217 }
8218 var18 = var20;
8219 RET_LABEL19:(void)0;
8220 }
8221 }
8222 {
8223 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var12,var18) on <var12:AbstractCompiler(SeparateCompiler)> */
8224 var12->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val = var18; /* _mainmodule on <var12:AbstractCompiler(SeparateCompiler)> */
8225 RET_LABEL21:(void)0;
8226 }
8227 }
8228 {
8229 var22 = nitc___nitc__AbstractCompilerVisitor___monomorphic_super_send(self, var_m, var_recvtype, var_arguments);
8230 }
8231 var_res = var22;
8232 {
8233 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8234 var25 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8235 if (unlikely(var25 == NULL)) {
8236 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8237 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
8238 fatal_exit(1);
8239 }
8240 var23 = var25;
8241 RET_LABEL24:(void)0;
8242 }
8243 }
8244 {
8245 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var23,var_main) on <var23:AbstractCompiler(SeparateCompiler)> */
8246 var23->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val = var_main; /* _mainmodule on <var23:AbstractCompiler(SeparateCompiler)> */
8247 RET_LABEL26:(void)0;
8248 }
8249 }
8250 var = var_res;
8251 goto RET_LABEL;
8252 } else {
8253 }
8254 {
8255 { /* Inline model#MPropDef#mproperty (var_m) on <var_m:MMethodDef> */
8256 var29 = var_m->attrs[COLOR_nitc__model__MPropDef___mproperty].val; /* _mproperty on <var_m:MMethodDef> */
8257 if (unlikely(var29 == NULL)) {
8258 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8259 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2230);
8260 fatal_exit(1);
8261 }
8262 var27 = var29;
8263 RET_LABEL28:(void)0;
8264 }
8265 }
8266 {
8267 var30 = nitc___nitc__SeparateCompilerVisitor___table_send(self, var27, var_arguments, var_m);
8268 }
8269 var = var30;
8270 goto RET_LABEL;
8271 RET_LABEL:;
8272 return var;
8273 }
8274 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: SeparateCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
8275 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
8276 val* var /* : RuntimeVariable */;
8277 val* var_mpropdef /* var mpropdef: MPropDef */;
8278 val* var_recv /* var recv: RuntimeVariable */;
8279 val* var_varargs /* var varargs: Array[RuntimeVariable] */;
8280 val* var_elttype /* var elttype: MType */;
8281 val* var1 /* : nullable StaticFrame */;
8282 val* var3 /* : nullable StaticFrame */;
8283 val* var_old_frame /* var old_frame: nullable StaticFrame */;
8284 val* var4 /* : StaticFrame */;
8285 val* var5 /* : MClassDef */;
8286 val* var7 /* : MClassDef */;
8287 val* var8 /* : MClassType */;
8288 val* var10 /* : MClassType */;
8289 val* var11 /* : Array[RuntimeVariable] */;
8290 val* var_ /* var : Array[RuntimeVariable] */;
8291 val* var_frame /* var frame: StaticFrame */;
8292 val* var13 /* : RuntimeVariable */;
8293 val* var_res /* var res: RuntimeVariable */;
8294 var_mpropdef = p0;
8295 var_recv = p1;
8296 var_varargs = p2;
8297 var_elttype = p3;
8298 {
8299 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
8300 var3 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
8301 var1 = var3;
8302 RET_LABEL2:(void)0;
8303 }
8304 }
8305 var_old_frame = var1;
8306 var4 = NEW_nitc__StaticFrame(&type_nitc__StaticFrame);
8307 {
8308 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
8309 var7 = var_mpropdef->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
8310 if (unlikely(var7 == NULL)) {
8311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8312 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
8313 fatal_exit(1);
8314 }
8315 var5 = var7;
8316 RET_LABEL6:(void)0;
8317 }
8318 }
8319 {
8320 { /* Inline model#MClassDef#bound_mtype (var5) on <var5:MClassDef> */
8321 var10 = var5->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var5:MClassDef> */
8322 if (unlikely(var10 == NULL)) {
8323 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8324 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
8325 fatal_exit(1);
8326 }
8327 var8 = var10;
8328 RET_LABEL9:(void)0;
8329 }
8330 }
8331 var11 = NEW_core__Array(&type_core__Array__nitc__RuntimeVariable);
8332 {
8333 core___core__Array___with_capacity(var11, 1l); /* Direct call array#Array#with_capacity on <var11:Array[RuntimeVariable]>*/
8334 }
8335 var_ = var11;
8336 {
8337 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var_recv); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
8338 }
8339 {
8340 ((void(*)(val* self, val* p0))(var4->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__visitor_61d]))(var4, self); /* visitor= on <var4:StaticFrame>*/
8341 }
8342 {
8343 ((void(*)(val* self, val* p0))(var4->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__mpropdef_61d]))(var4, var_mpropdef); /* mpropdef= on <var4:StaticFrame>*/
8344 }
8345 {
8346 ((void(*)(val* self, val* p0))(var4->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__receiver_61d]))(var4, var8); /* receiver= on <var4:StaticFrame>*/
8347 }
8348 {
8349 ((void(*)(val* self, val* p0))(var4->class->vft[COLOR_nitc__abstract_compiler__StaticFrame__arguments_61d]))(var4, var_); /* arguments= on <var4:StaticFrame>*/
8350 }
8351 {
8352 ((void(*)(val* self))(var4->class->vft[COLOR_core__kernel__Object__init]))(var4); /* init on <var4:StaticFrame>*/
8353 }
8354 var_frame = var4;
8355 {
8356 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on <self:SeparateCompilerVisitor> */
8357 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <self:SeparateCompilerVisitor> */
8358 RET_LABEL12:(void)0;
8359 }
8360 }
8361 {
8362 var13 = nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__array_instance(self, var_varargs, var_elttype);
8363 }
8364 var_res = var13;
8365 {
8366 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on <self:SeparateCompilerVisitor> */
8367 self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on <self:SeparateCompilerVisitor> */
8368 RET_LABEL14:(void)0;
8369 }
8370 }
8371 var = var_res;
8372 goto RET_LABEL;
8373 RET_LABEL:;
8374 return var;
8375 }
8376 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
8377 val* nitc___nitc__SeparateCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
8378 val* var /* : RuntimeVariable */;
8379 val* var_a /* var a: MAttribute */;
8380 val* var_recv /* var recv: RuntimeVariable */;
8381 val* var1 /* : MClassType */;
8382 val* var2 /* : RuntimeVariable */;
8383 val* var_res /* var res: RuntimeVariable */;
8384 val* var3 /* : MPropDef */;
8385 val* var5 /* : MPropDef */;
8386 val* var6 /* : nullable MType */;
8387 val* var8 /* : nullable MType */;
8388 val* var_mtype /* var mtype: MType */;
8389 val* var9 /* : MPropDef */;
8390 val* var11 /* : MPropDef */;
8391 val* var12 /* : MClassDef */;
8392 val* var14 /* : MClassDef */;
8393 val* var_intromclassdef /* var intromclassdef: MClassDef */;
8394 val* var15 /* : MClassType */;
8395 val* var17 /* : MClassType */;
8396 val* var18 /* : MClassType */;
8397 val* var20 /* : MClassType */;
8398 val* var21 /* : MModule */;
8399 val* var23 /* : MModule */;
8400 val* var24 /* : MType */;
8401 short int var25 /* : Bool */;
8402 int cltype;
8403 int idtype;
8404 val* var26 /* : NativeArray[String] */;
8405 static val* varonce;
8406 static val* varonce27;
8407 val* var28 /* : String */;
8408 char* var29 /* : NativeString */;
8409 val* var30 /* : String */;
8410 static val* varonce31;
8411 val* var32 /* : String */;
8412 char* var33 /* : NativeString */;
8413 val* var34 /* : String */;
8414 static val* varonce35;
8415 val* var36 /* : String */;
8416 char* var37 /* : NativeString */;
8417 val* var38 /* : String */;
8418 val* var39 /* : String */;
8419 val* var40 /* : String */;
8420 val* var41 /* : String */;
8421 val* var42 /* : String */;
8422 val* var43 /* : String */;
8423 val* var44 /* : AbstractCompiler */;
8424 val* var46 /* : AbstractCompiler */;
8425 val* var47 /* : ModelBuilder */;
8426 val* var49 /* : ModelBuilder */;
8427 val* var50 /* : ToolContext */;
8428 val* var52 /* : ToolContext */;
8429 val* var53 /* : OptionBool */;
8430 val* var55 /* : OptionBool */;
8431 val* var56 /* : nullable Object */;
8432 val* var58 /* : nullable Object */;
8433 short int var59 /* : Bool */;
8434 val* var61 /* : NativeArray[String] */;
8435 static val* varonce60;
8436 static val* varonce62;
8437 val* var63 /* : String */;
8438 char* var64 /* : NativeString */;
8439 val* var65 /* : String */;
8440 static val* varonce66;
8441 val* var67 /* : String */;
8442 char* var68 /* : NativeString */;
8443 val* var69 /* : String */;
8444 static val* varonce70;
8445 val* var71 /* : String */;
8446 char* var72 /* : NativeString */;
8447 val* var73 /* : String */;
8448 static val* varonce74;
8449 val* var75 /* : String */;
8450 char* var76 /* : NativeString */;
8451 val* var77 /* : String */;
8452 static val* varonce78;
8453 val* var79 /* : String */;
8454 char* var80 /* : NativeString */;
8455 val* var81 /* : String */;
8456 val* var82 /* : String */;
8457 val* var83 /* : String */;
8458 val* var84 /* : String */;
8459 val* var85 /* : String */;
8460 val* var86 /* : String */;
8461 val* var87 /* : String */;
8462 short int var88 /* : Bool */;
8463 short int var89 /* : Bool */;
8464 short int var90 /* : Bool */;
8465 short int var_ /* var : Bool */;
8466 short int var91 /* : Bool */;
8467 short int var93 /* : Bool */;
8468 short int var94 /* : Bool */;
8469 val* var96 /* : NativeArray[String] */;
8470 static val* varonce95;
8471 static val* varonce97;
8472 val* var98 /* : String */;
8473 char* var99 /* : NativeString */;
8474 val* var100 /* : String */;
8475 static val* varonce101;
8476 val* var102 /* : String */;
8477 char* var103 /* : NativeString */;
8478 val* var104 /* : String */;
8479 static val* varonce105;
8480 val* var106 /* : String */;
8481 char* var107 /* : NativeString */;
8482 val* var108 /* : String */;
8483 static val* varonce109;
8484 val* var110 /* : String */;
8485 char* var111 /* : NativeString */;
8486 val* var112 /* : String */;
8487 static val* varonce113;
8488 val* var114 /* : String */;
8489 char* var115 /* : NativeString */;
8490 val* var116 /* : String */;
8491 val* var117 /* : String */;
8492 val* var118 /* : String */;
8493 val* var119 /* : String */;
8494 val* var120 /* : String */;
8495 val* var121 /* : String */;
8496 val* var122 /* : String */;
8497 val* var124 /* : NativeArray[String] */;
8498 static val* varonce123;
8499 static val* varonce125;
8500 val* var126 /* : String */;
8501 char* var127 /* : NativeString */;
8502 val* var128 /* : String */;
8503 static val* varonce129;
8504 val* var130 /* : String */;
8505 char* var131 /* : NativeString */;
8506 val* var132 /* : String */;
8507 static val* varonce133;
8508 val* var134 /* : String */;
8509 char* var135 /* : NativeString */;
8510 val* var136 /* : String */;
8511 val* var137 /* : String */;
8512 val* var138 /* : String */;
8513 val* var139 /* : String */;
8514 val* var140 /* : String */;
8515 var_a = p0;
8516 var_recv = p1;
8517 {
8518 nitc___nitc__AbstractCompilerVisitor___check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on <self:SeparateCompilerVisitor>*/
8519 }
8520 {
8521 var1 = nitc___nitc__AbstractCompilerVisitor___bool_type(self);
8522 }
8523 {
8524 var2 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var1);
8525 }
8526 var_res = var2;
8527 {
8528 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
8529 var5 = var_a->attrs[COLOR_nitc__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
8530 if (unlikely(var5 == NULL)) {
8531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
8532 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1986);
8533 fatal_exit(1);
8534 }
8535 var3 = var5;
8536 RET_LABEL4:(void)0;
8537 }
8538 }
8539 {
8540 { /* Inline model#MAttributeDef#static_mtype (var3) on <var3:MPropDef(MAttributeDef)> */
8541 var8 = var3->attrs[COLOR_nitc__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var3:MPropDef(MAttributeDef)> */
8542 var6 = var8;
8543 RET_LABEL7:(void)0;
8544 }
8545 }
8546 if (unlikely(var6 == NULL)) {
8547 PRINT_ERROR("Runtime error: %s", "Cast failed");
8548 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1607);
8549 fatal_exit(1);
8550 }
8551 var_mtype = var6;
8552 {
8553 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
8554 var11 = var_a->attrs[COLOR_nitc__model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
8555 if (unlikely(var11 == NULL)) {
8556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
8557 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1986);
8558 fatal_exit(1);
8559 }
8560 var9 = var11;
8561 RET_LABEL10:(void)0;
8562 }
8563 }
8564 {
8565 { /* Inline model#MPropDef#mclassdef (var9) on <var9:MPropDef(MAttributeDef)> */
8566 var14 = var9->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var9:MPropDef(MAttributeDef)> */
8567 if (unlikely(var14 == NULL)) {
8568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8569 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2227);
8570 fatal_exit(1);
8571 }
8572 var12 = var14;
8573 RET_LABEL13:(void)0;
8574 }
8575 }
8576 var_intromclassdef = var12;
8577 {
8578 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
8579 var17 = var_intromclassdef->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
8580 if (unlikely(var17 == NULL)) {
8581 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8582 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
8583 fatal_exit(1);
8584 }
8585 var15 = var17;
8586 RET_LABEL16:(void)0;
8587 }
8588 }
8589 {
8590 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
8591 var20 = var_intromclassdef->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
8592 if (unlikely(var20 == NULL)) {
8593 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8594 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 579);
8595 fatal_exit(1);
8596 }
8597 var18 = var20;
8598 RET_LABEL19:(void)0;
8599 }
8600 }
8601 {
8602 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
8603 var23 = var_intromclassdef->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
8604 if (unlikely(var23 == NULL)) {
8605 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8606 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 573);
8607 fatal_exit(1);
8608 }
8609 var21 = var23;
8610 RET_LABEL22:(void)0;
8611 }
8612 }
8613 {
8614 var24 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nitc__model__MType__resolve_for]))(var_mtype, var15, var18, var21, 1); /* resolve_for on <var_mtype:MType>*/
8615 }
8616 var_mtype = var24;
8617 /* <var_mtype:MType> isa MNullableType */
8618 cltype = type_nitc__MNullableType.color;
8619 idtype = type_nitc__MNullableType.id;
8620 if(cltype >= var_mtype->type->table_size) {
8621 var25 = 0;
8622 } else {
8623 var25 = var_mtype->type->type_table[cltype] == idtype;
8624 }
8625 if (var25){
8626 if (unlikely(varonce==NULL)) {
8627 var26 = NEW_core__NativeArray(6l, &type_core__NativeArray__core__String);
8628 if (likely(varonce27!=NULL)) {
8629 var28 = varonce27;
8630 } else {
8631 var29 = " = 1; /* easy isset: ";
8632 var30 = core__flat___NativeString___to_s_full(var29, 21l, 21l);
8633 var28 = var30;
8634 varonce27 = var28;
8635 }
8636 ((struct instance_core__NativeArray*)var26)->values[1]=var28;
8637 if (likely(varonce31!=NULL)) {
8638 var32 = varonce31;
8639 } else {
8640 var33 = " on ";
8641 var34 = core__flat___NativeString___to_s_full(var33, 4l, 4l);
8642 var32 = var34;
8643 varonce31 = var32;
8644 }
8645 ((struct instance_core__NativeArray*)var26)->values[3]=var32;
8646 if (likely(varonce35!=NULL)) {
8647 var36 = varonce35;
8648 } else {
8649 var37 = " */";
8650 var38 = core__flat___NativeString___to_s_full(var37, 3l, 3l);
8651 var36 = var38;
8652 varonce35 = var36;
8653 }
8654 ((struct instance_core__NativeArray*)var26)->values[5]=var36;
8655 } else {
8656 var26 = varonce;
8657 varonce = NULL;
8658 }
8659 {
8660 var39 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
8661 }
8662 ((struct instance_core__NativeArray*)var26)->values[0]=var39;
8663 {
8664 var40 = ((val*(*)(val* self))(var_a->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_a); /* to_s on <var_a:MAttribute>*/
8665 }
8666 ((struct instance_core__NativeArray*)var26)->values[2]=var40;
8667 {
8668 var41 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_recv);
8669 }
8670 ((struct instance_core__NativeArray*)var26)->values[4]=var41;
8671 {
8672 var42 = ((val*(*)(val* self))(var26->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var26); /* native_to_s on <var26:NativeArray[String]>*/
8673 }
8674 varonce = var26;
8675 {
8676 nitc___nitc__AbstractCompilerVisitor___add(self, var42); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8677 }
8678 var = var_res;
8679 goto RET_LABEL;
8680 } else {
8681 }
8682 {
8683 var43 = nitc__separate_compiler___MEntity___const_color(var_a);
8684 }
8685 {
8686 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var43); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
8687 }
8688 {
8689 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8690 var46 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8691 if (unlikely(var46 == NULL)) {
8692 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8693 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1133);
8694 fatal_exit(1);
8695 }
8696 var44 = var46;
8697 RET_LABEL45:(void)0;
8698 }
8699 }
8700 {
8701 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var44) on <var44:AbstractCompiler(SeparateCompiler)> */
8702 var49 = var44->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var44:AbstractCompiler(SeparateCompiler)> */
8703 if (unlikely(var49 == NULL)) {
8704 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8705 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 538);
8706 fatal_exit(1);
8707 }
8708 var47 = var49;
8709 RET_LABEL48:(void)0;
8710 }
8711 }
8712 {
8713 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var47) on <var47:ModelBuilder> */
8714 var52 = var47->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var47:ModelBuilder> */
8715 if (unlikely(var52 == NULL)) {
8716 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8717 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
8718 fatal_exit(1);
8719 }
8720 var50 = var52;
8721 RET_LABEL51:(void)0;
8722 }
8723 }
8724 {
8725 { /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var50) on <var50:ToolContext> */
8726 var55 = var50->attrs[COLOR_nitc__separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var50:ToolContext> */
8727 if (unlikely(var55 == NULL)) {
8728 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
8729 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 28);
8730 fatal_exit(1);
8731 }
8732 var53 = var55;
8733 RET_LABEL54:(void)0;
8734 }
8735 }
8736 {
8737 { /* Inline opts#Option#value (var53) on <var53:OptionBool> */
8738 var58 = var53->attrs[COLOR_opts__Option___value].val; /* _value on <var53:OptionBool> */
8739 var56 = var58;
8740 RET_LABEL57:(void)0;
8741 }
8742 }
8743 var59 = (short int)((long)(var56)>>2);
8744 if (var59){
8745 if (unlikely(varonce60==NULL)) {
8746 var61 = NEW_core__NativeArray(10l, &type_core__NativeArray__core__String);
8747 if (likely(varonce62!=NULL)) {
8748 var63 = varonce62;
8749 } else {
8750 var64 = " = ";
8751 var65 = core__flat___NativeString___to_s_full(var64, 3l, 3l);
8752 var63 = var65;
8753 varonce62 = var63;
8754 }
8755 ((struct instance_core__NativeArray*)var61)->values[1]=var63;
8756 if (likely(varonce66!=NULL)) {
8757 var67 = varonce66;
8758 } else {
8759 var68 = "->attrs[";
8760 var69 = core__flat___NativeString___to_s_full(var68, 8l, 8l);
8761 var67 = var69;
8762 varonce66 = var67;
8763 }
8764 ((struct instance_core__NativeArray*)var61)->values[3]=var67;
8765 if (likely(varonce70!=NULL)) {
8766 var71 = varonce70;
8767 } else {
8768 var72 = "] != NULL; /* ";
8769 var73 = core__flat___NativeString___to_s_full(var72, 14l, 14l);
8770 var71 = var73;
8771 varonce70 = var71;
8772 }
8773 ((struct instance_core__NativeArray*)var61)->values[5]=var71;
8774 if (likely(varonce74!=NULL)) {
8775 var75 = varonce74;
8776 } else {
8777 var76 = " on ";
8778 var77 = core__flat___NativeString___to_s_full(var76, 4l, 4l);
8779 var75 = var77;
8780 varonce74 = var75;
8781 }
8782 ((struct instance_core__NativeArray*)var61)->values[7]=var75;
8783 if (likely(varonce78!=NULL)) {
8784 var79 = varonce78;
8785 } else {
8786 var80 = "*/";
8787 var81 = core__flat___NativeString___to_s_full(var80, 2l, 2l);
8788 var79 = var81;
8789 varonce78 = var79;
8790 }
8791 ((struct instance_core__NativeArray*)var61)->values[9]=var79;
8792 } else {
8793 var61 = varonce60;
8794 varonce60 = NULL;
8795 }
8796 {
8797 var82 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
8798 }
8799 ((struct instance_core__NativeArray*)var61)->values[0]=var82;
8800 {
8801 var83 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv); /* to_s on <var_recv:RuntimeVariable>*/
8802 }
8803 ((struct instance_core__NativeArray*)var61)->values[2]=var83;
8804 {
8805 var84 = nitc__separate_compiler___MEntity___const_color(var_a);
8806 }
8807 ((struct instance_core__NativeArray*)var61)->values[4]=var84;
8808 {
8809 var85 = ((val*(*)(val* self))(var_a->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_a); /* to_s on <var_a:MAttribute>*/
8810 }
8811 ((struct instance_core__NativeArray*)var61)->values[6]=var85;
8812 {
8813 var86 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_recv);
8814 }
8815 ((struct instance_core__NativeArray*)var61)->values[8]=var86;
8816 {
8817 var87 = ((val*(*)(val* self))(var61->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var61); /* native_to_s on <var61:NativeArray[String]>*/
8818 }
8819 varonce60 = var61;
8820 {
8821 nitc___nitc__AbstractCompilerVisitor___add(self, var87); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8822 }
8823 } else {
8824 {
8825 var89 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var_mtype); /* is_c_primitive on <var_mtype:MType>*/
8826 }
8827 var90 = !var89;
8828 var_ = var90;
8829 if (var90){
8830 {
8831 { /* Inline separate_compiler#MType#is_tagged (var_mtype) on <var_mtype:MType> */
8832 var93 = var_mtype->attrs[COLOR_nitc__separate_compiler__MType___is_tagged].s; /* _is_tagged on <var_mtype:MType> */
8833 var91 = var93;
8834 RET_LABEL92:(void)0;
8835 }
8836 }
8837 var94 = !var91;
8838 var88 = var94;
8839 } else {
8840 var88 = var_;
8841 }
8842 if (var88){
8843 if (unlikely(varonce95==NULL)) {
8844 var96 = NEW_core__NativeArray(10l, &type_core__NativeArray__core__String);
8845 if (likely(varonce97!=NULL)) {
8846 var98 = varonce97;
8847 } else {
8848 var99 = " = ";
8849 var100 = core__flat___NativeString___to_s_full(var99, 3l, 3l);
8850 var98 = var100;
8851 varonce97 = var98;
8852 }
8853 ((struct instance_core__NativeArray*)var96)->values[1]=var98;
8854 if (likely(varonce101!=NULL)) {
8855 var102 = varonce101;
8856 } else {
8857 var103 = "->attrs[";
8858 var104 = core__flat___NativeString___to_s_full(var103, 8l, 8l);
8859 var102 = var104;
8860 varonce101 = var102;
8861 }
8862 ((struct instance_core__NativeArray*)var96)->values[3]=var102;
8863 if (likely(varonce105!=NULL)) {
8864 var106 = varonce105;
8865 } else {
8866 var107 = "].val != NULL; /* ";
8867 var108 = core__flat___NativeString___to_s_full(var107, 18l, 18l);
8868 var106 = var108;
8869 varonce105 = var106;
8870 }
8871 ((struct instance_core__NativeArray*)var96)->values[5]=var106;
8872 if (likely(varonce109!=NULL)) {
8873 var110 = varonce109;
8874 } else {
8875 var111 = " on ";
8876 var112 = core__flat___NativeString___to_s_full(var111, 4l, 4l);
8877 var110 = var112;
8878 varonce109 = var110;
8879 }
8880 ((struct instance_core__NativeArray*)var96)->values[7]=var110;
8881 if (likely(varonce113!=NULL)) {
8882 var114 = varonce113;
8883 } else {
8884 var115 = " */";
8885 var116 = core__flat___NativeString___to_s_full(var115, 3l, 3l);
8886 var114 = var116;
8887 varonce113 = var114;
8888 }
8889 ((struct instance_core__NativeArray*)var96)->values[9]=var114;
8890 } else {
8891 var96 = varonce95;
8892 varonce95 = NULL;
8893 }
8894 {
8895 var117 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
8896 }
8897 ((struct instance_core__NativeArray*)var96)->values[0]=var117;
8898 {
8899 var118 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv); /* to_s on <var_recv:RuntimeVariable>*/
8900 }
8901 ((struct instance_core__NativeArray*)var96)->values[2]=var118;
8902 {
8903 var119 = nitc__separate_compiler___MEntity___const_color(var_a);
8904 }
8905 ((struct instance_core__NativeArray*)var96)->values[4]=var119;
8906 {
8907 var120 = ((val*(*)(val* self))(var_a->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_a); /* to_s on <var_a:MAttribute>*/
8908 }
8909 ((struct instance_core__NativeArray*)var96)->values[6]=var120;
8910 {
8911 var121 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_recv);
8912 }
8913 ((struct instance_core__NativeArray*)var96)->values[8]=var121;
8914 {
8915 var122 = ((val*(*)(val* self))(var96->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var96); /* native_to_s on <var96:NativeArray[String]>*/
8916 }
8917 varonce95 = var96;
8918 {
8919 nitc___nitc__AbstractCompilerVisitor___add(self, var122); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8920 }
8921 } else {
8922 if (unlikely(varonce123==NULL)) {
8923 var124 = NEW_core__NativeArray(6l, &type_core__NativeArray__core__String);
8924 if (likely(varonce125!=NULL)) {
8925 var126 = varonce125;
8926 } else {
8927 var127 = " = 1; /* NOT YET IMPLEMENTED: isset of primitives: ";
8928 var128 = core__flat___NativeString___to_s_full(var127, 51l, 51l);
8929 var126 = var128;
8930 varonce125 = var126;
8931 }
8932 ((struct instance_core__NativeArray*)var124)->values[1]=var126;
8933 if (likely(varonce129!=NULL)) {
8934 var130 = varonce129;
8935 } else {
8936 var131 = " on ";
8937 var132 = core__flat___NativeString___to_s_full(var131, 4l, 4l);
8938 var130 = var132;
8939 varonce129 = var130;
8940 }
8941 ((struct instance_core__NativeArray*)var124)->values[3]=var130;
8942 if (likely(varonce133!=NULL)) {
8943 var134 = varonce133;
8944 } else {
8945 var135 = " */";
8946 var136 = core__flat___NativeString___to_s_full(var135, 3l, 3l);
8947 var134 = var136;
8948 varonce133 = var134;
8949 }
8950 ((struct instance_core__NativeArray*)var124)->values[5]=var134;
8951 } else {
8952 var124 = varonce123;
8953 varonce123 = NULL;
8954 }
8955 {
8956 var137 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
8957 }
8958 ((struct instance_core__NativeArray*)var124)->values[0]=var137;
8959 {
8960 var138 = ((val*(*)(val* self))(var_a->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_a); /* to_s on <var_a:MAttribute>*/
8961 }
8962 ((struct instance_core__NativeArray*)var124)->values[2]=var138;
8963 {
8964 var139 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_recv);
8965 }
8966 ((struct instance_core__NativeArray*)var124)->values[4]=var139;
8967 {
8968 var140 = ((val*(*)(val* self))(var124->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var124); /* native_to_s on <var124:NativeArray[String]>*/
8969 }
8970 varonce123 = var124;
8971 {
8972 nitc___nitc__AbstractCompilerVisitor___add(self, var140); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8973 }
8974 }
8975 }
8976 var = var_res;
8977 goto RET_LABEL;
8978 RET_LABEL:;
8979 return var;
8980 }