Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / nitc__separate_erasure_compiler.sep.2.c
1 #include "nitc__separate_erasure_compiler.sep.0.h"
2 /* method separate_erasure_compiler$SeparateErasureCompiler$display_sizes for (self: SeparateErasureCompiler) */
3 void nitc___nitc__SeparateErasureCompiler___nitc__separate_compiler__SeparateCompiler__display_sizes(val* self) {
4 val* var /* : Sys */;
5 static val* varonce;
6 val* var1 /* : String */;
7 char* var2 /* : CString */;
8 val* var3 /* : String */;
9 val* var4 /* : nullable Int */;
10 val* var5 /* : nullable Int */;
11 val* var6 /* : nullable Bool */;
12 val* var7 /* : nullable Bool */;
13 val* var8 /* : Sys */;
14 static val* varonce9;
15 val* var10 /* : String */;
16 char* var11 /* : CString */;
17 val* var12 /* : String */;
18 val* var13 /* : nullable Int */;
19 val* var14 /* : nullable Int */;
20 val* var15 /* : nullable Bool */;
21 val* var16 /* : nullable Bool */;
22 long var_total /* var total: Int */;
23 long var_holes /* var holes: Int */;
24 val* var17 /* : Map[MClass, Array[nullable MClass]] */;
25 val* var19 /* : Map[MClass, Array[nullable MClass]] */;
26 val* var_ /* var : Map[MClass, Array[nullable MClass]] */;
27 val* var20 /* : MapIterator[nullable Object, nullable Object] */;
28 val* var_21 /* var : MapIterator[MClass, Array[nullable MClass]] */;
29 short int var22 /* : Bool */;
30 val* var23 /* : nullable Object */;
31 val* var_t /* var t: MClass */;
32 val* var24 /* : nullable Object */;
33 val* var_table /* var table: Array[nullable MClass] */;
34 long var25 /* : Int */;
35 long var27 /* : Int */;
36 long var28 /* : Int */;
37 short int var30 /* : Bool */;
38 int cltype;
39 int idtype;
40 const char* var_class_name;
41 long var31 /* : Int */;
42 val* var_32 /* var : Array[nullable MClass] */;
43 val* var33 /* : IndexedIterator[nullable Object] */;
44 val* var_34 /* var : IndexedIterator[nullable MClass] */;
45 short int var35 /* : Bool */;
46 val* var37 /* : nullable Object */;
47 val* var_e /* var e: nullable MClass */;
48 short int var38 /* : Bool */;
49 short int var39 /* : Bool */;
50 val* var_other /* var other: nullable Object */;
51 short int var41 /* : Bool */;
52 short int var43 /* : Bool */;
53 long var44 /* : Int */;
54 short int var46 /* : Bool */;
55 int cltype47;
56 int idtype48;
57 const char* var_class_name49;
58 long var50 /* : Int */;
59 val* var52 /* : Sys */;
60 val* var54 /* : NativeArray[String] */;
61 static val* varonce53;
62 static val* varonce55;
63 val* var56 /* : String */;
64 char* var57 /* : CString */;
65 val* var58 /* : String */;
66 val* var59 /* : nullable Int */;
67 val* var60 /* : nullable Int */;
68 val* var61 /* : nullable Bool */;
69 val* var62 /* : nullable Bool */;
70 static val* varonce63;
71 val* var64 /* : String */;
72 char* var65 /* : CString */;
73 val* var66 /* : String */;
74 val* var67 /* : nullable Int */;
75 val* var68 /* : nullable Int */;
76 val* var69 /* : nullable Bool */;
77 val* var70 /* : nullable Bool */;
78 val* var71 /* : String */;
79 val* var72 /* : String */;
80 val* var73 /* : String */;
81 val* var74 /* : Sys */;
82 static val* varonce75;
83 val* var76 /* : String */;
84 char* var77 /* : CString */;
85 val* var78 /* : String */;
86 val* var79 /* : nullable Int */;
87 val* var80 /* : nullable Int */;
88 val* var81 /* : nullable Bool */;
89 val* var82 /* : nullable Bool */;
90 val* var83 /* : Sys */;
91 static val* varonce84;
92 val* var85 /* : String */;
93 char* var86 /* : CString */;
94 val* var87 /* : String */;
95 val* var88 /* : nullable Int */;
96 val* var89 /* : nullable Int */;
97 val* var90 /* : nullable Bool */;
98 val* var91 /* : nullable Bool */;
99 val* var92 /* : Map[MClass, Array[nullable MPropDef]] */;
100 val* var94 /* : Map[MClass, Array[nullable MPropDef]] */;
101 val* var_95 /* var : Map[MClass, Array[nullable MPropDef]] */;
102 val* var96 /* : MapIterator[nullable Object, nullable Object] */;
103 val* var_97 /* var : MapIterator[MClass, Array[nullable MPropDef]] */;
104 short int var98 /* : Bool */;
105 val* var100 /* : nullable Object */;
106 val* var_t101 /* var t: MClass */;
107 val* var102 /* : nullable Object */;
108 val* var_table103 /* var table: Array[nullable MPropDef] */;
109 long var104 /* : Int */;
110 long var106 /* : Int */;
111 long var107 /* : Int */;
112 short int var109 /* : Bool */;
113 int cltype110;
114 int idtype111;
115 const char* var_class_name112;
116 long var113 /* : Int */;
117 val* var_114 /* var : Array[nullable MPropDef] */;
118 val* var115 /* : IndexedIterator[nullable Object] */;
119 val* var_116 /* var : IndexedIterator[nullable MPropDef] */;
120 short int var117 /* : Bool */;
121 val* var119 /* : nullable Object */;
122 val* var_e120 /* var e: nullable MPropDef */;
123 short int var121 /* : Bool */;
124 short int var122 /* : Bool */;
125 short int var124 /* : Bool */;
126 short int var126 /* : Bool */;
127 long var127 /* : Int */;
128 short int var129 /* : Bool */;
129 int cltype130;
130 int idtype131;
131 const char* var_class_name132;
132 long var133 /* : Int */;
133 val* var135 /* : Sys */;
134 val* var137 /* : NativeArray[String] */;
135 static val* varonce136;
136 static val* varonce138;
137 val* var139 /* : String */;
138 char* var140 /* : CString */;
139 val* var141 /* : String */;
140 val* var142 /* : nullable Int */;
141 val* var143 /* : nullable Int */;
142 val* var144 /* : nullable Bool */;
143 val* var145 /* : nullable Bool */;
144 static val* varonce146;
145 val* var147 /* : String */;
146 char* var148 /* : CString */;
147 val* var149 /* : String */;
148 val* var150 /* : nullable Int */;
149 val* var151 /* : nullable Int */;
150 val* var152 /* : nullable Bool */;
151 val* var153 /* : nullable Bool */;
152 val* var154 /* : String */;
153 val* var155 /* : String */;
154 val* var156 /* : String */;
155 val* var157 /* : Sys */;
156 static val* varonce158;
157 val* var159 /* : String */;
158 char* var160 /* : CString */;
159 val* var161 /* : String */;
160 val* var162 /* : nullable Int */;
161 val* var163 /* : nullable Int */;
162 val* var164 /* : nullable Bool */;
163 val* var165 /* : nullable Bool */;
164 val* var166 /* : Sys */;
165 static val* varonce167;
166 val* var168 /* : String */;
167 char* var169 /* : CString */;
168 val* var170 /* : String */;
169 val* var171 /* : nullable Int */;
170 val* var172 /* : nullable Int */;
171 val* var173 /* : nullable Bool */;
172 val* var174 /* : nullable Bool */;
173 val* var175 /* : Map[MClass, Array[nullable MPropDef]] */;
174 val* var177 /* : Map[MClass, Array[nullable MPropDef]] */;
175 val* var_178 /* var : Map[MClass, Array[nullable MPropDef]] */;
176 val* var179 /* : MapIterator[nullable Object, nullable Object] */;
177 val* var_180 /* var : MapIterator[MClass, Array[nullable MPropDef]] */;
178 short int var181 /* : Bool */;
179 val* var183 /* : nullable Object */;
180 val* var_t184 /* var t: MClass */;
181 val* var185 /* : nullable Object */;
182 val* var_table186 /* var table: Array[nullable MPropDef] */;
183 long var187 /* : Int */;
184 long var189 /* : Int */;
185 long var190 /* : Int */;
186 short int var192 /* : Bool */;
187 int cltype193;
188 int idtype194;
189 const char* var_class_name195;
190 long var196 /* : Int */;
191 val* var_197 /* var : Array[nullable MPropDef] */;
192 val* var198 /* : IndexedIterator[nullable Object] */;
193 val* var_199 /* var : IndexedIterator[nullable MPropDef] */;
194 short int var200 /* : Bool */;
195 val* var202 /* : nullable Object */;
196 val* var_e203 /* var e: nullable MPropDef */;
197 short int var204 /* : Bool */;
198 short int var205 /* : Bool */;
199 short int var207 /* : Bool */;
200 short int var209 /* : Bool */;
201 long var210 /* : Int */;
202 short int var212 /* : Bool */;
203 int cltype213;
204 int idtype214;
205 const char* var_class_name215;
206 long var216 /* : Int */;
207 val* var218 /* : Sys */;
208 val* var220 /* : NativeArray[String] */;
209 static val* varonce219;
210 static val* varonce221;
211 val* var222 /* : String */;
212 char* var223 /* : CString */;
213 val* var224 /* : String */;
214 val* var225 /* : nullable Int */;
215 val* var226 /* : nullable Int */;
216 val* var227 /* : nullable Bool */;
217 val* var228 /* : nullable Bool */;
218 static val* varonce229;
219 val* var230 /* : String */;
220 char* var231 /* : CString */;
221 val* var232 /* : String */;
222 val* var233 /* : nullable Int */;
223 val* var234 /* : nullable Int */;
224 val* var235 /* : nullable Bool */;
225 val* var236 /* : nullable Bool */;
226 val* var237 /* : String */;
227 val* var238 /* : String */;
228 val* var239 /* : String */;
229 val* var240 /* : Sys */;
230 static val* varonce241;
231 val* var242 /* : String */;
232 char* var243 /* : CString */;
233 val* var244 /* : String */;
234 val* var245 /* : nullable Int */;
235 val* var246 /* : nullable Int */;
236 val* var247 /* : nullable Bool */;
237 val* var248 /* : nullable Bool */;
238 val* var249 /* : Sys */;
239 static val* varonce250;
240 val* var251 /* : String */;
241 char* var252 /* : CString */;
242 val* var253 /* : String */;
243 val* var254 /* : nullable Int */;
244 val* var255 /* : nullable Int */;
245 val* var256 /* : nullable Bool */;
246 val* var257 /* : nullable Bool */;
247 val* var258 /* : Map[MClass, Array[nullable MProperty]] */;
248 val* var260 /* : Map[MClass, Array[nullable MProperty]] */;
249 val* var_261 /* var : Map[MClass, Array[nullable MProperty]] */;
250 val* var262 /* : MapIterator[nullable Object, nullable Object] */;
251 val* var_263 /* var : MapIterator[MClass, Array[nullable MProperty]] */;
252 short int var264 /* : Bool */;
253 val* var266 /* : nullable Object */;
254 val* var_t267 /* var t: MClass */;
255 val* var268 /* : nullable Object */;
256 val* var_table269 /* var table: Array[nullable MProperty] */;
257 long var270 /* : Int */;
258 long var272 /* : Int */;
259 long var273 /* : Int */;
260 short int var275 /* : Bool */;
261 int cltype276;
262 int idtype277;
263 const char* var_class_name278;
264 long var279 /* : Int */;
265 val* var_280 /* var : Array[nullable MProperty] */;
266 val* var281 /* : IndexedIterator[nullable Object] */;
267 val* var_282 /* var : IndexedIterator[nullable MProperty] */;
268 short int var283 /* : Bool */;
269 val* var285 /* : nullable Object */;
270 val* var_e286 /* var e: nullable MProperty */;
271 short int var287 /* : Bool */;
272 short int var288 /* : Bool */;
273 short int var290 /* : Bool */;
274 short int var292 /* : Bool */;
275 long var293 /* : Int */;
276 short int var295 /* : Bool */;
277 int cltype296;
278 int idtype297;
279 const char* var_class_name298;
280 long var299 /* : Int */;
281 val* var301 /* : Sys */;
282 val* var303 /* : NativeArray[String] */;
283 static val* varonce302;
284 static val* varonce304;
285 val* var305 /* : String */;
286 char* var306 /* : CString */;
287 val* var307 /* : String */;
288 val* var308 /* : nullable Int */;
289 val* var309 /* : nullable Int */;
290 val* var310 /* : nullable Bool */;
291 val* var311 /* : nullable Bool */;
292 static val* varonce312;
293 val* var313 /* : String */;
294 char* var314 /* : CString */;
295 val* var315 /* : String */;
296 val* var316 /* : nullable Int */;
297 val* var317 /* : nullable Int */;
298 val* var318 /* : nullable Bool */;
299 val* var319 /* : nullable Bool */;
300 val* var320 /* : String */;
301 val* var321 /* : String */;
302 val* var322 /* : String */;
303 var = glob_sys;
304 if (likely(varonce!=NULL)) {
305 var1 = varonce;
306 } else {
307 var2 = "# size of subtyping tables";
308 var4 = (val*)(26l<<2|1);
309 var5 = (val*)(26l<<2|1);
310 var6 = (val*)((long)(0)<<2|3);
311 var7 = (val*)((long)(0)<<2|3);
312 var3 = core__flat___CString___to_s_unsafe(var2, var4, var5, var6, var7);
313 var1 = var3;
314 varonce = var1;
315 }
316 {
317 core__file___Sys___print(var, var1); /* Direct call file$Sys$print on <var:Sys>*/
318 }
319 var8 = glob_sys;
320 if (likely(varonce9!=NULL)) {
321 var10 = varonce9;
322 } else {
323 var11 = "\ttotal \tholes";
324 var13 = (val*)(13l<<2|1);
325 var14 = (val*)(13l<<2|1);
326 var15 = (val*)((long)(0)<<2|3);
327 var16 = (val*)((long)(0)<<2|3);
328 var12 = core__flat___CString___to_s_unsafe(var11, var13, var14, var15, var16);
329 var10 = var12;
330 varonce9 = var10;
331 }
332 {
333 core__file___Sys___print(var8, var10); /* Direct call file$Sys$print on <var8:Sys>*/
334 }
335 var_total = 0l;
336 var_holes = 0l;
337 {
338 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$class_tables (self) on <self:SeparateErasureCompiler> */
339 var19 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___class_tables].val; /* _class_tables on <self:SeparateErasureCompiler> */
340 if (unlikely(var19 == NULL)) {
341 if(catchStack.cursor >= 0){
342 longjmp(catchStack.envs[catchStack.cursor], 1);
343 }
344 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
345 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 427);
346 fatal_exit(1);
347 }
348 var17 = var19;
349 RET_LABEL18:(void)0;
350 }
351 }
352 var_ = var17;
353 {
354 var20 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_); /* iterator on <var_:Map[MClass, Array[nullable MClass]]>*/
355 }
356 var_21 = var20;
357 for(;;) {
358 {
359 var22 = ((short int(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_21); /* is_ok on <var_21:MapIterator[MClass, Array[nullable MClass]]>*/
360 }
361 if (var22){
362 } else {
363 goto BREAK_label;
364 }
365 {
366 var23 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_21); /* key on <var_21:MapIterator[MClass, Array[nullable MClass]]>*/
367 }
368 var_t = var23;
369 {
370 var24 = ((val*(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_21); /* item on <var_21:MapIterator[MClass, Array[nullable MClass]]>*/
371 }
372 var_table = var24;
373 {
374 { /* Inline array$AbstractArrayRead$length (var_table) on <var_table:Array[nullable MClass]> */
375 var27 = var_table->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MClass]> */
376 var25 = var27;
377 RET_LABEL26:(void)0;
378 }
379 }
380 {
381 { /* Inline kernel$Int$+ (var_total,var25) on <var_total:Int> */
382 /* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
383 /* <var25:Int> isa OTHER */
384 var30 = 1; /* easy <var25:Int> isa OTHER*/
385 if (unlikely(!var30)) {
386 var_class_name = type_core__Int.name;
387 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
388 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
389 fatal_exit(1);
390 }
391 var31 = var_total + var25;
392 var28 = var31;
393 goto RET_LABEL29;
394 RET_LABEL29:(void)0;
395 }
396 }
397 var_total = var28;
398 var_32 = var_table;
399 {
400 var33 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_32);
401 }
402 var_34 = var33;
403 for(;;) {
404 {
405 var35 = ((short int(*)(val* self))((((long)var_34&3)?class_info[((long)var_34&3)]:var_34->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_34); /* is_ok on <var_34:IndexedIterator[nullable MClass]>*/
406 }
407 if (var35){
408 } else {
409 goto BREAK_label36;
410 }
411 {
412 var37 = ((val*(*)(val* self))((((long)var_34&3)?class_info[((long)var_34&3)]:var_34->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_34); /* item on <var_34:IndexedIterator[nullable MClass]>*/
413 }
414 var_e = var37;
415 if (var_e == NULL) {
416 var38 = 1; /* is null */
417 } else {
418 var38 = 0; /* arg is null but recv is not */
419 }
420 if (0) {
421 { /* Inline kernel$Object$== (var_e,((val*)NULL)) on <var_e:nullable MClass> */
422 var_other = ((val*)NULL);
423 {
424 { /* Inline kernel$Object$is_same_instance (var_e,var_other) on <var_e:nullable MClass(MClass)> */
425 var43 = var_e == var_other;
426 var41 = var43;
427 goto RET_LABEL42;
428 RET_LABEL42:(void)0;
429 }
430 }
431 var39 = var41;
432 goto RET_LABEL40;
433 RET_LABEL40:(void)0;
434 }
435 var38 = var39;
436 }
437 if (var38){
438 {
439 { /* Inline kernel$Int$+ (var_holes,1l) on <var_holes:Int> */
440 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
441 /* <1l:Int> isa OTHER */
442 var46 = 1; /* easy <1l:Int> isa OTHER*/
443 if (unlikely(!var46)) {
444 var_class_name49 = type_core__Int.name;
445 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
446 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
447 fatal_exit(1);
448 }
449 var50 = var_holes + 1l;
450 var44 = var50;
451 goto RET_LABEL45;
452 RET_LABEL45:(void)0;
453 }
454 }
455 var_holes = var44;
456 } else {
457 }
458 {
459 ((void(*)(val* self))((((long)var_34&3)?class_info[((long)var_34&3)]:var_34->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_34); /* next on <var_34:IndexedIterator[nullable MClass]>*/
460 }
461 }
462 BREAK_label36: (void)0;
463 {
464 ((void(*)(val* self))((((long)var_34&3)?class_info[((long)var_34&3)]:var_34->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_34); /* finish on <var_34:IndexedIterator[nullable MClass]>*/
465 }
466 {
467 ((void(*)(val* self))((((long)var_21&3)?class_info[((long)var_21&3)]:var_21->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_21); /* next on <var_21:MapIterator[MClass, Array[nullable MClass]]>*/
468 }
469 }
470 BREAK_label: (void)0;
471 {
472 { /* Inline abstract_collection$MapIterator$finish (var_21) on <var_21:MapIterator[MClass, Array[nullable MClass]]> */
473 RET_LABEL51:(void)0;
474 }
475 }
476 var52 = glob_sys;
477 if (unlikely(varonce53==NULL)) {
478 var54 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
479 if (likely(varonce55!=NULL)) {
480 var56 = varonce55;
481 } else {
482 var57 = "\t";
483 var59 = (val*)(1l<<2|1);
484 var60 = (val*)(1l<<2|1);
485 var61 = (val*)((long)(0)<<2|3);
486 var62 = (val*)((long)(0)<<2|3);
487 var58 = core__flat___CString___to_s_unsafe(var57, var59, var60, var61, var62);
488 var56 = var58;
489 varonce55 = var56;
490 }
491 ((struct instance_core__NativeArray*)var54)->values[0]=var56;
492 if (likely(varonce63!=NULL)) {
493 var64 = varonce63;
494 } else {
495 var65 = "\t";
496 var67 = (val*)(1l<<2|1);
497 var68 = (val*)(1l<<2|1);
498 var69 = (val*)((long)(0)<<2|3);
499 var70 = (val*)((long)(0)<<2|3);
500 var66 = core__flat___CString___to_s_unsafe(var65, var67, var68, var69, var70);
501 var64 = var66;
502 varonce63 = var64;
503 }
504 ((struct instance_core__NativeArray*)var54)->values[2]=var64;
505 } else {
506 var54 = varonce53;
507 varonce53 = NULL;
508 }
509 var71 = core__flat___Int___core__abstract_text__Object__to_s(var_total);
510 ((struct instance_core__NativeArray*)var54)->values[1]=var71;
511 var72 = core__flat___Int___core__abstract_text__Object__to_s(var_holes);
512 ((struct instance_core__NativeArray*)var54)->values[3]=var72;
513 {
514 var73 = ((val*(*)(val* self))(var54->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var54); /* native_to_s on <var54:NativeArray[String]>*/
515 }
516 varonce53 = var54;
517 {
518 core__file___Sys___print(var52, var73); /* Direct call file$Sys$print on <var52:Sys>*/
519 }
520 var74 = glob_sys;
521 if (likely(varonce75!=NULL)) {
522 var76 = varonce75;
523 } else {
524 var77 = "# size of resolution tables";
525 var79 = (val*)(27l<<2|1);
526 var80 = (val*)(27l<<2|1);
527 var81 = (val*)((long)(0)<<2|3);
528 var82 = (val*)((long)(0)<<2|3);
529 var78 = core__flat___CString___to_s_unsafe(var77, var79, var80, var81, var82);
530 var76 = var78;
531 varonce75 = var76;
532 }
533 {
534 core__file___Sys___print(var74, var76); /* Direct call file$Sys$print on <var74:Sys>*/
535 }
536 var83 = glob_sys;
537 if (likely(varonce84!=NULL)) {
538 var85 = varonce84;
539 } else {
540 var86 = "\ttotal \tholes";
541 var88 = (val*)(13l<<2|1);
542 var89 = (val*)(13l<<2|1);
543 var90 = (val*)((long)(0)<<2|3);
544 var91 = (val*)((long)(0)<<2|3);
545 var87 = core__flat___CString___to_s_unsafe(var86, var88, var89, var90, var91);
546 var85 = var87;
547 varonce84 = var85;
548 }
549 {
550 core__file___Sys___print(var83, var85); /* Direct call file$Sys$print on <var83:Sys>*/
551 }
552 var_total = 0l;
553 var_holes = 0l;
554 {
555 { /* Inline separate_erasure_compiler$SeparateErasureCompiler$vt_tables (self) on <self:SeparateErasureCompiler> */
556 var94 = self->attrs[COLOR_nitc__separate_erasure_compiler__SeparateErasureCompiler___vt_tables].val; /* _vt_tables on <self:SeparateErasureCompiler> */
557 if (unlikely(var94 == NULL)) {
558 if(catchStack.cursor >= 0){
559 longjmp(catchStack.envs[catchStack.cursor], 1);
560 }
561 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
562 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 428);
563 fatal_exit(1);
564 }
565 var92 = var94;
566 RET_LABEL93:(void)0;
567 }
568 }
569 var_95 = var92;
570 {
571 var96 = ((val*(*)(val* self))((((long)var_95&3)?class_info[((long)var_95&3)]:var_95->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_95); /* iterator on <var_95:Map[MClass, Array[nullable MPropDef]]>*/
572 }
573 var_97 = var96;
574 for(;;) {
575 {
576 var98 = ((short int(*)(val* self))((((long)var_97&3)?class_info[((long)var_97&3)]:var_97->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_97); /* is_ok on <var_97:MapIterator[MClass, Array[nullable MPropDef]]>*/
577 }
578 if (var98){
579 } else {
580 goto BREAK_label99;
581 }
582 {
583 var100 = ((val*(*)(val* self))((((long)var_97&3)?class_info[((long)var_97&3)]:var_97->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_97); /* key on <var_97:MapIterator[MClass, Array[nullable MPropDef]]>*/
584 }
585 var_t101 = var100;
586 {
587 var102 = ((val*(*)(val* self))((((long)var_97&3)?class_info[((long)var_97&3)]:var_97->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_97); /* item on <var_97:MapIterator[MClass, Array[nullable MPropDef]]>*/
588 }
589 var_table103 = var102;
590 {
591 { /* Inline array$AbstractArrayRead$length (var_table103) on <var_table103:Array[nullable MPropDef]> */
592 var106 = var_table103->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table103:Array[nullable MPropDef]> */
593 var104 = var106;
594 RET_LABEL105:(void)0;
595 }
596 }
597 {
598 { /* Inline kernel$Int$+ (var_total,var104) on <var_total:Int> */
599 /* Covariant cast for argument 0 (i) <var104:Int> isa OTHER */
600 /* <var104:Int> isa OTHER */
601 var109 = 1; /* easy <var104:Int> isa OTHER*/
602 if (unlikely(!var109)) {
603 var_class_name112 = type_core__Int.name;
604 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name112);
605 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
606 fatal_exit(1);
607 }
608 var113 = var_total + var104;
609 var107 = var113;
610 goto RET_LABEL108;
611 RET_LABEL108:(void)0;
612 }
613 }
614 var_total = var107;
615 var_114 = var_table103;
616 {
617 var115 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_114);
618 }
619 var_116 = var115;
620 for(;;) {
621 {
622 var117 = ((short int(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_116); /* is_ok on <var_116:IndexedIterator[nullable MPropDef]>*/
623 }
624 if (var117){
625 } else {
626 goto BREAK_label118;
627 }
628 {
629 var119 = ((val*(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_116); /* item on <var_116:IndexedIterator[nullable MPropDef]>*/
630 }
631 var_e120 = var119;
632 if (var_e120 == NULL) {
633 var121 = 1; /* is null */
634 } else {
635 var121 = 0; /* arg is null but recv is not */
636 }
637 if (0) {
638 { /* Inline kernel$Object$== (var_e120,((val*)NULL)) on <var_e120:nullable MPropDef> */
639 var_other = ((val*)NULL);
640 {
641 { /* Inline kernel$Object$is_same_instance (var_e120,var_other) on <var_e120:nullable MPropDef(MPropDef)> */
642 var126 = var_e120 == var_other;
643 var124 = var126;
644 goto RET_LABEL125;
645 RET_LABEL125:(void)0;
646 }
647 }
648 var122 = var124;
649 goto RET_LABEL123;
650 RET_LABEL123:(void)0;
651 }
652 var121 = var122;
653 }
654 if (var121){
655 {
656 { /* Inline kernel$Int$+ (var_holes,1l) on <var_holes:Int> */
657 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
658 /* <1l:Int> isa OTHER */
659 var129 = 1; /* easy <1l:Int> isa OTHER*/
660 if (unlikely(!var129)) {
661 var_class_name132 = type_core__Int.name;
662 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name132);
663 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
664 fatal_exit(1);
665 }
666 var133 = var_holes + 1l;
667 var127 = var133;
668 goto RET_LABEL128;
669 RET_LABEL128:(void)0;
670 }
671 }
672 var_holes = var127;
673 } else {
674 }
675 {
676 ((void(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_116); /* next on <var_116:IndexedIterator[nullable MPropDef]>*/
677 }
678 }
679 BREAK_label118: (void)0;
680 {
681 ((void(*)(val* self))((((long)var_116&3)?class_info[((long)var_116&3)]:var_116->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_116); /* finish on <var_116:IndexedIterator[nullable MPropDef]>*/
682 }
683 {
684 ((void(*)(val* self))((((long)var_97&3)?class_info[((long)var_97&3)]:var_97->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_97); /* next on <var_97:MapIterator[MClass, Array[nullable MPropDef]]>*/
685 }
686 }
687 BREAK_label99: (void)0;
688 {
689 { /* Inline abstract_collection$MapIterator$finish (var_97) on <var_97:MapIterator[MClass, Array[nullable MPropDef]]> */
690 RET_LABEL134:(void)0;
691 }
692 }
693 var135 = glob_sys;
694 if (unlikely(varonce136==NULL)) {
695 var137 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
696 if (likely(varonce138!=NULL)) {
697 var139 = varonce138;
698 } else {
699 var140 = "\t";
700 var142 = (val*)(1l<<2|1);
701 var143 = (val*)(1l<<2|1);
702 var144 = (val*)((long)(0)<<2|3);
703 var145 = (val*)((long)(0)<<2|3);
704 var141 = core__flat___CString___to_s_unsafe(var140, var142, var143, var144, var145);
705 var139 = var141;
706 varonce138 = var139;
707 }
708 ((struct instance_core__NativeArray*)var137)->values[0]=var139;
709 if (likely(varonce146!=NULL)) {
710 var147 = varonce146;
711 } else {
712 var148 = "\t";
713 var150 = (val*)(1l<<2|1);
714 var151 = (val*)(1l<<2|1);
715 var152 = (val*)((long)(0)<<2|3);
716 var153 = (val*)((long)(0)<<2|3);
717 var149 = core__flat___CString___to_s_unsafe(var148, var150, var151, var152, var153);
718 var147 = var149;
719 varonce146 = var147;
720 }
721 ((struct instance_core__NativeArray*)var137)->values[2]=var147;
722 } else {
723 var137 = varonce136;
724 varonce136 = NULL;
725 }
726 var154 = core__flat___Int___core__abstract_text__Object__to_s(var_total);
727 ((struct instance_core__NativeArray*)var137)->values[1]=var154;
728 var155 = core__flat___Int___core__abstract_text__Object__to_s(var_holes);
729 ((struct instance_core__NativeArray*)var137)->values[3]=var155;
730 {
731 var156 = ((val*(*)(val* self))(var137->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var137); /* native_to_s on <var137:NativeArray[String]>*/
732 }
733 varonce136 = var137;
734 {
735 core__file___Sys___print(var135, var156); /* Direct call file$Sys$print on <var135:Sys>*/
736 }
737 var157 = glob_sys;
738 if (likely(varonce158!=NULL)) {
739 var159 = varonce158;
740 } else {
741 var160 = "# size of methods tables";
742 var162 = (val*)(24l<<2|1);
743 var163 = (val*)(24l<<2|1);
744 var164 = (val*)((long)(0)<<2|3);
745 var165 = (val*)((long)(0)<<2|3);
746 var161 = core__flat___CString___to_s_unsafe(var160, var162, var163, var164, var165);
747 var159 = var161;
748 varonce158 = var159;
749 }
750 {
751 core__file___Sys___print(var157, var159); /* Direct call file$Sys$print on <var157:Sys>*/
752 }
753 var166 = glob_sys;
754 if (likely(varonce167!=NULL)) {
755 var168 = varonce167;
756 } else {
757 var169 = "\ttotal \tholes";
758 var171 = (val*)(13l<<2|1);
759 var172 = (val*)(13l<<2|1);
760 var173 = (val*)((long)(0)<<2|3);
761 var174 = (val*)((long)(0)<<2|3);
762 var170 = core__flat___CString___to_s_unsafe(var169, var171, var172, var173, var174);
763 var168 = var170;
764 varonce167 = var168;
765 }
766 {
767 core__file___Sys___print(var166, var168); /* Direct call file$Sys$print on <var166:Sys>*/
768 }
769 var_total = 0l;
770 var_holes = 0l;
771 {
772 { /* Inline separate_compiler$SeparateCompiler$method_tables (self) on <self:SeparateErasureCompiler> */
773 var177 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateErasureCompiler> */
774 if (unlikely(var177 == NULL)) {
775 if(catchStack.cursor >= 0){
776 longjmp(catchStack.envs[catchStack.cursor], 1);
777 }
778 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
779 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1073);
780 fatal_exit(1);
781 }
782 var175 = var177;
783 RET_LABEL176:(void)0;
784 }
785 }
786 var_178 = var175;
787 {
788 var179 = ((val*(*)(val* self))((((long)var_178&3)?class_info[((long)var_178&3)]:var_178->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_178); /* iterator on <var_178:Map[MClass, Array[nullable MPropDef]]>*/
789 }
790 var_180 = var179;
791 for(;;) {
792 {
793 var181 = ((short int(*)(val* self))((((long)var_180&3)?class_info[((long)var_180&3)]:var_180->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_180); /* is_ok on <var_180:MapIterator[MClass, Array[nullable MPropDef]]>*/
794 }
795 if (var181){
796 } else {
797 goto BREAK_label182;
798 }
799 {
800 var183 = ((val*(*)(val* self))((((long)var_180&3)?class_info[((long)var_180&3)]:var_180->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_180); /* key on <var_180:MapIterator[MClass, Array[nullable MPropDef]]>*/
801 }
802 var_t184 = var183;
803 {
804 var185 = ((val*(*)(val* self))((((long)var_180&3)?class_info[((long)var_180&3)]:var_180->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_180); /* item on <var_180:MapIterator[MClass, Array[nullable MPropDef]]>*/
805 }
806 var_table186 = var185;
807 {
808 { /* Inline array$AbstractArrayRead$length (var_table186) on <var_table186:Array[nullable MPropDef]> */
809 var189 = var_table186->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table186:Array[nullable MPropDef]> */
810 var187 = var189;
811 RET_LABEL188:(void)0;
812 }
813 }
814 {
815 { /* Inline kernel$Int$+ (var_total,var187) on <var_total:Int> */
816 /* Covariant cast for argument 0 (i) <var187:Int> isa OTHER */
817 /* <var187:Int> isa OTHER */
818 var192 = 1; /* easy <var187:Int> isa OTHER*/
819 if (unlikely(!var192)) {
820 var_class_name195 = type_core__Int.name;
821 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name195);
822 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
823 fatal_exit(1);
824 }
825 var196 = var_total + var187;
826 var190 = var196;
827 goto RET_LABEL191;
828 RET_LABEL191:(void)0;
829 }
830 }
831 var_total = var190;
832 var_197 = var_table186;
833 {
834 var198 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_197);
835 }
836 var_199 = var198;
837 for(;;) {
838 {
839 var200 = ((short int(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_199); /* is_ok on <var_199:IndexedIterator[nullable MPropDef]>*/
840 }
841 if (var200){
842 } else {
843 goto BREAK_label201;
844 }
845 {
846 var202 = ((val*(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_199); /* item on <var_199:IndexedIterator[nullable MPropDef]>*/
847 }
848 var_e203 = var202;
849 if (var_e203 == NULL) {
850 var204 = 1; /* is null */
851 } else {
852 var204 = 0; /* arg is null but recv is not */
853 }
854 if (0) {
855 { /* Inline kernel$Object$== (var_e203,((val*)NULL)) on <var_e203:nullable MPropDef> */
856 var_other = ((val*)NULL);
857 {
858 { /* Inline kernel$Object$is_same_instance (var_e203,var_other) on <var_e203:nullable MPropDef(MPropDef)> */
859 var209 = var_e203 == var_other;
860 var207 = var209;
861 goto RET_LABEL208;
862 RET_LABEL208:(void)0;
863 }
864 }
865 var205 = var207;
866 goto RET_LABEL206;
867 RET_LABEL206:(void)0;
868 }
869 var204 = var205;
870 }
871 if (var204){
872 {
873 { /* Inline kernel$Int$+ (var_holes,1l) on <var_holes:Int> */
874 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
875 /* <1l:Int> isa OTHER */
876 var212 = 1; /* easy <1l:Int> isa OTHER*/
877 if (unlikely(!var212)) {
878 var_class_name215 = type_core__Int.name;
879 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name215);
880 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
881 fatal_exit(1);
882 }
883 var216 = var_holes + 1l;
884 var210 = var216;
885 goto RET_LABEL211;
886 RET_LABEL211:(void)0;
887 }
888 }
889 var_holes = var210;
890 } else {
891 }
892 {
893 ((void(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_199); /* next on <var_199:IndexedIterator[nullable MPropDef]>*/
894 }
895 }
896 BREAK_label201: (void)0;
897 {
898 ((void(*)(val* self))((((long)var_199&3)?class_info[((long)var_199&3)]:var_199->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_199); /* finish on <var_199:IndexedIterator[nullable MPropDef]>*/
899 }
900 {
901 ((void(*)(val* self))((((long)var_180&3)?class_info[((long)var_180&3)]:var_180->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_180); /* next on <var_180:MapIterator[MClass, Array[nullable MPropDef]]>*/
902 }
903 }
904 BREAK_label182: (void)0;
905 {
906 { /* Inline abstract_collection$MapIterator$finish (var_180) on <var_180:MapIterator[MClass, Array[nullable MPropDef]]> */
907 RET_LABEL217:(void)0;
908 }
909 }
910 var218 = glob_sys;
911 if (unlikely(varonce219==NULL)) {
912 var220 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
913 if (likely(varonce221!=NULL)) {
914 var222 = varonce221;
915 } else {
916 var223 = "\t";
917 var225 = (val*)(1l<<2|1);
918 var226 = (val*)(1l<<2|1);
919 var227 = (val*)((long)(0)<<2|3);
920 var228 = (val*)((long)(0)<<2|3);
921 var224 = core__flat___CString___to_s_unsafe(var223, var225, var226, var227, var228);
922 var222 = var224;
923 varonce221 = var222;
924 }
925 ((struct instance_core__NativeArray*)var220)->values[0]=var222;
926 if (likely(varonce229!=NULL)) {
927 var230 = varonce229;
928 } else {
929 var231 = "\t";
930 var233 = (val*)(1l<<2|1);
931 var234 = (val*)(1l<<2|1);
932 var235 = (val*)((long)(0)<<2|3);
933 var236 = (val*)((long)(0)<<2|3);
934 var232 = core__flat___CString___to_s_unsafe(var231, var233, var234, var235, var236);
935 var230 = var232;
936 varonce229 = var230;
937 }
938 ((struct instance_core__NativeArray*)var220)->values[2]=var230;
939 } else {
940 var220 = varonce219;
941 varonce219 = NULL;
942 }
943 var237 = core__flat___Int___core__abstract_text__Object__to_s(var_total);
944 ((struct instance_core__NativeArray*)var220)->values[1]=var237;
945 var238 = core__flat___Int___core__abstract_text__Object__to_s(var_holes);
946 ((struct instance_core__NativeArray*)var220)->values[3]=var238;
947 {
948 var239 = ((val*(*)(val* self))(var220->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var220); /* native_to_s on <var220:NativeArray[String]>*/
949 }
950 varonce219 = var220;
951 {
952 core__file___Sys___print(var218, var239); /* Direct call file$Sys$print on <var218:Sys>*/
953 }
954 var240 = glob_sys;
955 if (likely(varonce241!=NULL)) {
956 var242 = varonce241;
957 } else {
958 var243 = "# size of attributes tables";
959 var245 = (val*)(27l<<2|1);
960 var246 = (val*)(27l<<2|1);
961 var247 = (val*)((long)(0)<<2|3);
962 var248 = (val*)((long)(0)<<2|3);
963 var244 = core__flat___CString___to_s_unsafe(var243, var245, var246, var247, var248);
964 var242 = var244;
965 varonce241 = var242;
966 }
967 {
968 core__file___Sys___print(var240, var242); /* Direct call file$Sys$print on <var240:Sys>*/
969 }
970 var249 = glob_sys;
971 if (likely(varonce250!=NULL)) {
972 var251 = varonce250;
973 } else {
974 var252 = "\ttotal \tholes";
975 var254 = (val*)(13l<<2|1);
976 var255 = (val*)(13l<<2|1);
977 var256 = (val*)((long)(0)<<2|3);
978 var257 = (val*)((long)(0)<<2|3);
979 var253 = core__flat___CString___to_s_unsafe(var252, var254, var255, var256, var257);
980 var251 = var253;
981 varonce250 = var251;
982 }
983 {
984 core__file___Sys___print(var249, var251); /* Direct call file$Sys$print on <var249:Sys>*/
985 }
986 var_total = 0l;
987 var_holes = 0l;
988 {
989 { /* Inline separate_compiler$SeparateCompiler$attr_tables (self) on <self:SeparateErasureCompiler> */
990 var260 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateErasureCompiler> */
991 if (unlikely(var260 == NULL)) {
992 if(catchStack.cursor >= 0){
993 longjmp(catchStack.envs[catchStack.cursor], 1);
994 }
995 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
996 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1074);
997 fatal_exit(1);
998 }
999 var258 = var260;
1000 RET_LABEL259:(void)0;
1001 }
1002 }
1003 var_261 = var258;
1004 {
1005 var262 = ((val*(*)(val* self))((((long)var_261&3)?class_info[((long)var_261&3)]:var_261->class)->vft[COLOR_core__abstract_collection__MapRead__iterator]))(var_261); /* iterator on <var_261:Map[MClass, Array[nullable MProperty]]>*/
1006 }
1007 var_263 = var262;
1008 for(;;) {
1009 {
1010 var264 = ((short int(*)(val* self))((((long)var_263&3)?class_info[((long)var_263&3)]:var_263->class)->vft[COLOR_core__abstract_collection__MapIterator__is_ok]))(var_263); /* is_ok on <var_263:MapIterator[MClass, Array[nullable MProperty]]>*/
1011 }
1012 if (var264){
1013 } else {
1014 goto BREAK_label265;
1015 }
1016 {
1017 var266 = ((val*(*)(val* self))((((long)var_263&3)?class_info[((long)var_263&3)]:var_263->class)->vft[COLOR_core__abstract_collection__MapIterator__key]))(var_263); /* key on <var_263:MapIterator[MClass, Array[nullable MProperty]]>*/
1018 }
1019 var_t267 = var266;
1020 {
1021 var268 = ((val*(*)(val* self))((((long)var_263&3)?class_info[((long)var_263&3)]:var_263->class)->vft[COLOR_core__abstract_collection__MapIterator__item]))(var_263); /* item on <var_263:MapIterator[MClass, Array[nullable MProperty]]>*/
1022 }
1023 var_table269 = var268;
1024 {
1025 { /* Inline array$AbstractArrayRead$length (var_table269) on <var_table269:Array[nullable MProperty]> */
1026 var272 = var_table269->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_table269:Array[nullable MProperty]> */
1027 var270 = var272;
1028 RET_LABEL271:(void)0;
1029 }
1030 }
1031 {
1032 { /* Inline kernel$Int$+ (var_total,var270) on <var_total:Int> */
1033 /* Covariant cast for argument 0 (i) <var270:Int> isa OTHER */
1034 /* <var270:Int> isa OTHER */
1035 var275 = 1; /* easy <var270:Int> isa OTHER*/
1036 if (unlikely(!var275)) {
1037 var_class_name278 = type_core__Int.name;
1038 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name278);
1039 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1040 fatal_exit(1);
1041 }
1042 var279 = var_total + var270;
1043 var273 = var279;
1044 goto RET_LABEL274;
1045 RET_LABEL274:(void)0;
1046 }
1047 }
1048 var_total = var273;
1049 var_280 = var_table269;
1050 {
1051 var281 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_280);
1052 }
1053 var_282 = var281;
1054 for(;;) {
1055 {
1056 var283 = ((short int(*)(val* self))((((long)var_282&3)?class_info[((long)var_282&3)]:var_282->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_282); /* is_ok on <var_282:IndexedIterator[nullable MProperty]>*/
1057 }
1058 if (var283){
1059 } else {
1060 goto BREAK_label284;
1061 }
1062 {
1063 var285 = ((val*(*)(val* self))((((long)var_282&3)?class_info[((long)var_282&3)]:var_282->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_282); /* item on <var_282:IndexedIterator[nullable MProperty]>*/
1064 }
1065 var_e286 = var285;
1066 if (var_e286 == NULL) {
1067 var287 = 1; /* is null */
1068 } else {
1069 var287 = 0; /* arg is null but recv is not */
1070 }
1071 if (0) {
1072 { /* Inline kernel$Object$== (var_e286,((val*)NULL)) on <var_e286:nullable MProperty> */
1073 var_other = ((val*)NULL);
1074 {
1075 { /* Inline kernel$Object$is_same_instance (var_e286,var_other) on <var_e286:nullable MProperty(MProperty)> */
1076 var292 = var_e286 == var_other;
1077 var290 = var292;
1078 goto RET_LABEL291;
1079 RET_LABEL291:(void)0;
1080 }
1081 }
1082 var288 = var290;
1083 goto RET_LABEL289;
1084 RET_LABEL289:(void)0;
1085 }
1086 var287 = var288;
1087 }
1088 if (var287){
1089 {
1090 { /* Inline kernel$Int$+ (var_holes,1l) on <var_holes:Int> */
1091 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
1092 /* <1l:Int> isa OTHER */
1093 var295 = 1; /* easy <1l:Int> isa OTHER*/
1094 if (unlikely(!var295)) {
1095 var_class_name298 = type_core__Int.name;
1096 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name298);
1097 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
1098 fatal_exit(1);
1099 }
1100 var299 = var_holes + 1l;
1101 var293 = var299;
1102 goto RET_LABEL294;
1103 RET_LABEL294:(void)0;
1104 }
1105 }
1106 var_holes = var293;
1107 } else {
1108 }
1109 {
1110 ((void(*)(val* self))((((long)var_282&3)?class_info[((long)var_282&3)]:var_282->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_282); /* next on <var_282:IndexedIterator[nullable MProperty]>*/
1111 }
1112 }
1113 BREAK_label284: (void)0;
1114 {
1115 ((void(*)(val* self))((((long)var_282&3)?class_info[((long)var_282&3)]:var_282->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_282); /* finish on <var_282:IndexedIterator[nullable MProperty]>*/
1116 }
1117 {
1118 ((void(*)(val* self))((((long)var_263&3)?class_info[((long)var_263&3)]:var_263->class)->vft[COLOR_core__abstract_collection__MapIterator__next]))(var_263); /* next on <var_263:MapIterator[MClass, Array[nullable MProperty]]>*/
1119 }
1120 }
1121 BREAK_label265: (void)0;
1122 {
1123 { /* Inline abstract_collection$MapIterator$finish (var_263) on <var_263:MapIterator[MClass, Array[nullable MProperty]]> */
1124 RET_LABEL300:(void)0;
1125 }
1126 }
1127 var301 = glob_sys;
1128 if (unlikely(varonce302==NULL)) {
1129 var303 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
1130 if (likely(varonce304!=NULL)) {
1131 var305 = varonce304;
1132 } else {
1133 var306 = "\t";
1134 var308 = (val*)(1l<<2|1);
1135 var309 = (val*)(1l<<2|1);
1136 var310 = (val*)((long)(0)<<2|3);
1137 var311 = (val*)((long)(0)<<2|3);
1138 var307 = core__flat___CString___to_s_unsafe(var306, var308, var309, var310, var311);
1139 var305 = var307;
1140 varonce304 = var305;
1141 }
1142 ((struct instance_core__NativeArray*)var303)->values[0]=var305;
1143 if (likely(varonce312!=NULL)) {
1144 var313 = varonce312;
1145 } else {
1146 var314 = "\t";
1147 var316 = (val*)(1l<<2|1);
1148 var317 = (val*)(1l<<2|1);
1149 var318 = (val*)((long)(0)<<2|3);
1150 var319 = (val*)((long)(0)<<2|3);
1151 var315 = core__flat___CString___to_s_unsafe(var314, var316, var317, var318, var319);
1152 var313 = var315;
1153 varonce312 = var313;
1154 }
1155 ((struct instance_core__NativeArray*)var303)->values[2]=var313;
1156 } else {
1157 var303 = varonce302;
1158 varonce302 = NULL;
1159 }
1160 var320 = core__flat___Int___core__abstract_text__Object__to_s(var_total);
1161 ((struct instance_core__NativeArray*)var303)->values[1]=var320;
1162 var321 = core__flat___Int___core__abstract_text__Object__to_s(var_holes);
1163 ((struct instance_core__NativeArray*)var303)->values[3]=var321;
1164 {
1165 var322 = ((val*(*)(val* self))(var303->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var303); /* native_to_s on <var303:NativeArray[String]>*/
1166 }
1167 varonce302 = var303;
1168 {
1169 core__file___Sys___print(var301, var322); /* Direct call file$Sys$print on <var301:Sys>*/
1170 }
1171 RET_LABEL:;
1172 }
1173 /* method separate_erasure_compiler$SeparateErasureCompilerVisitor$compile_callsite for (self: SeparateErasureCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
1174 val* nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
1175 val* var /* : nullable RuntimeVariable */;
1176 val* var_callsite /* var callsite: CallSite */;
1177 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1178 val* var1 /* : nullable RuntimeVariable */;
1179 val* var_res /* var res: nullable RuntimeVariable */;
1180 short int var2 /* : Bool */;
1181 short int var3 /* : Bool */;
1182 short int var5 /* : Bool */;
1183 short int var_ /* var : Bool */;
1184 val* var6 /* : AbstractCompiler */;
1185 val* var8 /* : AbstractCompiler */;
1186 short int var9 /* : Bool */;
1187 int cltype;
1188 int idtype;
1189 const char* var_class_name;
1190 val* var10 /* : ModelBuilder */;
1191 val* var12 /* : ModelBuilder */;
1192 val* var13 /* : ToolContext */;
1193 val* var15 /* : ToolContext */;
1194 val* var16 /* : OptionBool */;
1195 val* var18 /* : OptionBool */;
1196 val* var19 /* : nullable Object */;
1197 val* var21 /* : nullable Object */;
1198 short int var22 /* : Bool */;
1199 short int var23 /* : Bool */;
1200 short int var24 /* : Bool */;
1201 short int var25 /* : Bool */;
1202 val* var_other /* var other: nullable Object */;
1203 short int var27 /* : Bool */;
1204 short int var28 /* : Bool */;
1205 val* var29 /* : MSignature */;
1206 val* var31 /* : MSignature */;
1207 val* var32 /* : nullable MType */;
1208 val* var34 /* : nullable MType */;
1209 val* var_mtype /* var mtype: nullable MType */;
1210 short int var35 /* : Bool */;
1211 short int var36 /* : Bool */;
1212 short int var38 /* : Bool */;
1213 short int var39 /* : Bool */;
1214 val* var40 /* : NativeArray[String] */;
1215 static val* varonce;
1216 static val* varonce41;
1217 val* var42 /* : String */;
1218 char* var43 /* : CString */;
1219 val* var44 /* : String */;
1220 val* var45 /* : nullable Int */;
1221 val* var46 /* : nullable Int */;
1222 val* var47 /* : nullable Bool */;
1223 val* var48 /* : nullable Bool */;
1224 static val* varonce49;
1225 val* var50 /* : String */;
1226 char* var51 /* : CString */;
1227 val* var52 /* : String */;
1228 val* var53 /* : nullable Int */;
1229 val* var54 /* : nullable Int */;
1230 val* var55 /* : nullable Bool */;
1231 val* var56 /* : nullable Bool */;
1232 static val* varonce57;
1233 val* var58 /* : String */;
1234 char* var59 /* : CString */;
1235 val* var60 /* : String */;
1236 val* var61 /* : nullable Int */;
1237 val* var62 /* : nullable Int */;
1238 val* var63 /* : nullable Bool */;
1239 val* var64 /* : nullable Bool */;
1240 val* var65 /* : String */;
1241 val* var66 /* : String */;
1242 val* var67 /* : String */;
1243 static val* varonce68;
1244 val* var69 /* : String */;
1245 char* var70 /* : CString */;
1246 val* var71 /* : String */;
1247 val* var72 /* : nullable Int */;
1248 val* var73 /* : nullable Int */;
1249 val* var74 /* : nullable Bool */;
1250 val* var75 /* : nullable Bool */;
1251 val* var76 /* : RuntimeVariable */;
1252 val* var_cond /* var cond: RuntimeVariable */;
1253 val* var78 /* : NativeArray[String] */;
1254 static val* varonce77;
1255 static val* varonce79;
1256 val* var80 /* : String */;
1257 char* var81 /* : CString */;
1258 val* var82 /* : String */;
1259 val* var83 /* : nullable Int */;
1260 val* var84 /* : nullable Int */;
1261 val* var85 /* : nullable Bool */;
1262 val* var86 /* : nullable Bool */;
1263 static val* varonce87;
1264 val* var88 /* : String */;
1265 char* var89 /* : CString */;
1266 val* var90 /* : String */;
1267 val* var91 /* : nullable Int */;
1268 val* var92 /* : nullable Int */;
1269 val* var93 /* : nullable Bool */;
1270 val* var94 /* : nullable Bool */;
1271 val* var95 /* : String */;
1272 val* var96 /* : String */;
1273 static val* varonce97;
1274 val* var98 /* : String */;
1275 char* var99 /* : CString */;
1276 val* var100 /* : String */;
1277 val* var101 /* : nullable Int */;
1278 val* var102 /* : nullable Int */;
1279 val* var103 /* : nullable Bool */;
1280 val* var104 /* : nullable Bool */;
1281 static val* varonce105;
1282 val* var106 /* : String */;
1283 char* var107 /* : CString */;
1284 val* var108 /* : String */;
1285 val* var109 /* : nullable Int */;
1286 val* var110 /* : nullable Int */;
1287 val* var111 /* : nullable Bool */;
1288 val* var112 /* : nullable Bool */;
1289 var_callsite = p0;
1290 var_arguments = p1;
1291 {
1292 var1 = ((val*(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__compile_callsite]))(self, p0, p1); /* compile_callsite on <self:SeparateErasureCompilerVisitor>*/
1293 }
1294 var_res = var1;
1295 {
1296 { /* Inline typing$CallSite$erasure_cast (var_callsite) on <var_callsite:CallSite> */
1297 var5 = var_callsite->attrs[COLOR_nitc__typing__CallSite___erasure_cast].s; /* _erasure_cast on <var_callsite:CallSite> */
1298 var3 = var5;
1299 RET_LABEL4:(void)0;
1300 }
1301 }
1302 var_ = var3;
1303 if (var3){
1304 {
1305 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
1306 var8 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
1307 if (unlikely(var8 == NULL)) {
1308 if(catchStack.cursor >= 0){
1309 longjmp(catchStack.envs[catchStack.cursor], 1);
1310 }
1311 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1312 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
1313 fatal_exit(1);
1314 }
1315 var6 = var8;
1316 RET_LABEL7:(void)0;
1317 }
1318 }
1319 /* <var6:AbstractCompiler(SeparateCompiler)> isa SeparateErasureCompiler */
1320 cltype = type_nitc__SeparateErasureCompiler.color;
1321 idtype = type_nitc__SeparateErasureCompiler.id;
1322 if(cltype >= var6->type->table_size) {
1323 var9 = 0;
1324 } else {
1325 var9 = var6->type->type_table[cltype] == idtype;
1326 }
1327 if (unlikely(!var9)) {
1328 var_class_name = var6 == NULL ? "null" : var6->type->name;
1329 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SeparateErasureCompiler", var_class_name);
1330 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 480);
1331 fatal_exit(1);
1332 }
1333 {
1334 { /* Inline abstract_compiler$AbstractCompiler$modelbuilder (var6) on <var6:AbstractCompiler(SeparateErasureCompiler)> */
1335 var12 = var6->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var6:AbstractCompiler(SeparateErasureCompiler)> */
1336 if (unlikely(var12 == NULL)) {
1337 if(catchStack.cursor >= 0){
1338 longjmp(catchStack.envs[catchStack.cursor], 1);
1339 }
1340 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1341 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
1342 fatal_exit(1);
1343 }
1344 var10 = var12;
1345 RET_LABEL11:(void)0;
1346 }
1347 }
1348 {
1349 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var10) on <var10:ModelBuilder> */
1350 var15 = var10->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var10:ModelBuilder> */
1351 if (unlikely(var15 == NULL)) {
1352 if(catchStack.cursor >= 0){
1353 longjmp(catchStack.envs[catchStack.cursor], 1);
1354 }
1355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1356 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
1357 fatal_exit(1);
1358 }
1359 var13 = var15;
1360 RET_LABEL14:(void)0;
1361 }
1362 }
1363 {
1364 { /* Inline separate_erasure_compiler$ToolContext$opt_no_check_erasure_cast (var13) on <var13:ToolContext> */
1365 var18 = var13->attrs[COLOR_nitc__separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast].val; /* _opt_no_check_erasure_cast on <var13:ToolContext> */
1366 if (unlikely(var18 == NULL)) {
1367 if(catchStack.cursor >= 0){
1368 longjmp(catchStack.envs[catchStack.cursor], 1);
1369 }
1370 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
1371 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 26);
1372 fatal_exit(1);
1373 }
1374 var16 = var18;
1375 RET_LABEL17:(void)0;
1376 }
1377 }
1378 {
1379 { /* Inline opts$Option$value (var16) on <var16:OptionBool> */
1380 var21 = var16->attrs[COLOR_opts__Option___value].val; /* _value on <var16:OptionBool> */
1381 var19 = var21;
1382 RET_LABEL20:(void)0;
1383 }
1384 }
1385 var22 = (short int)((long)(var19)>>2);
1386 var23 = !var22;
1387 var2 = var23;
1388 } else {
1389 var2 = var_;
1390 }
1391 if (var2){
1392 if (var_res == NULL) {
1393 var24 = 0; /* is null */
1394 } else {
1395 var24 = 1; /* arg is null and recv is not */
1396 }
1397 if (0) {
1398 { /* Inline kernel$Object$!= (var_res,((val*)NULL)) on <var_res:nullable RuntimeVariable> */
1399 var_other = ((val*)NULL);
1400 {
1401 var27 = ((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)>*/
1402 }
1403 var28 = !var27;
1404 var25 = var28;
1405 goto RET_LABEL26;
1406 RET_LABEL26:(void)0;
1407 }
1408 var24 = var25;
1409 }
1410 if (unlikely(!var24)) {
1411 if(catchStack.cursor >= 0){
1412 longjmp(catchStack.envs[catchStack.cursor], 1);
1413 }
1414 PRINT_ERROR("Runtime error: %s", "Assert failed");
1415 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 481);
1416 fatal_exit(1);
1417 }
1418 {
1419 { /* Inline typing$CallSite$msignature (var_callsite) on <var_callsite:CallSite> */
1420 var31 = var_callsite->attrs[COLOR_nitc__typing__CallSite___msignature].val; /* _msignature on <var_callsite:CallSite> */
1421 if (unlikely(var31 == NULL)) {
1422 if(catchStack.cursor >= 0){
1423 longjmp(catchStack.envs[catchStack.cursor], 1);
1424 }
1425 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
1426 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__typing, 663);
1427 fatal_exit(1);
1428 }
1429 var29 = var31;
1430 RET_LABEL30:(void)0;
1431 }
1432 }
1433 {
1434 { /* Inline model$MSignature$return_mtype (var29) on <var29:MSignature> */
1435 var34 = var29->attrs[COLOR_nitc__model__MSignature___return_mtype].val; /* _return_mtype on <var29:MSignature> */
1436 var32 = var34;
1437 RET_LABEL33:(void)0;
1438 }
1439 }
1440 var_mtype = var32;
1441 if (var_mtype == NULL) {
1442 var35 = 0; /* is null */
1443 } else {
1444 var35 = 1; /* arg is null and recv is not */
1445 }
1446 if (0) {
1447 { /* Inline kernel$Object$!= (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
1448 var_other = ((val*)NULL);
1449 {
1450 var38 = ((short int(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_mtype, var_other); /* == on <var_mtype:nullable MType(MType)>*/
1451 }
1452 var39 = !var38;
1453 var36 = var39;
1454 goto RET_LABEL37;
1455 RET_LABEL37:(void)0;
1456 }
1457 var35 = var36;
1458 }
1459 if (unlikely(!var35)) {
1460 if(catchStack.cursor >= 0){
1461 longjmp(catchStack.envs[catchStack.cursor], 1);
1462 }
1463 PRINT_ERROR("Runtime error: %s", "Assert failed");
1464 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 483);
1465 fatal_exit(1);
1466 }
1467 if (unlikely(varonce==NULL)) {
1468 var40 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
1469 if (likely(varonce41!=NULL)) {
1470 var42 = varonce41;
1471 } else {
1472 var43 = "/* Erasure cast for return ";
1473 var45 = (val*)(27l<<2|1);
1474 var46 = (val*)(27l<<2|1);
1475 var47 = (val*)((long)(0)<<2|3);
1476 var48 = (val*)((long)(0)<<2|3);
1477 var44 = core__flat___CString___to_s_unsafe(var43, var45, var46, var47, var48);
1478 var42 = var44;
1479 varonce41 = var42;
1480 }
1481 ((struct instance_core__NativeArray*)var40)->values[0]=var42;
1482 if (likely(varonce49!=NULL)) {
1483 var50 = varonce49;
1484 } else {
1485 var51 = " isa ";
1486 var53 = (val*)(5l<<2|1);
1487 var54 = (val*)(5l<<2|1);
1488 var55 = (val*)((long)(0)<<2|3);
1489 var56 = (val*)((long)(0)<<2|3);
1490 var52 = core__flat___CString___to_s_unsafe(var51, var53, var54, var55, var56);
1491 var50 = var52;
1492 varonce49 = var50;
1493 }
1494 ((struct instance_core__NativeArray*)var40)->values[2]=var50;
1495 if (likely(varonce57!=NULL)) {
1496 var58 = varonce57;
1497 } else {
1498 var59 = " */";
1499 var61 = (val*)(3l<<2|1);
1500 var62 = (val*)(3l<<2|1);
1501 var63 = (val*)((long)(0)<<2|3);
1502 var64 = (val*)((long)(0)<<2|3);
1503 var60 = core__flat___CString___to_s_unsafe(var59, var61, var62, var63, var64);
1504 var58 = var60;
1505 varonce57 = var58;
1506 }
1507 ((struct instance_core__NativeArray*)var40)->values[4]=var58;
1508 } else {
1509 var40 = varonce;
1510 varonce = NULL;
1511 }
1512 {
1513 var65 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/
1514 }
1515 ((struct instance_core__NativeArray*)var40)->values[1]=var65;
1516 {
1517 var66 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:nullable MType(MType)>*/
1518 }
1519 ((struct instance_core__NativeArray*)var40)->values[3]=var66;
1520 {
1521 var67 = ((val*(*)(val* self))(var40->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var40); /* native_to_s on <var40:NativeArray[String]>*/
1522 }
1523 varonce = var40;
1524 {
1525 nitc___nitc__AbstractCompilerVisitor___add(self, var67); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
1526 }
1527 if (likely(varonce68!=NULL)) {
1528 var69 = varonce68;
1529 } else {
1530 var70 = "erasure";
1531 var72 = (val*)(7l<<2|1);
1532 var73 = (val*)(7l<<2|1);
1533 var74 = (val*)((long)(0)<<2|3);
1534 var75 = (val*)((long)(0)<<2|3);
1535 var71 = core__flat___CString___to_s_unsafe(var70, var72, var73, var74, var75);
1536 var69 = var71;
1537 varonce68 = var69;
1538 }
1539 {
1540 var76 = nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__type_test(self, var_res, var_mtype, var69);
1541 }
1542 var_cond = var76;
1543 if (unlikely(varonce77==NULL)) {
1544 var78 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
1545 if (likely(varonce79!=NULL)) {
1546 var80 = varonce79;
1547 } else {
1548 var81 = "if (!";
1549 var83 = (val*)(5l<<2|1);
1550 var84 = (val*)(5l<<2|1);
1551 var85 = (val*)((long)(0)<<2|3);
1552 var86 = (val*)((long)(0)<<2|3);
1553 var82 = core__flat___CString___to_s_unsafe(var81, var83, var84, var85, var86);
1554 var80 = var82;
1555 varonce79 = var80;
1556 }
1557 ((struct instance_core__NativeArray*)var78)->values[0]=var80;
1558 if (likely(varonce87!=NULL)) {
1559 var88 = varonce87;
1560 } else {
1561 var89 = ") {";
1562 var91 = (val*)(3l<<2|1);
1563 var92 = (val*)(3l<<2|1);
1564 var93 = (val*)((long)(0)<<2|3);
1565 var94 = (val*)((long)(0)<<2|3);
1566 var90 = core__flat___CString___to_s_unsafe(var89, var91, var92, var93, var94);
1567 var88 = var90;
1568 varonce87 = var88;
1569 }
1570 ((struct instance_core__NativeArray*)var78)->values[2]=var88;
1571 } else {
1572 var78 = varonce77;
1573 varonce77 = NULL;
1574 }
1575 {
1576 var95 = ((val*(*)(val* self))(var_cond->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_cond); /* to_s on <var_cond:RuntimeVariable>*/
1577 }
1578 ((struct instance_core__NativeArray*)var78)->values[1]=var95;
1579 {
1580 var96 = ((val*(*)(val* self))(var78->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
1581 }
1582 varonce77 = var78;
1583 {
1584 nitc___nitc__AbstractCompilerVisitor___add(self, var96); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
1585 }
1586 if (likely(varonce97!=NULL)) {
1587 var98 = varonce97;
1588 } else {
1589 var99 = "Cast failed";
1590 var101 = (val*)(11l<<2|1);
1591 var102 = (val*)(11l<<2|1);
1592 var103 = (val*)((long)(0)<<2|3);
1593 var104 = (val*)((long)(0)<<2|3);
1594 var100 = core__flat___CString___to_s_unsafe(var99, var101, var102, var103, var104);
1595 var98 = var100;
1596 varonce97 = var98;
1597 }
1598 {
1599 nitc___nitc__AbstractCompilerVisitor___add_abort(self, var98); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_abort on <self:SeparateErasureCompilerVisitor>*/
1600 }
1601 if (likely(varonce105!=NULL)) {
1602 var106 = varonce105;
1603 } else {
1604 var107 = "}";
1605 var109 = (val*)(1l<<2|1);
1606 var110 = (val*)(1l<<2|1);
1607 var111 = (val*)((long)(0)<<2|3);
1608 var112 = (val*)((long)(0)<<2|3);
1609 var108 = core__flat___CString___to_s_unsafe(var107, var109, var110, var111, var112);
1610 var106 = var108;
1611 varonce105 = var106;
1612 }
1613 {
1614 nitc___nitc__AbstractCompilerVisitor___add(self, var106); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
1615 }
1616 } else {
1617 }
1618 var = var_res;
1619 goto RET_LABEL;
1620 RET_LABEL:;
1621 return var;
1622 }
1623 /* method separate_erasure_compiler$SeparateErasureCompilerVisitor$init_instance for (self: SeparateErasureCompilerVisitor, MClassType): RuntimeVariable */
1624 val* nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__init_instance(val* self, val* p0) {
1625 val* var /* : RuntimeVariable */;
1626 val* var_mtype /* var mtype: MClassType */;
1627 val* var1 /* : NativeArray[String] */;
1628 static val* varonce;
1629 static val* varonce2;
1630 val* var3 /* : String */;
1631 char* var4 /* : CString */;
1632 val* var5 /* : String */;
1633 val* var6 /* : nullable Int */;
1634 val* var7 /* : nullable Int */;
1635 val* var8 /* : nullable Bool */;
1636 val* var9 /* : nullable Bool */;
1637 val* var10 /* : MClass */;
1638 val* var12 /* : MClass */;
1639 val* var13 /* : String */;
1640 val* var14 /* : String */;
1641 val* var16 /* : NativeArray[String] */;
1642 static val* varonce15;
1643 static val* varonce17;
1644 val* var18 /* : String */;
1645 char* var19 /* : CString */;
1646 val* var20 /* : String */;
1647 val* var21 /* : nullable Int */;
1648 val* var22 /* : nullable Int */;
1649 val* var23 /* : nullable Bool */;
1650 val* var24 /* : nullable Bool */;
1651 static val* varonce25;
1652 val* var26 /* : String */;
1653 char* var27 /* : CString */;
1654 val* var28 /* : String */;
1655 val* var29 /* : nullable Int */;
1656 val* var30 /* : nullable Int */;
1657 val* var31 /* : nullable Bool */;
1658 val* var32 /* : nullable Bool */;
1659 val* var33 /* : MClass */;
1660 val* var35 /* : MClass */;
1661 val* var36 /* : String */;
1662 val* var37 /* : String */;
1663 val* var38 /* : RuntimeVariable */;
1664 var_mtype = p0;
1665 if (unlikely(varonce==NULL)) {
1666 var1 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
1667 if (likely(varonce2!=NULL)) {
1668 var3 = varonce2;
1669 } else {
1670 var4 = "NEW_";
1671 var6 = (val*)(4l<<2|1);
1672 var7 = (val*)(4l<<2|1);
1673 var8 = (val*)((long)(0)<<2|3);
1674 var9 = (val*)((long)(0)<<2|3);
1675 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
1676 var3 = var5;
1677 varonce2 = var3;
1678 }
1679 ((struct instance_core__NativeArray*)var1)->values[0]=var3;
1680 } else {
1681 var1 = varonce;
1682 varonce = NULL;
1683 }
1684 {
1685 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MClassType> */
1686 var12 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
1687 if (unlikely(var12 == NULL)) {
1688 if(catchStack.cursor >= 0){
1689 longjmp(catchStack.envs[catchStack.cursor], 1);
1690 }
1691 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1692 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
1693 fatal_exit(1);
1694 }
1695 var10 = var12;
1696 RET_LABEL11:(void)0;
1697 }
1698 }
1699 {
1700 var13 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var10);
1701 }
1702 ((struct instance_core__NativeArray*)var1)->values[1]=var13;
1703 {
1704 var14 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
1705 }
1706 varonce = var1;
1707 {
1708 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var14); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
1709 }
1710 if (unlikely(varonce15==NULL)) {
1711 var16 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
1712 if (likely(varonce17!=NULL)) {
1713 var18 = varonce17;
1714 } else {
1715 var19 = "NEW_";
1716 var21 = (val*)(4l<<2|1);
1717 var22 = (val*)(4l<<2|1);
1718 var23 = (val*)((long)(0)<<2|3);
1719 var24 = (val*)((long)(0)<<2|3);
1720 var20 = core__flat___CString___to_s_unsafe(var19, var21, var22, var23, var24);
1721 var18 = var20;
1722 varonce17 = var18;
1723 }
1724 ((struct instance_core__NativeArray*)var16)->values[0]=var18;
1725 if (likely(varonce25!=NULL)) {
1726 var26 = varonce25;
1727 } else {
1728 var27 = "()";
1729 var29 = (val*)(2l<<2|1);
1730 var30 = (val*)(2l<<2|1);
1731 var31 = (val*)((long)(0)<<2|3);
1732 var32 = (val*)((long)(0)<<2|3);
1733 var28 = core__flat___CString___to_s_unsafe(var27, var29, var30, var31, var32);
1734 var26 = var28;
1735 varonce25 = var26;
1736 }
1737 ((struct instance_core__NativeArray*)var16)->values[2]=var26;
1738 } else {
1739 var16 = varonce15;
1740 varonce15 = NULL;
1741 }
1742 {
1743 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MClassType> */
1744 var35 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
1745 if (unlikely(var35 == NULL)) {
1746 if(catchStack.cursor >= 0){
1747 longjmp(catchStack.envs[catchStack.cursor], 1);
1748 }
1749 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1750 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
1751 fatal_exit(1);
1752 }
1753 var33 = var35;
1754 RET_LABEL34:(void)0;
1755 }
1756 }
1757 {
1758 var36 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var33);
1759 }
1760 ((struct instance_core__NativeArray*)var16)->values[1]=var36;
1761 {
1762 var37 = ((val*(*)(val* self))(var16->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var16); /* native_to_s on <var16:NativeArray[String]>*/
1763 }
1764 varonce15 = var16;
1765 {
1766 var38 = nitc___nitc__AbstractCompilerVisitor___new_expr(self, var37, var_mtype);
1767 }
1768 var = var38;
1769 goto RET_LABEL;
1770 RET_LABEL:;
1771 return var;
1772 }
1773 /* method separate_erasure_compiler$SeparateErasureCompilerVisitor$type_test for (self: SeparateErasureCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
1774 val* nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
1775 val* var /* : RuntimeVariable */;
1776 val* var_value /* var value: RuntimeVariable */;
1777 val* var_mtype /* var mtype: MType */;
1778 val* var_tag /* var tag: String */;
1779 val* var1 /* : NativeArray[String] */;
1780 static val* varonce;
1781 static val* varonce2;
1782 val* var3 /* : String */;
1783 char* var4 /* : CString */;
1784 val* var5 /* : String */;
1785 val* var6 /* : nullable Int */;
1786 val* var7 /* : nullable Int */;
1787 val* var8 /* : nullable Bool */;
1788 val* var9 /* : nullable Bool */;
1789 static val* varonce10;
1790 val* var11 /* : String */;
1791 char* var12 /* : CString */;
1792 val* var13 /* : String */;
1793 val* var14 /* : nullable Int */;
1794 val* var15 /* : nullable Int */;
1795 val* var16 /* : nullable Bool */;
1796 val* var17 /* : nullable Bool */;
1797 static val* varonce18;
1798 val* var19 /* : String */;
1799 char* var20 /* : CString */;
1800 val* var21 /* : String */;
1801 val* var22 /* : nullable Int */;
1802 val* var23 /* : nullable Int */;
1803 val* var24 /* : nullable Bool */;
1804 val* var25 /* : nullable Bool */;
1805 val* var26 /* : String */;
1806 val* var27 /* : String */;
1807 val* var28 /* : String */;
1808 val* var29 /* : MClassType */;
1809 val* var30 /* : RuntimeVariable */;
1810 val* var_res /* var res: RuntimeVariable */;
1811 static val* varonce31;
1812 val* var32 /* : String */;
1813 char* var33 /* : CString */;
1814 val* var34 /* : String */;
1815 val* var35 /* : nullable Int */;
1816 val* var36 /* : nullable Int */;
1817 val* var37 /* : nullable Bool */;
1818 val* var38 /* : nullable Bool */;
1819 val* var39 /* : String */;
1820 val* var_cltype /* var cltype: String */;
1821 val* var41 /* : NativeArray[String] */;
1822 static val* varonce40;
1823 static val* varonce42;
1824 val* var43 /* : String */;
1825 char* var44 /* : CString */;
1826 val* var45 /* : String */;
1827 val* var46 /* : nullable Int */;
1828 val* var47 /* : nullable Int */;
1829 val* var48 /* : nullable Bool */;
1830 val* var49 /* : nullable Bool */;
1831 static val* varonce50;
1832 val* var51 /* : String */;
1833 char* var52 /* : CString */;
1834 val* var53 /* : String */;
1835 val* var54 /* : nullable Int */;
1836 val* var55 /* : nullable Int */;
1837 val* var56 /* : nullable Bool */;
1838 val* var57 /* : nullable Bool */;
1839 val* var58 /* : String */;
1840 static val* varonce59;
1841 val* var60 /* : String */;
1842 char* var61 /* : CString */;
1843 val* var62 /* : String */;
1844 val* var63 /* : nullable Int */;
1845 val* var64 /* : nullable Int */;
1846 val* var65 /* : nullable Bool */;
1847 val* var66 /* : nullable Bool */;
1848 val* var67 /* : String */;
1849 val* var_idtype /* var idtype: String */;
1850 val* var69 /* : NativeArray[String] */;
1851 static val* varonce68;
1852 static val* varonce70;
1853 val* var71 /* : String */;
1854 char* var72 /* : CString */;
1855 val* var73 /* : String */;
1856 val* var74 /* : nullable Int */;
1857 val* var75 /* : nullable Int */;
1858 val* var76 /* : nullable Bool */;
1859 val* var77 /* : nullable Bool */;
1860 static val* varonce78;
1861 val* var79 /* : String */;
1862 char* var80 /* : CString */;
1863 val* var81 /* : String */;
1864 val* var82 /* : nullable Int */;
1865 val* var83 /* : nullable Int */;
1866 val* var84 /* : nullable Bool */;
1867 val* var85 /* : nullable Bool */;
1868 val* var86 /* : String */;
1869 short int var87 /* : Bool */;
1870 short int var_maybe_null /* var maybe_null: Bool */;
1871 static val* varonce88;
1872 val* var89 /* : String */;
1873 char* var90 /* : CString */;
1874 val* var91 /* : String */;
1875 val* var92 /* : nullable Int */;
1876 val* var93 /* : nullable Int */;
1877 val* var94 /* : nullable Bool */;
1878 val* var95 /* : nullable Bool */;
1879 val* var_accept_null /* var accept_null: String */;
1880 short int var96 /* : Bool */;
1881 int cltype;
1882 int idtype;
1883 val* var97 /* : MType */;
1884 val* var99 /* : MType */;
1885 static val* varonce100;
1886 val* var101 /* : String */;
1887 char* var102 /* : CString */;
1888 val* var103 /* : String */;
1889 val* var104 /* : nullable Int */;
1890 val* var105 /* : nullable Int */;
1891 val* var106 /* : nullable Bool */;
1892 val* var107 /* : nullable Bool */;
1893 short int var108 /* : Bool */;
1894 int cltype109;
1895 int idtype110;
1896 val* var111 /* : nullable StaticFrame */;
1897 val* var113 /* : nullable StaticFrame */;
1898 val* var114 /* : MPropDef */;
1899 val* var116 /* : MPropDef */;
1900 val* var117 /* : MClassDef */;
1901 val* var119 /* : MClassDef */;
1902 val* var120 /* : MClassType */;
1903 val* var122 /* : MClassType */;
1904 val* var123 /* : nullable StaticFrame */;
1905 val* var125 /* : nullable StaticFrame */;
1906 val* var126 /* : MPropDef */;
1907 val* var128 /* : MPropDef */;
1908 val* var129 /* : MClassDef */;
1909 val* var131 /* : MClassDef */;
1910 val* var132 /* : MClassType */;
1911 val* var134 /* : MClassType */;
1912 val* var135 /* : nullable StaticFrame */;
1913 val* var137 /* : nullable StaticFrame */;
1914 val* var138 /* : MPropDef */;
1915 val* var140 /* : MPropDef */;
1916 val* var141 /* : MClassDef */;
1917 val* var143 /* : MClassDef */;
1918 val* var144 /* : MModule */;
1919 val* var146 /* : MModule */;
1920 val* var147 /* : MType */;
1921 short int var148 /* : Bool */;
1922 int cltype149;
1923 int idtype150;
1924 val* var151 /* : MType */;
1925 val* var153 /* : MType */;
1926 static val* varonce154;
1927 val* var155 /* : String */;
1928 char* var156 /* : CString */;
1929 val* var157 /* : String */;
1930 val* var158 /* : nullable Int */;
1931 val* var159 /* : nullable Int */;
1932 val* var160 /* : nullable Bool */;
1933 val* var161 /* : nullable Bool */;
1934 val* var162 /* : MType */;
1935 val* var164 /* : MType */;
1936 val* var165 /* : nullable StaticFrame */;
1937 val* var167 /* : nullable StaticFrame */;
1938 val* var168 /* : MPropDef */;
1939 val* var170 /* : MPropDef */;
1940 val* var171 /* : MClassDef */;
1941 val* var173 /* : MClassDef */;
1942 val* var174 /* : MModule */;
1943 val* var176 /* : MModule */;
1944 val* var177 /* : nullable StaticFrame */;
1945 val* var179 /* : nullable StaticFrame */;
1946 val* var180 /* : MPropDef */;
1947 val* var182 /* : MPropDef */;
1948 val* var183 /* : MClassDef */;
1949 val* var185 /* : MClassDef */;
1950 val* var186 /* : MClassType */;
1951 val* var188 /* : MClassType */;
1952 short int var189 /* : Bool */;
1953 val* var191 /* : NativeArray[String] */;
1954 static val* varonce190;
1955 static val* varonce192;
1956 val* var193 /* : String */;
1957 char* var194 /* : CString */;
1958 val* var195 /* : String */;
1959 val* var196 /* : nullable Int */;
1960 val* var197 /* : nullable Int */;
1961 val* var198 /* : nullable Bool */;
1962 val* var199 /* : nullable Bool */;
1963 static val* varonce200;
1964 val* var201 /* : String */;
1965 char* var202 /* : CString */;
1966 val* var203 /* : String */;
1967 val* var204 /* : nullable Int */;
1968 val* var205 /* : nullable Int */;
1969 val* var206 /* : nullable Bool */;
1970 val* var207 /* : nullable Bool */;
1971 static val* varonce208;
1972 val* var209 /* : String */;
1973 char* var210 /* : CString */;
1974 val* var211 /* : String */;
1975 val* var212 /* : nullable Int */;
1976 val* var213 /* : nullable Int */;
1977 val* var214 /* : nullable Bool */;
1978 val* var215 /* : nullable Bool */;
1979 val* var216 /* : String */;
1980 val* var217 /* : String */;
1981 val* var218 /* : String */;
1982 val* var219 /* : String */;
1983 val* var220 /* : AbstractCompiler */;
1984 val* var222 /* : AbstractCompiler */;
1985 val* var223 /* : ModelBuilder */;
1986 val* var225 /* : ModelBuilder */;
1987 val* var226 /* : ToolContext */;
1988 val* var228 /* : ToolContext */;
1989 val* var229 /* : OptionBool */;
1990 val* var231 /* : OptionBool */;
1991 val* var232 /* : nullable Object */;
1992 val* var234 /* : nullable Object */;
1993 short int var235 /* : Bool */;
1994 val* var236 /* : AbstractCompiler */;
1995 val* var238 /* : AbstractCompiler */;
1996 val* var239 /* : HashMap[String, Int] */;
1997 val* var241 /* : HashMap[String, Int] */;
1998 val* var_ /* var : HashMap[String, Int] */;
1999 val* var_242 /* var : String */;
2000 val* var243 /* : nullable Object */;
2001 long var244 /* : Int */;
2002 short int var246 /* : Bool */;
2003 int cltype247;
2004 int idtype248;
2005 const char* var_class_name;
2006 long var249 /* : Int */;
2007 long var250 /* : Int */;
2008 val* var251 /* : nullable Object */;
2009 val* var253 /* : NativeArray[String] */;
2010 static val* varonce252;
2011 static val* varonce254;
2012 val* var255 /* : String */;
2013 char* var256 /* : CString */;
2014 val* var257 /* : String */;
2015 val* var258 /* : nullable Int */;
2016 val* var259 /* : nullable Int */;
2017 val* var260 /* : nullable Bool */;
2018 val* var261 /* : nullable Bool */;
2019 static val* varonce262;
2020 val* var263 /* : String */;
2021 char* var264 /* : CString */;
2022 val* var265 /* : String */;
2023 val* var266 /* : nullable Int */;
2024 val* var267 /* : nullable Int */;
2025 val* var268 /* : nullable Bool */;
2026 val* var269 /* : nullable Bool */;
2027 val* var270 /* : String */;
2028 val* var271 /* : MType */;
2029 val* var273 /* : MType */;
2030 short int var274 /* : Bool */;
2031 short int var275 /* : Bool */;
2032 val* var277 /* : NativeArray[String] */;
2033 static val* varonce276;
2034 static val* varonce278;
2035 val* var279 /* : String */;
2036 char* var280 /* : CString */;
2037 val* var281 /* : String */;
2038 val* var282 /* : nullable Int */;
2039 val* var283 /* : nullable Int */;
2040 val* var284 /* : nullable Bool */;
2041 val* var285 /* : nullable Bool */;
2042 val* var286 /* : String */;
2043 val* var287 /* : String */;
2044 val* var_class_ptr /* var class_ptr: nullable Object */;
2045 val* var288 /* : MType */;
2046 val* var290 /* : MType */;
2047 short int var291 /* : Bool */;
2048 int cltype292;
2049 int idtype293;
2050 const char* var_class_name294;
2051 val* var295 /* : MClass */;
2052 val* var297 /* : MClass */;
2053 val* var_mclass /* var mclass: MClass */;
2054 val* var299 /* : NativeArray[String] */;
2055 static val* varonce298;
2056 static val* varonce300;
2057 val* var301 /* : String */;
2058 char* var302 /* : CString */;
2059 val* var303 /* : String */;
2060 val* var304 /* : nullable Int */;
2061 val* var305 /* : nullable Int */;
2062 val* var306 /* : nullable Bool */;
2063 val* var307 /* : nullable Bool */;
2064 val* var308 /* : String */;
2065 val* var309 /* : String */;
2066 val* var311 /* : NativeArray[String] */;
2067 static val* varonce310;
2068 static val* varonce312;
2069 val* var313 /* : String */;
2070 char* var314 /* : CString */;
2071 val* var315 /* : String */;
2072 val* var316 /* : nullable Int */;
2073 val* var317 /* : nullable Int */;
2074 val* var318 /* : nullable Bool */;
2075 val* var319 /* : nullable Bool */;
2076 static val* varonce320;
2077 val* var321 /* : String */;
2078 char* var322 /* : CString */;
2079 val* var323 /* : String */;
2080 val* var324 /* : nullable Int */;
2081 val* var325 /* : nullable Int */;
2082 val* var326 /* : nullable Bool */;
2083 val* var327 /* : nullable Bool */;
2084 val* var328 /* : String */;
2085 val* var329 /* : String */;
2086 short int var330 /* : Bool */;
2087 int cltype331;
2088 int idtype332;
2089 val* var334 /* : NativeArray[String] */;
2090 static val* varonce333;
2091 static val* varonce335;
2092 val* var336 /* : String */;
2093 char* var337 /* : CString */;
2094 val* var338 /* : String */;
2095 val* var339 /* : nullable Int */;
2096 val* var340 /* : nullable Int */;
2097 val* var341 /* : nullable Bool */;
2098 val* var342 /* : nullable Bool */;
2099 val* var343 /* : MClass */;
2100 val* var345 /* : MClass */;
2101 val* var346 /* : String */;
2102 val* var347 /* : String */;
2103 val* var349 /* : NativeArray[String] */;
2104 static val* varonce348;
2105 static val* varonce350;
2106 val* var351 /* : String */;
2107 char* var352 /* : CString */;
2108 val* var353 /* : String */;
2109 val* var354 /* : nullable Int */;
2110 val* var355 /* : nullable Int */;
2111 val* var356 /* : nullable Bool */;
2112 val* var357 /* : nullable Bool */;
2113 static val* varonce358;
2114 val* var359 /* : String */;
2115 char* var360 /* : CString */;
2116 val* var361 /* : String */;
2117 val* var362 /* : nullable Int */;
2118 val* var363 /* : nullable Int */;
2119 val* var364 /* : nullable Bool */;
2120 val* var365 /* : nullable Bool */;
2121 val* var366 /* : MClass */;
2122 val* var368 /* : MClass */;
2123 val* var369 /* : String */;
2124 val* var370 /* : String */;
2125 val* var372 /* : NativeArray[String] */;
2126 static val* varonce371;
2127 static val* varonce373;
2128 val* var374 /* : String */;
2129 char* var375 /* : CString */;
2130 val* var376 /* : String */;
2131 val* var377 /* : nullable Int */;
2132 val* var378 /* : nullable Int */;
2133 val* var379 /* : nullable Bool */;
2134 val* var380 /* : nullable Bool */;
2135 static val* varonce381;
2136 val* var382 /* : String */;
2137 char* var383 /* : CString */;
2138 val* var384 /* : String */;
2139 val* var385 /* : nullable Int */;
2140 val* var386 /* : nullable Int */;
2141 val* var387 /* : nullable Bool */;
2142 val* var388 /* : nullable Bool */;
2143 val* var389 /* : MClass */;
2144 val* var391 /* : MClass */;
2145 val* var392 /* : String */;
2146 val* var393 /* : String */;
2147 val* var394 /* : AbstractCompiler */;
2148 val* var396 /* : AbstractCompiler */;
2149 val* var397 /* : ModelBuilder */;
2150 val* var399 /* : ModelBuilder */;
2151 val* var400 /* : ToolContext */;
2152 val* var402 /* : ToolContext */;
2153 val* var403 /* : OptionBool */;
2154 val* var405 /* : OptionBool */;
2155 val* var406 /* : nullable Object */;
2156 val* var408 /* : nullable Object */;
2157 short int var409 /* : Bool */;
2158 val* var410 /* : AbstractCompiler */;
2159 val* var412 /* : AbstractCompiler */;
2160 val* var413 /* : HashMap[String, Int] */;
2161 val* var415 /* : HashMap[String, Int] */;
2162 val* var_416 /* var : HashMap[String, Int] */;
2163 val* var_417 /* var : String */;
2164 val* var418 /* : nullable Object */;
2165 long var419 /* : Int */;
2166 short int var421 /* : Bool */;
2167 int cltype422;
2168 int idtype423;
2169 const char* var_class_name424;
2170 long var425 /* : Int */;
2171 long var426 /* : Int */;
2172 val* var427 /* : nullable Object */;
2173 val* var429 /* : NativeArray[String] */;
2174 static val* varonce428;
2175 static val* varonce430;
2176 val* var431 /* : String */;
2177 char* var432 /* : CString */;
2178 val* var433 /* : String */;
2179 val* var434 /* : nullable Int */;
2180 val* var435 /* : nullable Int */;
2181 val* var436 /* : nullable Bool */;
2182 val* var437 /* : nullable Bool */;
2183 static val* varonce438;
2184 val* var439 /* : String */;
2185 char* var440 /* : CString */;
2186 val* var441 /* : String */;
2187 val* var442 /* : nullable Int */;
2188 val* var443 /* : nullable Int */;
2189 val* var444 /* : nullable Bool */;
2190 val* var445 /* : nullable Bool */;
2191 val* var446 /* : String */;
2192 short int var447 /* : Bool */;
2193 int cltype448;
2194 int idtype449;
2195 val* var450 /* : nullable StaticFrame */;
2196 val* var452 /* : nullable StaticFrame */;
2197 val* var453 /* : Array[RuntimeVariable] */;
2198 val* var455 /* : Array[RuntimeVariable] */;
2199 val* var456 /* : nullable Object */;
2200 val* var_recv /* var recv: RuntimeVariable */;
2201 val* var457 /* : MType */;
2202 val* var459 /* : MType */;
2203 short int var460 /* : Bool */;
2204 short int var461 /* : Bool */;
2205 val* var463 /* : NativeArray[String] */;
2206 static val* varonce462;
2207 static val* varonce464;
2208 val* var465 /* : String */;
2209 char* var466 /* : CString */;
2210 val* var467 /* : String */;
2211 val* var468 /* : nullable Int */;
2212 val* var469 /* : nullable Int */;
2213 val* var470 /* : nullable Bool */;
2214 val* var471 /* : nullable Bool */;
2215 val* var472 /* : String */;
2216 val* var473 /* : String */;
2217 val* var_recv_ptr /* var recv_ptr: nullable Object */;
2218 val* var474 /* : MType */;
2219 val* var476 /* : MType */;
2220 short int var477 /* : Bool */;
2221 int cltype478;
2222 int idtype479;
2223 const char* var_class_name480;
2224 val* var481 /* : MClass */;
2225 val* var483 /* : MClass */;
2226 val* var_mclass484 /* var mclass: MClass */;
2227 val* var486 /* : NativeArray[String] */;
2228 static val* varonce485;
2229 static val* varonce487;
2230 val* var488 /* : String */;
2231 char* var489 /* : CString */;
2232 val* var490 /* : String */;
2233 val* var491 /* : nullable Int */;
2234 val* var492 /* : nullable Int */;
2235 val* var493 /* : nullable Bool */;
2236 val* var494 /* : nullable Bool */;
2237 val* var495 /* : String */;
2238 val* var496 /* : String */;
2239 val* var498 /* : NativeArray[String] */;
2240 static val* varonce497;
2241 static val* varonce499;
2242 val* var500 /* : String */;
2243 char* var501 /* : CString */;
2244 val* var502 /* : String */;
2245 val* var503 /* : nullable Int */;
2246 val* var504 /* : nullable Int */;
2247 val* var505 /* : nullable Bool */;
2248 val* var506 /* : nullable Bool */;
2249 static val* varonce507;
2250 val* var508 /* : String */;
2251 char* var509 /* : CString */;
2252 val* var510 /* : String */;
2253 val* var511 /* : nullable Int */;
2254 val* var512 /* : nullable Int */;
2255 val* var513 /* : nullable Bool */;
2256 val* var514 /* : nullable Bool */;
2257 val* var515 /* : String */;
2258 val* var516 /* : String */;
2259 static val* varonce517;
2260 val* var518 /* : String */;
2261 char* var519 /* : CString */;
2262 val* var520 /* : String */;
2263 val* var521 /* : nullable Int */;
2264 val* var522 /* : nullable Int */;
2265 val* var523 /* : nullable Bool */;
2266 val* var524 /* : nullable Bool */;
2267 val* var525 /* : String */;
2268 val* var_entry /* var entry: String */;
2269 val* var527 /* : NativeArray[String] */;
2270 static val* varonce526;
2271 static val* varonce528;
2272 val* var529 /* : String */;
2273 char* var530 /* : CString */;
2274 val* var531 /* : String */;
2275 val* var532 /* : nullable Int */;
2276 val* var533 /* : nullable Int */;
2277 val* var534 /* : nullable Bool */;
2278 val* var535 /* : nullable Bool */;
2279 static val* varonce536;
2280 val* var537 /* : String */;
2281 char* var538 /* : CString */;
2282 val* var539 /* : String */;
2283 val* var540 /* : nullable Int */;
2284 val* var541 /* : nullable Int */;
2285 val* var542 /* : nullable Bool */;
2286 val* var543 /* : nullable Bool */;
2287 val* var544 /* : String */;
2288 val* var545 /* : MVirtualTypeProp */;
2289 val* var547 /* : MVirtualTypeProp */;
2290 val* var548 /* : String */;
2291 val* var550 /* : NativeArray[String] */;
2292 static val* varonce549;
2293 static val* varonce551;
2294 val* var552 /* : String */;
2295 char* var553 /* : CString */;
2296 val* var554 /* : String */;
2297 val* var555 /* : nullable Int */;
2298 val* var556 /* : nullable Int */;
2299 val* var557 /* : nullable Bool */;
2300 val* var558 /* : nullable Bool */;
2301 static val* varonce559;
2302 val* var560 /* : String */;
2303 char* var561 /* : CString */;
2304 val* var562 /* : String */;
2305 val* var563 /* : nullable Int */;
2306 val* var564 /* : nullable Int */;
2307 val* var565 /* : nullable Bool */;
2308 val* var566 /* : nullable Bool */;
2309 static val* varonce567;
2310 val* var568 /* : String */;
2311 char* var569 /* : CString */;
2312 val* var570 /* : String */;
2313 val* var571 /* : nullable Int */;
2314 val* var572 /* : nullable Int */;
2315 val* var573 /* : nullable Bool */;
2316 val* var574 /* : nullable Bool */;
2317 val* var575 /* : MVirtualTypeProp */;
2318 val* var577 /* : MVirtualTypeProp */;
2319 val* var578 /* : String */;
2320 val* var579 /* : String */;
2321 val* var581 /* : NativeArray[String] */;
2322 static val* varonce580;
2323 static val* varonce582;
2324 val* var583 /* : String */;
2325 char* var584 /* : CString */;
2326 val* var585 /* : String */;
2327 val* var586 /* : nullable Int */;
2328 val* var587 /* : nullable Int */;
2329 val* var588 /* : nullable Bool */;
2330 val* var589 /* : nullable Bool */;
2331 static val* varonce590;
2332 val* var591 /* : String */;
2333 char* var592 /* : CString */;
2334 val* var593 /* : String */;
2335 val* var594 /* : nullable Int */;
2336 val* var595 /* : nullable Int */;
2337 val* var596 /* : nullable Bool */;
2338 val* var597 /* : nullable Bool */;
2339 val* var598 /* : String */;
2340 val* var600 /* : NativeArray[String] */;
2341 static val* varonce599;
2342 static val* varonce601;
2343 val* var602 /* : String */;
2344 char* var603 /* : CString */;
2345 val* var604 /* : String */;
2346 val* var605 /* : nullable Int */;
2347 val* var606 /* : nullable Int */;
2348 val* var607 /* : nullable Bool */;
2349 val* var608 /* : nullable Bool */;
2350 static val* varonce609;
2351 val* var610 /* : String */;
2352 char* var611 /* : CString */;
2353 val* var612 /* : String */;
2354 val* var613 /* : nullable Int */;
2355 val* var614 /* : nullable Int */;
2356 val* var615 /* : nullable Bool */;
2357 val* var616 /* : nullable Bool */;
2358 val* var617 /* : String */;
2359 short int var618 /* : Bool */;
2360 short int var_619 /* var : Bool */;
2361 static val* varonce620;
2362 val* var621 /* : String */;
2363 char* var622 /* : CString */;
2364 val* var623 /* : String */;
2365 val* var624 /* : nullable Int */;
2366 val* var625 /* : nullable Int */;
2367 val* var626 /* : nullable Bool */;
2368 val* var627 /* : nullable Bool */;
2369 short int var628 /* : Bool */;
2370 static val* varonce629;
2371 val* var630 /* : String */;
2372 char* var631 /* : CString */;
2373 val* var632 /* : String */;
2374 val* var633 /* : nullable Int */;
2375 val* var634 /* : nullable Int */;
2376 val* var635 /* : nullable Bool */;
2377 val* var636 /* : nullable Bool */;
2378 val* var637 /* : String */;
2379 val* var_is_nullable /* var is_nullable: String */;
2380 val* var639 /* : NativeArray[String] */;
2381 static val* varonce638;
2382 static val* varonce640;
2383 val* var641 /* : String */;
2384 char* var642 /* : CString */;
2385 val* var643 /* : String */;
2386 val* var644 /* : nullable Int */;
2387 val* var645 /* : nullable Int */;
2388 val* var646 /* : nullable Bool */;
2389 val* var647 /* : nullable Bool */;
2390 static val* varonce648;
2391 val* var649 /* : String */;
2392 char* var650 /* : CString */;
2393 val* var651 /* : String */;
2394 val* var652 /* : nullable Int */;
2395 val* var653 /* : nullable Int */;
2396 val* var654 /* : nullable Bool */;
2397 val* var655 /* : nullable Bool */;
2398 val* var656 /* : String */;
2399 val* var658 /* : NativeArray[String] */;
2400 static val* varonce657;
2401 static val* varonce659;
2402 val* var660 /* : String */;
2403 char* var661 /* : CString */;
2404 val* var662 /* : String */;
2405 val* var663 /* : nullable Int */;
2406 val* var664 /* : nullable Int */;
2407 val* var665 /* : nullable Bool */;
2408 val* var666 /* : nullable Bool */;
2409 static val* varonce667;
2410 val* var668 /* : String */;
2411 char* var669 /* : CString */;
2412 val* var670 /* : String */;
2413 val* var671 /* : nullable Int */;
2414 val* var672 /* : nullable Int */;
2415 val* var673 /* : nullable Bool */;
2416 val* var674 /* : nullable Bool */;
2417 val* var675 /* : String */;
2418 val* var676 /* : String */;
2419 val* var677 /* : AbstractCompiler */;
2420 val* var679 /* : AbstractCompiler */;
2421 val* var680 /* : ModelBuilder */;
2422 val* var682 /* : ModelBuilder */;
2423 val* var683 /* : ToolContext */;
2424 val* var685 /* : ToolContext */;
2425 val* var686 /* : OptionBool */;
2426 val* var688 /* : OptionBool */;
2427 val* var689 /* : nullable Object */;
2428 val* var691 /* : nullable Object */;
2429 short int var692 /* : Bool */;
2430 val* var693 /* : AbstractCompiler */;
2431 val* var695 /* : AbstractCompiler */;
2432 val* var696 /* : HashMap[String, Int] */;
2433 val* var698 /* : HashMap[String, Int] */;
2434 val* var_699 /* var : HashMap[String, Int] */;
2435 val* var_700 /* var : String */;
2436 val* var701 /* : nullable Object */;
2437 long var702 /* : Int */;
2438 short int var704 /* : Bool */;
2439 int cltype705;
2440 int idtype706;
2441 const char* var_class_name707;
2442 long var708 /* : Int */;
2443 long var709 /* : Int */;
2444 val* var710 /* : nullable Object */;
2445 val* var712 /* : NativeArray[String] */;
2446 static val* varonce711;
2447 static val* varonce713;
2448 val* var714 /* : String */;
2449 char* var715 /* : CString */;
2450 val* var716 /* : String */;
2451 val* var717 /* : nullable Int */;
2452 val* var718 /* : nullable Int */;
2453 val* var719 /* : nullable Bool */;
2454 val* var720 /* : nullable Bool */;
2455 static val* varonce721;
2456 val* var722 /* : String */;
2457 char* var723 /* : CString */;
2458 val* var724 /* : String */;
2459 val* var725 /* : nullable Int */;
2460 val* var726 /* : nullable Int */;
2461 val* var727 /* : nullable Bool */;
2462 val* var728 /* : nullable Bool */;
2463 val* var729 /* : String */;
2464 val* var731 /* : NativeArray[String] */;
2465 static val* varonce730;
2466 static val* varonce732;
2467 val* var733 /* : String */;
2468 char* var734 /* : CString */;
2469 val* var735 /* : String */;
2470 val* var736 /* : nullable Int */;
2471 val* var737 /* : nullable Int */;
2472 val* var738 /* : nullable Bool */;
2473 val* var739 /* : nullable Bool */;
2474 static val* varonce740;
2475 val* var741 /* : String */;
2476 char* var742 /* : CString */;
2477 val* var743 /* : String */;
2478 val* var744 /* : nullable Int */;
2479 val* var745 /* : nullable Int */;
2480 val* var746 /* : nullable Bool */;
2481 val* var747 /* : nullable Bool */;
2482 static val* varonce748;
2483 val* var749 /* : String */;
2484 char* var750 /* : CString */;
2485 val* var751 /* : String */;
2486 val* var752 /* : nullable Int */;
2487 val* var753 /* : nullable Int */;
2488 val* var754 /* : nullable Bool */;
2489 val* var755 /* : nullable Bool */;
2490 val* var756 /* : String */;
2491 val* var757 /* : String */;
2492 val* var758 /* : String */;
2493 val* var760 /* : NativeArray[String] */;
2494 static val* varonce759;
2495 static val* varonce761;
2496 val* var762 /* : String */;
2497 char* var763 /* : CString */;
2498 val* var764 /* : String */;
2499 val* var765 /* : nullable Int */;
2500 val* var766 /* : nullable Int */;
2501 val* var767 /* : nullable Bool */;
2502 val* var768 /* : nullable Bool */;
2503 static val* varonce769;
2504 val* var770 /* : String */;
2505 char* var771 /* : CString */;
2506 val* var772 /* : String */;
2507 val* var773 /* : nullable Int */;
2508 val* var774 /* : nullable Int */;
2509 val* var775 /* : nullable Bool */;
2510 val* var776 /* : nullable Bool */;
2511 val* var777 /* : String */;
2512 val* var778 /* : String */;
2513 val* var780 /* : NativeArray[String] */;
2514 static val* varonce779;
2515 static val* varonce781;
2516 val* var782 /* : String */;
2517 char* var783 /* : CString */;
2518 val* var784 /* : String */;
2519 val* var785 /* : nullable Int */;
2520 val* var786 /* : nullable Int */;
2521 val* var787 /* : nullable Bool */;
2522 val* var788 /* : nullable Bool */;
2523 static val* varonce789;
2524 val* var790 /* : String */;
2525 char* var791 /* : CString */;
2526 val* var792 /* : String */;
2527 val* var793 /* : nullable Int */;
2528 val* var794 /* : nullable Int */;
2529 val* var795 /* : nullable Bool */;
2530 val* var796 /* : nullable Bool */;
2531 val* var797 /* : String */;
2532 val* var798 /* : String */;
2533 static val* varonce799;
2534 val* var800 /* : String */;
2535 char* var801 /* : CString */;
2536 val* var802 /* : String */;
2537 val* var803 /* : nullable Int */;
2538 val* var804 /* : nullable Int */;
2539 val* var805 /* : nullable Bool */;
2540 val* var806 /* : nullable Bool */;
2541 val* var808 /* : NativeArray[String] */;
2542 static val* varonce807;
2543 static val* varonce809;
2544 val* var810 /* : String */;
2545 char* var811 /* : CString */;
2546 val* var812 /* : String */;
2547 val* var813 /* : nullable Int */;
2548 val* var814 /* : nullable Int */;
2549 val* var815 /* : nullable Bool */;
2550 val* var816 /* : nullable Bool */;
2551 static val* varonce817;
2552 val* var818 /* : String */;
2553 char* var819 /* : CString */;
2554 val* var820 /* : String */;
2555 val* var821 /* : nullable Int */;
2556 val* var822 /* : nullable Int */;
2557 val* var823 /* : nullable Bool */;
2558 val* var824 /* : nullable Bool */;
2559 static val* varonce825;
2560 val* var826 /* : String */;
2561 char* var827 /* : CString */;
2562 val* var828 /* : String */;
2563 val* var829 /* : nullable Int */;
2564 val* var830 /* : nullable Int */;
2565 val* var831 /* : nullable Bool */;
2566 val* var832 /* : nullable Bool */;
2567 val* var833 /* : String */;
2568 val* var835 /* : NativeArray[String] */;
2569 static val* varonce834;
2570 static val* varonce836;
2571 val* var837 /* : String */;
2572 char* var838 /* : CString */;
2573 val* var839 /* : String */;
2574 val* var840 /* : nullable Int */;
2575 val* var841 /* : nullable Int */;
2576 val* var842 /* : nullable Bool */;
2577 val* var843 /* : nullable Bool */;
2578 val* var844 /* : String */;
2579 val* var845 /* : String */;
2580 static val* varonce846;
2581 val* var847 /* : String */;
2582 char* var848 /* : CString */;
2583 val* var849 /* : String */;
2584 val* var850 /* : nullable Int */;
2585 val* var851 /* : nullable Int */;
2586 val* var852 /* : nullable Bool */;
2587 val* var853 /* : nullable Bool */;
2588 val* var855 /* : NativeArray[String] */;
2589 static val* varonce854;
2590 static val* varonce856;
2591 val* var857 /* : String */;
2592 char* var858 /* : CString */;
2593 val* var859 /* : String */;
2594 val* var860 /* : nullable Int */;
2595 val* var861 /* : nullable Int */;
2596 val* var862 /* : nullable Bool */;
2597 val* var863 /* : nullable Bool */;
2598 static val* varonce864;
2599 val* var865 /* : String */;
2600 char* var866 /* : CString */;
2601 val* var867 /* : String */;
2602 val* var868 /* : nullable Int */;
2603 val* var869 /* : nullable Int */;
2604 val* var870 /* : nullable Bool */;
2605 val* var871 /* : nullable Bool */;
2606 static val* varonce872;
2607 val* var873 /* : String */;
2608 char* var874 /* : CString */;
2609 val* var875 /* : String */;
2610 val* var876 /* : nullable Int */;
2611 val* var877 /* : nullable Int */;
2612 val* var878 /* : nullable Bool */;
2613 val* var879 /* : nullable Bool */;
2614 static val* varonce880;
2615 val* var881 /* : String */;
2616 char* var882 /* : CString */;
2617 val* var883 /* : String */;
2618 val* var884 /* : nullable Int */;
2619 val* var885 /* : nullable Int */;
2620 val* var886 /* : nullable Bool */;
2621 val* var887 /* : nullable Bool */;
2622 val* var888 /* : String */;
2623 val* var889 /* : String */;
2624 static val* varonce890;
2625 val* var891 /* : String */;
2626 char* var892 /* : CString */;
2627 val* var893 /* : String */;
2628 val* var894 /* : nullable Int */;
2629 val* var895 /* : nullable Int */;
2630 val* var896 /* : nullable Bool */;
2631 val* var897 /* : nullable Bool */;
2632 static val* varonce898;
2633 val* var899 /* : String */;
2634 char* var900 /* : CString */;
2635 val* var901 /* : String */;
2636 val* var902 /* : nullable Int */;
2637 val* var903 /* : nullable Int */;
2638 val* var904 /* : nullable Bool */;
2639 val* var905 /* : nullable Bool */;
2640 var_value = p0;
2641 var_mtype = p1;
2642 var_tag = p2;
2643 if (unlikely(varonce==NULL)) {
2644 var1 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
2645 if (likely(varonce2!=NULL)) {
2646 var3 = varonce2;
2647 } else {
2648 var4 = "/* type test for ";
2649 var6 = (val*)(17l<<2|1);
2650 var7 = (val*)(17l<<2|1);
2651 var8 = (val*)((long)(0)<<2|3);
2652 var9 = (val*)((long)(0)<<2|3);
2653 var5 = core__flat___CString___to_s_unsafe(var4, var6, var7, var8, var9);
2654 var3 = var5;
2655 varonce2 = var3;
2656 }
2657 ((struct instance_core__NativeArray*)var1)->values[0]=var3;
2658 if (likely(varonce10!=NULL)) {
2659 var11 = varonce10;
2660 } else {
2661 var12 = " isa ";
2662 var14 = (val*)(5l<<2|1);
2663 var15 = (val*)(5l<<2|1);
2664 var16 = (val*)((long)(0)<<2|3);
2665 var17 = (val*)((long)(0)<<2|3);
2666 var13 = core__flat___CString___to_s_unsafe(var12, var14, var15, var16, var17);
2667 var11 = var13;
2668 varonce10 = var11;
2669 }
2670 ((struct instance_core__NativeArray*)var1)->values[2]=var11;
2671 if (likely(varonce18!=NULL)) {
2672 var19 = varonce18;
2673 } else {
2674 var20 = " */";
2675 var22 = (val*)(3l<<2|1);
2676 var23 = (val*)(3l<<2|1);
2677 var24 = (val*)((long)(0)<<2|3);
2678 var25 = (val*)((long)(0)<<2|3);
2679 var21 = core__flat___CString___to_s_unsafe(var20, var22, var23, var24, var25);
2680 var19 = var21;
2681 varonce18 = var19;
2682 }
2683 ((struct instance_core__NativeArray*)var1)->values[4]=var19;
2684 } else {
2685 var1 = varonce;
2686 varonce = NULL;
2687 }
2688 {
2689 var26 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_value);
2690 }
2691 ((struct instance_core__NativeArray*)var1)->values[1]=var26;
2692 {
2693 var27 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
2694 }
2695 ((struct instance_core__NativeArray*)var1)->values[3]=var27;
2696 {
2697 var28 = ((val*(*)(val* self))(var1->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
2698 }
2699 varonce = var1;
2700 {
2701 nitc___nitc__AbstractCompilerVisitor___add(self, var28); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
2702 }
2703 {
2704 var29 = nitc___nitc__AbstractCompilerVisitor___bool_type(self);
2705 }
2706 {
2707 var30 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var29);
2708 }
2709 var_res = var30;
2710 if (likely(varonce31!=NULL)) {
2711 var32 = varonce31;
2712 } else {
2713 var33 = "cltype";
2714 var35 = (val*)(6l<<2|1);
2715 var36 = (val*)(6l<<2|1);
2716 var37 = (val*)((long)(0)<<2|3);
2717 var38 = (val*)((long)(0)<<2|3);
2718 var34 = core__flat___CString___to_s_unsafe(var33, var35, var36, var37, var38);
2719 var32 = var34;
2720 varonce31 = var32;
2721 }
2722 {
2723 var39 = nitc___nitc__AbstractCompilerVisitor___get_name(self, var32);
2724 }
2725 var_cltype = var39;
2726 if (unlikely(varonce40==NULL)) {
2727 var41 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2728 if (likely(varonce42!=NULL)) {
2729 var43 = varonce42;
2730 } else {
2731 var44 = "int ";
2732 var46 = (val*)(4l<<2|1);
2733 var47 = (val*)(4l<<2|1);
2734 var48 = (val*)((long)(0)<<2|3);
2735 var49 = (val*)((long)(0)<<2|3);
2736 var45 = core__flat___CString___to_s_unsafe(var44, var46, var47, var48, var49);
2737 var43 = var45;
2738 varonce42 = var43;
2739 }
2740 ((struct instance_core__NativeArray*)var41)->values[0]=var43;
2741 if (likely(varonce50!=NULL)) {
2742 var51 = varonce50;
2743 } else {
2744 var52 = ";";
2745 var54 = (val*)(1l<<2|1);
2746 var55 = (val*)(1l<<2|1);
2747 var56 = (val*)((long)(0)<<2|3);
2748 var57 = (val*)((long)(0)<<2|3);
2749 var53 = core__flat___CString___to_s_unsafe(var52, var54, var55, var56, var57);
2750 var51 = var53;
2751 varonce50 = var51;
2752 }
2753 ((struct instance_core__NativeArray*)var41)->values[2]=var51;
2754 } else {
2755 var41 = varonce40;
2756 varonce40 = NULL;
2757 }
2758 ((struct instance_core__NativeArray*)var41)->values[1]=var_cltype;
2759 {
2760 var58 = ((val*(*)(val* self))(var41->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var41); /* native_to_s on <var41:NativeArray[String]>*/
2761 }
2762 varonce40 = var41;
2763 {
2764 nitc___nitc__AbstractCompilerVisitor___add_decl(self, var58); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <self:SeparateErasureCompilerVisitor>*/
2765 }
2766 if (likely(varonce59!=NULL)) {
2767 var60 = varonce59;
2768 } else {
2769 var61 = "idtype";
2770 var63 = (val*)(6l<<2|1);
2771 var64 = (val*)(6l<<2|1);
2772 var65 = (val*)((long)(0)<<2|3);
2773 var66 = (val*)((long)(0)<<2|3);
2774 var62 = core__flat___CString___to_s_unsafe(var61, var63, var64, var65, var66);
2775 var60 = var62;
2776 varonce59 = var60;
2777 }
2778 {
2779 var67 = nitc___nitc__AbstractCompilerVisitor___get_name(self, var60);
2780 }
2781 var_idtype = var67;
2782 if (unlikely(varonce68==NULL)) {
2783 var69 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
2784 if (likely(varonce70!=NULL)) {
2785 var71 = varonce70;
2786 } else {
2787 var72 = "int ";
2788 var74 = (val*)(4l<<2|1);
2789 var75 = (val*)(4l<<2|1);
2790 var76 = (val*)((long)(0)<<2|3);
2791 var77 = (val*)((long)(0)<<2|3);
2792 var73 = core__flat___CString___to_s_unsafe(var72, var74, var75, var76, var77);
2793 var71 = var73;
2794 varonce70 = var71;
2795 }
2796 ((struct instance_core__NativeArray*)var69)->values[0]=var71;
2797 if (likely(varonce78!=NULL)) {
2798 var79 = varonce78;
2799 } else {
2800 var80 = ";";
2801 var82 = (val*)(1l<<2|1);
2802 var83 = (val*)(1l<<2|1);
2803 var84 = (val*)((long)(0)<<2|3);
2804 var85 = (val*)((long)(0)<<2|3);
2805 var81 = core__flat___CString___to_s_unsafe(var80, var82, var83, var84, var85);
2806 var79 = var81;
2807 varonce78 = var79;
2808 }
2809 ((struct instance_core__NativeArray*)var69)->values[2]=var79;
2810 } else {
2811 var69 = varonce68;
2812 varonce68 = NULL;
2813 }
2814 ((struct instance_core__NativeArray*)var69)->values[1]=var_idtype;
2815 {
2816 var86 = ((val*(*)(val* self))(var69->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var69); /* native_to_s on <var69:NativeArray[String]>*/
2817 }
2818 varonce68 = var69;
2819 {
2820 nitc___nitc__AbstractCompilerVisitor___add_decl(self, var86); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <self:SeparateErasureCompilerVisitor>*/
2821 }
2822 {
2823 var87 = nitc___nitc__SeparateCompilerVisitor___maybe_null(self, var_value);
2824 }
2825 var_maybe_null = var87;
2826 if (likely(varonce88!=NULL)) {
2827 var89 = varonce88;
2828 } else {
2829 var90 = "0";
2830 var92 = (val*)(1l<<2|1);
2831 var93 = (val*)(1l<<2|1);
2832 var94 = (val*)((long)(0)<<2|3);
2833 var95 = (val*)((long)(0)<<2|3);
2834 var91 = core__flat___CString___to_s_unsafe(var90, var92, var93, var94, var95);
2835 var89 = var91;
2836 varonce88 = var89;
2837 }
2838 var_accept_null = var89;
2839 /* <var_mtype:MType> isa MNullableType */
2840 cltype = type_nitc__MNullableType.color;
2841 idtype = type_nitc__MNullableType.id;
2842 if(cltype >= var_mtype->type->table_size) {
2843 var96 = 0;
2844 } else {
2845 var96 = var_mtype->type->type_table[cltype] == idtype;
2846 }
2847 if (var96){
2848 {
2849 { /* Inline model$MProxyType$mtype (var_mtype) on <var_mtype:MType(MNullableType)> */
2850 var99 = var_mtype->attrs[COLOR_nitc__model__MProxyType___mtype].val; /* _mtype on <var_mtype:MType(MNullableType)> */
2851 if (unlikely(var99 == NULL)) {
2852 if(catchStack.cursor >= 0){
2853 longjmp(catchStack.envs[catchStack.cursor], 1);
2854 }
2855 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
2856 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1689);
2857 fatal_exit(1);
2858 }
2859 var97 = var99;
2860 RET_LABEL98:(void)0;
2861 }
2862 }
2863 var_mtype = var97;
2864 if (likely(varonce100!=NULL)) {
2865 var101 = varonce100;
2866 } else {
2867 var102 = "1";
2868 var104 = (val*)(1l<<2|1);
2869 var105 = (val*)(1l<<2|1);
2870 var106 = (val*)((long)(0)<<2|3);
2871 var107 = (val*)((long)(0)<<2|3);
2872 var103 = core__flat___CString___to_s_unsafe(var102, var104, var105, var106, var107);
2873 var101 = var103;
2874 varonce100 = var101;
2875 }
2876 var_accept_null = var101;
2877 } else {
2878 }
2879 /* <var_mtype:MType> isa MParameterType */
2880 cltype109 = type_nitc__MParameterType.color;
2881 idtype110 = type_nitc__MParameterType.id;
2882 if(cltype109 >= var_mtype->type->table_size) {
2883 var108 = 0;
2884 } else {
2885 var108 = var_mtype->type->type_table[cltype109] == idtype110;
2886 }
2887 if (var108){
2888 {
2889 { /* Inline abstract_compiler$AbstractCompilerVisitor$frame (self) on <self:SeparateErasureCompilerVisitor> */
2890 var113 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
2891 var111 = var113;
2892 RET_LABEL112:(void)0;
2893 }
2894 }
2895 if (var111 == NULL) {
2896 if(catchStack.cursor >= 0){
2897 longjmp(catchStack.envs[catchStack.cursor], 1);
2898 }
2899 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2900 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 521);
2901 fatal_exit(1);
2902 } else {
2903 { /* Inline abstract_compiler$StaticFrame$mpropdef (var111) on <var111:nullable StaticFrame> */
2904 if (unlikely(var111 == NULL)) {
2905 if(catchStack.cursor >= 0){
2906 longjmp(catchStack.envs[catchStack.cursor], 1);
2907 }
2908 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2909 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
2910 fatal_exit(1);
2911 }
2912 var116 = var111->attrs[COLOR_nitc__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var111:nullable StaticFrame> */
2913 if (unlikely(var116 == NULL)) {
2914 if(catchStack.cursor >= 0){
2915 longjmp(catchStack.envs[catchStack.cursor], 1);
2916 }
2917 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
2918 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
2919 fatal_exit(1);
2920 }
2921 var114 = var116;
2922 RET_LABEL115:(void)0;
2923 }
2924 }
2925 {
2926 { /* Inline model$MPropDef$mclassdef (var114) on <var114:MPropDef> */
2927 var119 = var114->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var114:MPropDef> */
2928 if (unlikely(var119 == NULL)) {
2929 if(catchStack.cursor >= 0){
2930 longjmp(catchStack.envs[catchStack.cursor], 1);
2931 }
2932 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
2933 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
2934 fatal_exit(1);
2935 }
2936 var117 = var119;
2937 RET_LABEL118:(void)0;
2938 }
2939 }
2940 {
2941 { /* Inline model$MClassDef$bound_mtype (var117) on <var117:MClassDef> */
2942 var122 = var117->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var117:MClassDef> */
2943 if (unlikely(var122 == NULL)) {
2944 if(catchStack.cursor >= 0){
2945 longjmp(catchStack.envs[catchStack.cursor], 1);
2946 }
2947 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
2948 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
2949 fatal_exit(1);
2950 }
2951 var120 = var122;
2952 RET_LABEL121:(void)0;
2953 }
2954 }
2955 {
2956 { /* Inline abstract_compiler$AbstractCompilerVisitor$frame (self) on <self:SeparateErasureCompilerVisitor> */
2957 var125 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
2958 var123 = var125;
2959 RET_LABEL124:(void)0;
2960 }
2961 }
2962 if (var123 == NULL) {
2963 if(catchStack.cursor >= 0){
2964 longjmp(catchStack.envs[catchStack.cursor], 1);
2965 }
2966 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2967 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 521);
2968 fatal_exit(1);
2969 } else {
2970 { /* Inline abstract_compiler$StaticFrame$mpropdef (var123) on <var123:nullable StaticFrame> */
2971 if (unlikely(var123 == NULL)) {
2972 if(catchStack.cursor >= 0){
2973 longjmp(catchStack.envs[catchStack.cursor], 1);
2974 }
2975 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2976 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
2977 fatal_exit(1);
2978 }
2979 var128 = var123->attrs[COLOR_nitc__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var123:nullable StaticFrame> */
2980 if (unlikely(var128 == NULL)) {
2981 if(catchStack.cursor >= 0){
2982 longjmp(catchStack.envs[catchStack.cursor], 1);
2983 }
2984 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
2985 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
2986 fatal_exit(1);
2987 }
2988 var126 = var128;
2989 RET_LABEL127:(void)0;
2990 }
2991 }
2992 {
2993 { /* Inline model$MPropDef$mclassdef (var126) on <var126:MPropDef> */
2994 var131 = var126->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var126:MPropDef> */
2995 if (unlikely(var131 == NULL)) {
2996 if(catchStack.cursor >= 0){
2997 longjmp(catchStack.envs[catchStack.cursor], 1);
2998 }
2999 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3000 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
3001 fatal_exit(1);
3002 }
3003 var129 = var131;
3004 RET_LABEL130:(void)0;
3005 }
3006 }
3007 {
3008 { /* Inline model$MClassDef$bound_mtype (var129) on <var129:MClassDef> */
3009 var134 = var129->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var129:MClassDef> */
3010 if (unlikely(var134 == NULL)) {
3011 if(catchStack.cursor >= 0){
3012 longjmp(catchStack.envs[catchStack.cursor], 1);
3013 }
3014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3015 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
3016 fatal_exit(1);
3017 }
3018 var132 = var134;
3019 RET_LABEL133:(void)0;
3020 }
3021 }
3022 {
3023 { /* Inline abstract_compiler$AbstractCompilerVisitor$frame (self) on <self:SeparateErasureCompilerVisitor> */
3024 var137 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
3025 var135 = var137;
3026 RET_LABEL136:(void)0;
3027 }
3028 }
3029 if (var135 == NULL) {
3030 if(catchStack.cursor >= 0){
3031 longjmp(catchStack.envs[catchStack.cursor], 1);
3032 }
3033 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3034 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 521);
3035 fatal_exit(1);
3036 } else {
3037 { /* Inline abstract_compiler$StaticFrame$mpropdef (var135) on <var135:nullable StaticFrame> */
3038 if (unlikely(var135 == NULL)) {
3039 if(catchStack.cursor >= 0){
3040 longjmp(catchStack.envs[catchStack.cursor], 1);
3041 }
3042 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3043 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
3044 fatal_exit(1);
3045 }
3046 var140 = var135->attrs[COLOR_nitc__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var135:nullable StaticFrame> */
3047 if (unlikely(var140 == NULL)) {
3048 if(catchStack.cursor >= 0){
3049 longjmp(catchStack.envs[catchStack.cursor], 1);
3050 }
3051 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3052 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
3053 fatal_exit(1);
3054 }
3055 var138 = var140;
3056 RET_LABEL139:(void)0;
3057 }
3058 }
3059 {
3060 { /* Inline model$MPropDef$mclassdef (var138) on <var138:MPropDef> */
3061 var143 = var138->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var138:MPropDef> */
3062 if (unlikely(var143 == NULL)) {
3063 if(catchStack.cursor >= 0){
3064 longjmp(catchStack.envs[catchStack.cursor], 1);
3065 }
3066 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3067 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
3068 fatal_exit(1);
3069 }
3070 var141 = var143;
3071 RET_LABEL142:(void)0;
3072 }
3073 }
3074 {
3075 { /* Inline model$MClassDef$mmodule (var141) on <var141:MClassDef> */
3076 var146 = var141->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var141:MClassDef> */
3077 if (unlikely(var146 == NULL)) {
3078 if(catchStack.cursor >= 0){
3079 longjmp(catchStack.envs[catchStack.cursor], 1);
3080 }
3081 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3082 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 588);
3083 fatal_exit(1);
3084 }
3085 var144 = var146;
3086 RET_LABEL145:(void)0;
3087 }
3088 }
3089 {
3090 var147 = nitc___nitc__MParameterType___MType__resolve_for(var_mtype, var120, var132, var144, 0);
3091 }
3092 var_mtype = var147;
3093 /* <var_mtype:MType> isa MNullableType */
3094 cltype149 = type_nitc__MNullableType.color;
3095 idtype150 = type_nitc__MNullableType.id;
3096 if(cltype149 >= var_mtype->type->table_size) {
3097 var148 = 0;
3098 } else {
3099 var148 = var_mtype->type->type_table[cltype149] == idtype150;
3100 }
3101 if (var148){
3102 {
3103 { /* Inline model$MProxyType$mtype (var_mtype) on <var_mtype:MType(MNullableType)> */
3104 var153 = var_mtype->attrs[COLOR_nitc__model__MProxyType___mtype].val; /* _mtype on <var_mtype:MType(MNullableType)> */
3105 if (unlikely(var153 == NULL)) {
3106 if(catchStack.cursor >= 0){
3107 longjmp(catchStack.envs[catchStack.cursor], 1);
3108 }
3109 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3110 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1689);
3111 fatal_exit(1);
3112 }
3113 var151 = var153;
3114 RET_LABEL152:(void)0;
3115 }
3116 }
3117 var_mtype = var151;
3118 if (likely(varonce154!=NULL)) {
3119 var155 = varonce154;
3120 } else {
3121 var156 = "1";
3122 var158 = (val*)(1l<<2|1);
3123 var159 = (val*)(1l<<2|1);
3124 var160 = (val*)((long)(0)<<2|3);
3125 var161 = (val*)((long)(0)<<2|3);
3126 var157 = core__flat___CString___to_s_unsafe(var156, var158, var159, var160, var161);
3127 var155 = var157;
3128 varonce154 = var155;
3129 }
3130 var_accept_null = var155;
3131 } else {
3132 }
3133 } else {
3134 }
3135 {
3136 { /* Inline abstract_compiler$RuntimeVariable$mcasttype (var_value) on <var_value:RuntimeVariable> */
3137 var164 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_value:RuntimeVariable> */
3138 if (unlikely(var164 == NULL)) {
3139 if(catchStack.cursor >= 0){
3140 longjmp(catchStack.envs[catchStack.cursor], 1);
3141 }
3142 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
3143 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1986);
3144 fatal_exit(1);
3145 }
3146 var162 = var164;
3147 RET_LABEL163:(void)0;
3148 }
3149 }
3150 {
3151 { /* Inline abstract_compiler$AbstractCompilerVisitor$frame (self) on <self:SeparateErasureCompilerVisitor> */
3152 var167 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
3153 var165 = var167;
3154 RET_LABEL166:(void)0;
3155 }
3156 }
3157 if (var165 == NULL) {
3158 if(catchStack.cursor >= 0){
3159 longjmp(catchStack.envs[catchStack.cursor], 1);
3160 }
3161 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3162 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 528);
3163 fatal_exit(1);
3164 } else {
3165 { /* Inline abstract_compiler$StaticFrame$mpropdef (var165) on <var165:nullable StaticFrame> */
3166 if (unlikely(var165 == NULL)) {
3167 if(catchStack.cursor >= 0){
3168 longjmp(catchStack.envs[catchStack.cursor], 1);
3169 }
3170 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3171 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
3172 fatal_exit(1);
3173 }
3174 var170 = var165->attrs[COLOR_nitc__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var165:nullable StaticFrame> */
3175 if (unlikely(var170 == NULL)) {
3176 if(catchStack.cursor >= 0){
3177 longjmp(catchStack.envs[catchStack.cursor], 1);
3178 }
3179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3180 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
3181 fatal_exit(1);
3182 }
3183 var168 = var170;
3184 RET_LABEL169:(void)0;
3185 }
3186 }
3187 {
3188 { /* Inline model$MPropDef$mclassdef (var168) on <var168:MPropDef> */
3189 var173 = var168->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var168:MPropDef> */
3190 if (unlikely(var173 == NULL)) {
3191 if(catchStack.cursor >= 0){
3192 longjmp(catchStack.envs[catchStack.cursor], 1);
3193 }
3194 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3195 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
3196 fatal_exit(1);
3197 }
3198 var171 = var173;
3199 RET_LABEL172:(void)0;
3200 }
3201 }
3202 {
3203 { /* Inline model$MClassDef$mmodule (var171) on <var171:MClassDef> */
3204 var176 = var171->attrs[COLOR_nitc__model__MClassDef___mmodule].val; /* _mmodule on <var171:MClassDef> */
3205 if (unlikely(var176 == NULL)) {
3206 if(catchStack.cursor >= 0){
3207 longjmp(catchStack.envs[catchStack.cursor], 1);
3208 }
3209 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3210 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 588);
3211 fatal_exit(1);
3212 }
3213 var174 = var176;
3214 RET_LABEL175:(void)0;
3215 }
3216 }
3217 {
3218 { /* Inline abstract_compiler$AbstractCompilerVisitor$frame (self) on <self:SeparateErasureCompilerVisitor> */
3219 var179 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
3220 var177 = var179;
3221 RET_LABEL178:(void)0;
3222 }
3223 }
3224 if (var177 == NULL) {
3225 if(catchStack.cursor >= 0){
3226 longjmp(catchStack.envs[catchStack.cursor], 1);
3227 }
3228 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3229 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 528);
3230 fatal_exit(1);
3231 } else {
3232 { /* Inline abstract_compiler$StaticFrame$mpropdef (var177) on <var177:nullable StaticFrame> */
3233 if (unlikely(var177 == NULL)) {
3234 if(catchStack.cursor >= 0){
3235 longjmp(catchStack.envs[catchStack.cursor], 1);
3236 }
3237 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3238 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
3239 fatal_exit(1);
3240 }
3241 var182 = var177->attrs[COLOR_nitc__abstract_compiler__StaticFrame___mpropdef].val; /* _mpropdef on <var177:nullable StaticFrame> */
3242 if (unlikely(var182 == NULL)) {
3243 if(catchStack.cursor >= 0){
3244 longjmp(catchStack.envs[catchStack.cursor], 1);
3245 }
3246 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
3247 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2027);
3248 fatal_exit(1);
3249 }
3250 var180 = var182;
3251 RET_LABEL181:(void)0;
3252 }
3253 }
3254 {
3255 { /* Inline model$MPropDef$mclassdef (var180) on <var180:MPropDef> */
3256 var185 = var180->attrs[COLOR_nitc__model__MPropDef___mclassdef].val; /* _mclassdef on <var180:MPropDef> */
3257 if (unlikely(var185 == NULL)) {
3258 if(catchStack.cursor >= 0){
3259 longjmp(catchStack.envs[catchStack.cursor], 1);
3260 }
3261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3262 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 2354);
3263 fatal_exit(1);
3264 }
3265 var183 = var185;
3266 RET_LABEL184:(void)0;
3267 }
3268 }
3269 {
3270 { /* Inline model$MClassDef$bound_mtype (var183) on <var183:MClassDef> */
3271 var188 = var183->attrs[COLOR_nitc__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var183:MClassDef> */
3272 if (unlikely(var188 == NULL)) {
3273 if(catchStack.cursor >= 0){
3274 longjmp(catchStack.envs[catchStack.cursor], 1);
3275 }
3276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3277 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 594);
3278 fatal_exit(1);
3279 }
3280 var186 = var188;
3281 RET_LABEL187:(void)0;
3282 }
3283 }
3284 {
3285 var189 = nitc___nitc__MType___is_subtype(var162, var174, var186, var_mtype);
3286 }
3287 if (var189){
3288 if (unlikely(varonce190==NULL)) {
3289 var191 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
3290 if (likely(varonce192!=NULL)) {
3291 var193 = varonce192;
3292 } else {
3293 var194 = " = 1; /* easy ";
3294 var196 = (val*)(14l<<2|1);
3295 var197 = (val*)(14l<<2|1);
3296 var198 = (val*)((long)(0)<<2|3);
3297 var199 = (val*)((long)(0)<<2|3);
3298 var195 = core__flat___CString___to_s_unsafe(var194, var196, var197, var198, var199);
3299 var193 = var195;
3300 varonce192 = var193;
3301 }
3302 ((struct instance_core__NativeArray*)var191)->values[1]=var193;
3303 if (likely(varonce200!=NULL)) {
3304 var201 = varonce200;
3305 } else {
3306 var202 = " isa ";
3307 var204 = (val*)(5l<<2|1);
3308 var205 = (val*)(5l<<2|1);
3309 var206 = (val*)((long)(0)<<2|3);
3310 var207 = (val*)((long)(0)<<2|3);
3311 var203 = core__flat___CString___to_s_unsafe(var202, var204, var205, var206, var207);
3312 var201 = var203;
3313 varonce200 = var201;
3314 }
3315 ((struct instance_core__NativeArray*)var191)->values[3]=var201;
3316 if (likely(varonce208!=NULL)) {
3317 var209 = varonce208;
3318 } else {
3319 var210 = "*/";
3320 var212 = (val*)(2l<<2|1);
3321 var213 = (val*)(2l<<2|1);
3322 var214 = (val*)((long)(0)<<2|3);
3323 var215 = (val*)((long)(0)<<2|3);
3324 var211 = core__flat___CString___to_s_unsafe(var210, var212, var213, var214, var215);
3325 var209 = var211;
3326 varonce208 = var209;
3327 }
3328 ((struct instance_core__NativeArray*)var191)->values[5]=var209;
3329 } else {
3330 var191 = varonce190;
3331 varonce190 = NULL;
3332 }
3333 {
3334 var216 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
3335 }
3336 ((struct instance_core__NativeArray*)var191)->values[0]=var216;
3337 {
3338 var217 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_value);
3339 }
3340 ((struct instance_core__NativeArray*)var191)->values[2]=var217;
3341 {
3342 var218 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
3343 }
3344 ((struct instance_core__NativeArray*)var191)->values[4]=var218;
3345 {
3346 var219 = ((val*(*)(val* self))(var191->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var191); /* native_to_s on <var191:NativeArray[String]>*/
3347 }
3348 varonce190 = var191;
3349 {
3350 nitc___nitc__AbstractCompilerVisitor___add(self, var219); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
3351 }
3352 {
3353 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
3354 var222 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3355 if (unlikely(var222 == NULL)) {
3356 if(catchStack.cursor >= 0){
3357 longjmp(catchStack.envs[catchStack.cursor], 1);
3358 }
3359 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3360 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
3361 fatal_exit(1);
3362 }
3363 var220 = var222;
3364 RET_LABEL221:(void)0;
3365 }
3366 }
3367 {
3368 { /* Inline abstract_compiler$AbstractCompiler$modelbuilder (var220) on <var220:AbstractCompiler(SeparateCompiler)> */
3369 var225 = var220->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var220:AbstractCompiler(SeparateCompiler)> */
3370 if (unlikely(var225 == NULL)) {
3371 if(catchStack.cursor >= 0){
3372 longjmp(catchStack.envs[catchStack.cursor], 1);
3373 }
3374 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3375 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
3376 fatal_exit(1);
3377 }
3378 var223 = var225;
3379 RET_LABEL224:(void)0;
3380 }
3381 }
3382 {
3383 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var223) on <var223:ModelBuilder> */
3384 var228 = var223->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var223:ModelBuilder> */
3385 if (unlikely(var228 == NULL)) {
3386 if(catchStack.cursor >= 0){
3387 longjmp(catchStack.envs[catchStack.cursor], 1);
3388 }
3389 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3390 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
3391 fatal_exit(1);
3392 }
3393 var226 = var228;
3394 RET_LABEL227:(void)0;
3395 }
3396 }
3397 {
3398 { /* Inline abstract_compiler$ToolContext$opt_typing_test_metrics (var226) on <var226:ToolContext> */
3399 var231 = var226->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var226:ToolContext> */
3400 if (unlikely(var231 == NULL)) {
3401 if(catchStack.cursor >= 0){
3402 longjmp(catchStack.envs[catchStack.cursor], 1);
3403 }
3404 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
3405 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 60);
3406 fatal_exit(1);
3407 }
3408 var229 = var231;
3409 RET_LABEL230:(void)0;
3410 }
3411 }
3412 {
3413 { /* Inline opts$Option$value (var229) on <var229:OptionBool> */
3414 var234 = var229->attrs[COLOR_opts__Option___value].val; /* _value on <var229:OptionBool> */
3415 var232 = var234;
3416 RET_LABEL233:(void)0;
3417 }
3418 }
3419 var235 = (short int)((long)(var232)>>2);
3420 if (var235){
3421 {
3422 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
3423 var238 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3424 if (unlikely(var238 == NULL)) {
3425 if(catchStack.cursor >= 0){
3426 longjmp(catchStack.envs[catchStack.cursor], 1);
3427 }
3428 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3429 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
3430 fatal_exit(1);
3431 }
3432 var236 = var238;
3433 RET_LABEL237:(void)0;
3434 }
3435 }
3436 {
3437 { /* Inline abstract_compiler$AbstractCompiler$count_type_test_skipped (var236) on <var236:AbstractCompiler(SeparateCompiler)> */
3438 var241 = var236->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___count_type_test_skipped].val; /* _count_type_test_skipped on <var236:AbstractCompiler(SeparateCompiler)> */
3439 if (unlikely(var241 == NULL)) {
3440 if(catchStack.cursor >= 0){
3441 longjmp(catchStack.envs[catchStack.cursor], 1);
3442 }
3443 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_skipped");
3444 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1113);
3445 fatal_exit(1);
3446 }
3447 var239 = var241;
3448 RET_LABEL240:(void)0;
3449 }
3450 }
3451 var_ = var239;
3452 var_242 = var_tag;
3453 {
3454 var243 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_, var_242);
3455 }
3456 {
3457 { /* Inline kernel$Int$+ (var243,1l) on <var243:nullable Object(Int)> */
3458 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3459 /* <1l:Int> isa OTHER */
3460 var246 = 1; /* easy <1l:Int> isa OTHER*/
3461 if (unlikely(!var246)) {
3462 var_class_name = type_core__Int.name;
3463 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3464 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
3465 fatal_exit(1);
3466 }
3467 var249 = (long)(var243)>>2;
3468 var250 = var249 + 1l;
3469 var244 = var250;
3470 goto RET_LABEL245;
3471 RET_LABEL245:(void)0;
3472 }
3473 }
3474 {
3475 var251 = (val*)(var244<<2|1);
3476 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_, var_242, var251); /* Direct call hash_collection$HashMap$[]= on <var_:HashMap[String, Int]>*/
3477 }
3478 if (unlikely(varonce252==NULL)) {
3479 var253 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3480 if (likely(varonce254!=NULL)) {
3481 var255 = varonce254;
3482 } else {
3483 var256 = "count_type_test_skipped_";
3484 var258 = (val*)(24l<<2|1);
3485 var259 = (val*)(24l<<2|1);
3486 var260 = (val*)((long)(0)<<2|3);
3487 var261 = (val*)((long)(0)<<2|3);
3488 var257 = core__flat___CString___to_s_unsafe(var256, var258, var259, var260, var261);
3489 var255 = var257;
3490 varonce254 = var255;
3491 }
3492 ((struct instance_core__NativeArray*)var253)->values[0]=var255;
3493 if (likely(varonce262!=NULL)) {
3494 var263 = varonce262;
3495 } else {
3496 var264 = "++;";
3497 var266 = (val*)(3l<<2|1);
3498 var267 = (val*)(3l<<2|1);
3499 var268 = (val*)((long)(0)<<2|3);
3500 var269 = (val*)((long)(0)<<2|3);
3501 var265 = core__flat___CString___to_s_unsafe(var264, var266, var267, var268, var269);
3502 var263 = var265;
3503 varonce262 = var263;
3504 }
3505 ((struct instance_core__NativeArray*)var253)->values[2]=var263;
3506 } else {
3507 var253 = varonce252;
3508 varonce252 = NULL;
3509 }
3510 ((struct instance_core__NativeArray*)var253)->values[1]=var_tag;
3511 {
3512 var270 = ((val*(*)(val* self))(var253->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var253); /* native_to_s on <var253:NativeArray[String]>*/
3513 }
3514 varonce252 = var253;
3515 {
3516 nitc___nitc__AbstractCompilerVisitor___add(self, var270); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
3517 }
3518 } else {
3519 }
3520 var = var_res;
3521 goto RET_LABEL;
3522 } else {
3523 }
3524 {
3525 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
3526 var273 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3527 if (unlikely(var273 == NULL)) {
3528 if(catchStack.cursor >= 0){
3529 longjmp(catchStack.envs[catchStack.cursor], 1);
3530 }
3531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3532 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
3533 fatal_exit(1);
3534 }
3535 var271 = var273;
3536 RET_LABEL272:(void)0;
3537 }
3538 }
3539 {
3540 var274 = ((short int(*)(val* self))(var271->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var271); /* is_c_primitive on <var271:MType>*/
3541 }
3542 var275 = !var274;
3543 if (var275){
3544 if (unlikely(varonce276==NULL)) {
3545 var277 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3546 if (likely(varonce278!=NULL)) {
3547 var279 = varonce278;
3548 } else {
3549 var280 = "->class->";
3550 var282 = (val*)(9l<<2|1);
3551 var283 = (val*)(9l<<2|1);
3552 var284 = (val*)((long)(0)<<2|3);
3553 var285 = (val*)((long)(0)<<2|3);
3554 var281 = core__flat___CString___to_s_unsafe(var280, var282, var283, var284, var285);
3555 var279 = var281;
3556 varonce278 = var279;
3557 }
3558 ((struct instance_core__NativeArray*)var277)->values[1]=var279;
3559 } else {
3560 var277 = varonce276;
3561 varonce276 = NULL;
3562 }
3563 {
3564 var286 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
3565 }
3566 ((struct instance_core__NativeArray*)var277)->values[0]=var286;
3567 {
3568 var287 = ((val*(*)(val* self))(var277->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var277); /* native_to_s on <var277:NativeArray[String]>*/
3569 }
3570 varonce276 = var277;
3571 var_class_ptr = var287;
3572 } else {
3573 {
3574 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
3575 var290 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
3576 if (unlikely(var290 == NULL)) {
3577 if(catchStack.cursor >= 0){
3578 longjmp(catchStack.envs[catchStack.cursor], 1);
3579 }
3580 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3581 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
3582 fatal_exit(1);
3583 }
3584 var288 = var290;
3585 RET_LABEL289:(void)0;
3586 }
3587 }
3588 /* <var288:MType> isa MClassType */
3589 cltype292 = type_nitc__MClassType.color;
3590 idtype293 = type_nitc__MClassType.id;
3591 if(cltype292 >= var288->type->table_size) {
3592 var291 = 0;
3593 } else {
3594 var291 = var288->type->type_table[cltype292] == idtype293;
3595 }
3596 if (unlikely(!var291)) {
3597 var_class_name294 = var288 == NULL ? "null" : var288->type->name;
3598 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name294);
3599 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 541);
3600 fatal_exit(1);
3601 }
3602 {
3603 { /* Inline model$MClassType$mclass (var288) on <var288:MType(MClassType)> */
3604 var297 = var288->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var288:MType(MClassType)> */
3605 if (unlikely(var297 == NULL)) {
3606 if(catchStack.cursor >= 0){
3607 longjmp(catchStack.envs[catchStack.cursor], 1);
3608 }
3609 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3610 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
3611 fatal_exit(1);
3612 }
3613 var295 = var297;
3614 RET_LABEL296:(void)0;
3615 }
3616 }
3617 var_mclass = var295;
3618 if (unlikely(varonce298==NULL)) {
3619 var299 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3620 if (likely(varonce300!=NULL)) {
3621 var301 = varonce300;
3622 } else {
3623 var302 = "class_";
3624 var304 = (val*)(6l<<2|1);
3625 var305 = (val*)(6l<<2|1);
3626 var306 = (val*)((long)(0)<<2|3);
3627 var307 = (val*)((long)(0)<<2|3);
3628 var303 = core__flat___CString___to_s_unsafe(var302, var304, var305, var306, var307);
3629 var301 = var303;
3630 varonce300 = var301;
3631 }
3632 ((struct instance_core__NativeArray*)var299)->values[0]=var301;
3633 } else {
3634 var299 = varonce298;
3635 varonce298 = NULL;
3636 }
3637 {
3638 var308 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass);
3639 }
3640 ((struct instance_core__NativeArray*)var299)->values[1]=var308;
3641 {
3642 var309 = ((val*(*)(val* self))(var299->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var299); /* native_to_s on <var299:NativeArray[String]>*/
3643 }
3644 varonce298 = var299;
3645 {
3646 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var309); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
3647 }
3648 if (unlikely(varonce310==NULL)) {
3649 var311 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3650 if (likely(varonce312!=NULL)) {
3651 var313 = varonce312;
3652 } else {
3653 var314 = "class_";
3654 var316 = (val*)(6l<<2|1);
3655 var317 = (val*)(6l<<2|1);
3656 var318 = (val*)((long)(0)<<2|3);
3657 var319 = (val*)((long)(0)<<2|3);
3658 var315 = core__flat___CString___to_s_unsafe(var314, var316, var317, var318, var319);
3659 var313 = var315;
3660 varonce312 = var313;
3661 }
3662 ((struct instance_core__NativeArray*)var311)->values[0]=var313;
3663 if (likely(varonce320!=NULL)) {
3664 var321 = varonce320;
3665 } else {
3666 var322 = ".";
3667 var324 = (val*)(1l<<2|1);
3668 var325 = (val*)(1l<<2|1);
3669 var326 = (val*)((long)(0)<<2|3);
3670 var327 = (val*)((long)(0)<<2|3);
3671 var323 = core__flat___CString___to_s_unsafe(var322, var324, var325, var326, var327);
3672 var321 = var323;
3673 varonce320 = var321;
3674 }
3675 ((struct instance_core__NativeArray*)var311)->values[2]=var321;
3676 } else {
3677 var311 = varonce310;
3678 varonce310 = NULL;
3679 }
3680 {
3681 var328 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass);
3682 }
3683 ((struct instance_core__NativeArray*)var311)->values[1]=var328;
3684 {
3685 var329 = ((val*(*)(val* self))(var311->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var311); /* native_to_s on <var311:NativeArray[String]>*/
3686 }
3687 varonce310 = var311;
3688 var_class_ptr = var329;
3689 }
3690 /* <var_mtype:MType> isa MClassType */
3691 cltype331 = type_nitc__MClassType.color;
3692 idtype332 = type_nitc__MClassType.id;
3693 if(cltype331 >= var_mtype->type->table_size) {
3694 var330 = 0;
3695 } else {
3696 var330 = var_mtype->type->type_table[cltype331] == idtype332;
3697 }
3698 if (var330){
3699 if (unlikely(varonce333==NULL)) {
3700 var334 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
3701 if (likely(varonce335!=NULL)) {
3702 var336 = varonce335;
3703 } else {
3704 var337 = "class_";
3705 var339 = (val*)(6l<<2|1);
3706 var340 = (val*)(6l<<2|1);
3707 var341 = (val*)((long)(0)<<2|3);
3708 var342 = (val*)((long)(0)<<2|3);
3709 var338 = core__flat___CString___to_s_unsafe(var337, var339, var340, var341, var342);
3710 var336 = var338;
3711 varonce335 = var336;
3712 }
3713 ((struct instance_core__NativeArray*)var334)->values[0]=var336;
3714 } else {
3715 var334 = varonce333;
3716 varonce333 = NULL;
3717 }
3718 {
3719 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MType(MClassType)> */
3720 var345 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
3721 if (unlikely(var345 == NULL)) {
3722 if(catchStack.cursor >= 0){
3723 longjmp(catchStack.envs[catchStack.cursor], 1);
3724 }
3725 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3726 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
3727 fatal_exit(1);
3728 }
3729 var343 = var345;
3730 RET_LABEL344:(void)0;
3731 }
3732 }
3733 {
3734 var346 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var343);
3735 }
3736 ((struct instance_core__NativeArray*)var334)->values[1]=var346;
3737 {
3738 var347 = ((val*(*)(val* self))(var334->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var334); /* native_to_s on <var334:NativeArray[String]>*/
3739 }
3740 varonce333 = var334;
3741 {
3742 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var347); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
3743 }
3744 if (unlikely(varonce348==NULL)) {
3745 var349 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
3746 if (likely(varonce350!=NULL)) {
3747 var351 = varonce350;
3748 } else {
3749 var352 = " = class_";
3750 var354 = (val*)(9l<<2|1);
3751 var355 = (val*)(9l<<2|1);
3752 var356 = (val*)((long)(0)<<2|3);
3753 var357 = (val*)((long)(0)<<2|3);
3754 var353 = core__flat___CString___to_s_unsafe(var352, var354, var355, var356, var357);
3755 var351 = var353;
3756 varonce350 = var351;
3757 }
3758 ((struct instance_core__NativeArray*)var349)->values[1]=var351;
3759 if (likely(varonce358!=NULL)) {
3760 var359 = varonce358;
3761 } else {
3762 var360 = ".color;";
3763 var362 = (val*)(7l<<2|1);
3764 var363 = (val*)(7l<<2|1);
3765 var364 = (val*)((long)(0)<<2|3);
3766 var365 = (val*)((long)(0)<<2|3);
3767 var361 = core__flat___CString___to_s_unsafe(var360, var362, var363, var364, var365);
3768 var359 = var361;
3769 varonce358 = var359;
3770 }
3771 ((struct instance_core__NativeArray*)var349)->values[3]=var359;
3772 } else {
3773 var349 = varonce348;
3774 varonce348 = NULL;
3775 }
3776 ((struct instance_core__NativeArray*)var349)->values[0]=var_cltype;
3777 {
3778 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MType(MClassType)> */
3779 var368 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
3780 if (unlikely(var368 == NULL)) {
3781 if(catchStack.cursor >= 0){
3782 longjmp(catchStack.envs[catchStack.cursor], 1);
3783 }
3784 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3785 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
3786 fatal_exit(1);
3787 }
3788 var366 = var368;
3789 RET_LABEL367:(void)0;
3790 }
3791 }
3792 {
3793 var369 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var366);
3794 }
3795 ((struct instance_core__NativeArray*)var349)->values[2]=var369;
3796 {
3797 var370 = ((val*(*)(val* self))(var349->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var349); /* native_to_s on <var349:NativeArray[String]>*/
3798 }
3799 varonce348 = var349;
3800 {
3801 nitc___nitc__AbstractCompilerVisitor___add(self, var370); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
3802 }
3803 if (unlikely(varonce371==NULL)) {
3804 var372 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
3805 if (likely(varonce373!=NULL)) {
3806 var374 = varonce373;
3807 } else {
3808 var375 = " = class_";
3809 var377 = (val*)(9l<<2|1);
3810 var378 = (val*)(9l<<2|1);
3811 var379 = (val*)((long)(0)<<2|3);
3812 var380 = (val*)((long)(0)<<2|3);
3813 var376 = core__flat___CString___to_s_unsafe(var375, var377, var378, var379, var380);
3814 var374 = var376;
3815 varonce373 = var374;
3816 }
3817 ((struct instance_core__NativeArray*)var372)->values[1]=var374;
3818 if (likely(varonce381!=NULL)) {
3819 var382 = varonce381;
3820 } else {
3821 var383 = ".id;";
3822 var385 = (val*)(4l<<2|1);
3823 var386 = (val*)(4l<<2|1);
3824 var387 = (val*)((long)(0)<<2|3);
3825 var388 = (val*)((long)(0)<<2|3);
3826 var384 = core__flat___CString___to_s_unsafe(var383, var385, var386, var387, var388);
3827 var382 = var384;
3828 varonce381 = var382;
3829 }
3830 ((struct instance_core__NativeArray*)var372)->values[3]=var382;
3831 } else {
3832 var372 = varonce371;
3833 varonce371 = NULL;
3834 }
3835 ((struct instance_core__NativeArray*)var372)->values[0]=var_idtype;
3836 {
3837 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MType(MClassType)> */
3838 var391 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
3839 if (unlikely(var391 == NULL)) {
3840 if(catchStack.cursor >= 0){
3841 longjmp(catchStack.envs[catchStack.cursor], 1);
3842 }
3843 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3844 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
3845 fatal_exit(1);
3846 }
3847 var389 = var391;
3848 RET_LABEL390:(void)0;
3849 }
3850 }
3851 {
3852 var392 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var389);
3853 }
3854 ((struct instance_core__NativeArray*)var372)->values[2]=var392;
3855 {
3856 var393 = ((val*(*)(val* self))(var372->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var372); /* native_to_s on <var372:NativeArray[String]>*/
3857 }
3858 varonce371 = var372;
3859 {
3860 nitc___nitc__AbstractCompilerVisitor___add(self, var393); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
3861 }
3862 {
3863 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
3864 var396 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3865 if (unlikely(var396 == NULL)) {
3866 if(catchStack.cursor >= 0){
3867 longjmp(catchStack.envs[catchStack.cursor], 1);
3868 }
3869 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3870 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
3871 fatal_exit(1);
3872 }
3873 var394 = var396;
3874 RET_LABEL395:(void)0;
3875 }
3876 }
3877 {
3878 { /* Inline abstract_compiler$AbstractCompiler$modelbuilder (var394) on <var394:AbstractCompiler(SeparateCompiler)> */
3879 var399 = var394->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var394:AbstractCompiler(SeparateCompiler)> */
3880 if (unlikely(var399 == NULL)) {
3881 if(catchStack.cursor >= 0){
3882 longjmp(catchStack.envs[catchStack.cursor], 1);
3883 }
3884 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3885 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
3886 fatal_exit(1);
3887 }
3888 var397 = var399;
3889 RET_LABEL398:(void)0;
3890 }
3891 }
3892 {
3893 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var397) on <var397:ModelBuilder> */
3894 var402 = var397->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var397:ModelBuilder> */
3895 if (unlikely(var402 == NULL)) {
3896 if(catchStack.cursor >= 0){
3897 longjmp(catchStack.envs[catchStack.cursor], 1);
3898 }
3899 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3900 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
3901 fatal_exit(1);
3902 }
3903 var400 = var402;
3904 RET_LABEL401:(void)0;
3905 }
3906 }
3907 {
3908 { /* Inline abstract_compiler$ToolContext$opt_typing_test_metrics (var400) on <var400:ToolContext> */
3909 var405 = var400->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var400:ToolContext> */
3910 if (unlikely(var405 == NULL)) {
3911 if(catchStack.cursor >= 0){
3912 longjmp(catchStack.envs[catchStack.cursor], 1);
3913 }
3914 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
3915 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 60);
3916 fatal_exit(1);
3917 }
3918 var403 = var405;
3919 RET_LABEL404:(void)0;
3920 }
3921 }
3922 {
3923 { /* Inline opts$Option$value (var403) on <var403:OptionBool> */
3924 var408 = var403->attrs[COLOR_opts__Option___value].val; /* _value on <var403:OptionBool> */
3925 var406 = var408;
3926 RET_LABEL407:(void)0;
3927 }
3928 }
3929 var409 = (short int)((long)(var406)>>2);
3930 if (var409){
3931 {
3932 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
3933 var412 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
3934 if (unlikely(var412 == NULL)) {
3935 if(catchStack.cursor >= 0){
3936 longjmp(catchStack.envs[catchStack.cursor], 1);
3937 }
3938 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3939 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
3940 fatal_exit(1);
3941 }
3942 var410 = var412;
3943 RET_LABEL411:(void)0;
3944 }
3945 }
3946 {
3947 { /* Inline abstract_compiler$AbstractCompiler$count_type_test_resolved (var410) on <var410:AbstractCompiler(SeparateCompiler)> */
3948 var415 = var410->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___count_type_test_resolved].val; /* _count_type_test_resolved on <var410:AbstractCompiler(SeparateCompiler)> */
3949 if (unlikely(var415 == NULL)) {
3950 if(catchStack.cursor >= 0){
3951 longjmp(catchStack.envs[catchStack.cursor], 1);
3952 }
3953 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_resolved");
3954 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1111);
3955 fatal_exit(1);
3956 }
3957 var413 = var415;
3958 RET_LABEL414:(void)0;
3959 }
3960 }
3961 var_416 = var413;
3962 var_417 = var_tag;
3963 {
3964 var418 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_416, var_417);
3965 }
3966 {
3967 { /* Inline kernel$Int$+ (var418,1l) on <var418:nullable Object(Int)> */
3968 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
3969 /* <1l:Int> isa OTHER */
3970 var421 = 1; /* easy <1l:Int> isa OTHER*/
3971 if (unlikely(!var421)) {
3972 var_class_name424 = type_core__Int.name;
3973 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name424);
3974 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
3975 fatal_exit(1);
3976 }
3977 var425 = (long)(var418)>>2;
3978 var426 = var425 + 1l;
3979 var419 = var426;
3980 goto RET_LABEL420;
3981 RET_LABEL420:(void)0;
3982 }
3983 }
3984 {
3985 var427 = (val*)(var419<<2|1);
3986 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_416, var_417, var427); /* Direct call hash_collection$HashMap$[]= on <var_416:HashMap[String, Int]>*/
3987 }
3988 if (unlikely(varonce428==NULL)) {
3989 var429 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
3990 if (likely(varonce430!=NULL)) {
3991 var431 = varonce430;
3992 } else {
3993 var432 = "count_type_test_resolved_";
3994 var434 = (val*)(25l<<2|1);
3995 var435 = (val*)(25l<<2|1);
3996 var436 = (val*)((long)(0)<<2|3);
3997 var437 = (val*)((long)(0)<<2|3);
3998 var433 = core__flat___CString___to_s_unsafe(var432, var434, var435, var436, var437);
3999 var431 = var433;
4000 varonce430 = var431;
4001 }
4002 ((struct instance_core__NativeArray*)var429)->values[0]=var431;
4003 if (likely(varonce438!=NULL)) {
4004 var439 = varonce438;
4005 } else {
4006 var440 = "++;";
4007 var442 = (val*)(3l<<2|1);
4008 var443 = (val*)(3l<<2|1);
4009 var444 = (val*)((long)(0)<<2|3);
4010 var445 = (val*)((long)(0)<<2|3);
4011 var441 = core__flat___CString___to_s_unsafe(var440, var442, var443, var444, var445);
4012 var439 = var441;
4013 varonce438 = var439;
4014 }
4015 ((struct instance_core__NativeArray*)var429)->values[2]=var439;
4016 } else {
4017 var429 = varonce428;
4018 varonce428 = NULL;
4019 }
4020 ((struct instance_core__NativeArray*)var429)->values[1]=var_tag;
4021 {
4022 var446 = ((val*(*)(val* self))(var429->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var429); /* native_to_s on <var429:NativeArray[String]>*/
4023 }
4024 varonce428 = var429;
4025 {
4026 nitc___nitc__AbstractCompilerVisitor___add(self, var446); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4027 }
4028 } else {
4029 }
4030 } else {
4031 /* <var_mtype:MType> isa MVirtualType */
4032 cltype448 = type_nitc__MVirtualType.color;
4033 idtype449 = type_nitc__MVirtualType.id;
4034 if(cltype448 >= var_mtype->type->table_size) {
4035 var447 = 0;
4036 } else {
4037 var447 = var_mtype->type->type_table[cltype448] == idtype449;
4038 }
4039 if (var447){
4040 {
4041 { /* Inline abstract_compiler$AbstractCompilerVisitor$frame (self) on <self:SeparateErasureCompilerVisitor> */
4042 var452 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateErasureCompilerVisitor> */
4043 var450 = var452;
4044 RET_LABEL451:(void)0;
4045 }
4046 }
4047 if (var450 == NULL) {
4048 if(catchStack.cursor >= 0){
4049 longjmp(catchStack.envs[catchStack.cursor], 1);
4050 }
4051 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4052 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 555);
4053 fatal_exit(1);
4054 } else {
4055 { /* Inline abstract_compiler$StaticFrame$arguments (var450) on <var450:nullable StaticFrame> */
4056 if (unlikely(var450 == NULL)) {
4057 if(catchStack.cursor >= 0){
4058 longjmp(catchStack.envs[catchStack.cursor], 1);
4059 }
4060 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4061 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2034);
4062 fatal_exit(1);
4063 }
4064 var455 = var450->attrs[COLOR_nitc__abstract_compiler__StaticFrame___arguments].val; /* _arguments on <var450:nullable StaticFrame> */
4065 if (unlikely(var455 == NULL)) {
4066 if(catchStack.cursor >= 0){
4067 longjmp(catchStack.envs[catchStack.cursor], 1);
4068 }
4069 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
4070 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 2034);
4071 fatal_exit(1);
4072 }
4073 var453 = var455;
4074 RET_LABEL454:(void)0;
4075 }
4076 }
4077 {
4078 var456 = core___core__SequenceRead___Collection__first(var453);
4079 }
4080 var_recv = var456;
4081 {
4082 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_recv) on <var_recv:RuntimeVariable> */
4083 var459 = var_recv->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
4084 if (unlikely(var459 == NULL)) {
4085 if(catchStack.cursor >= 0){
4086 longjmp(catchStack.envs[catchStack.cursor], 1);
4087 }
4088 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4089 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
4090 fatal_exit(1);
4091 }
4092 var457 = var459;
4093 RET_LABEL458:(void)0;
4094 }
4095 }
4096 {
4097 var460 = ((short int(*)(val* self))(var457->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var457); /* is_c_primitive on <var457:MType>*/
4098 }
4099 var461 = !var460;
4100 if (var461){
4101 if (unlikely(varonce462==NULL)) {
4102 var463 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4103 if (likely(varonce464!=NULL)) {
4104 var465 = varonce464;
4105 } else {
4106 var466 = "->class->";
4107 var468 = (val*)(9l<<2|1);
4108 var469 = (val*)(9l<<2|1);
4109 var470 = (val*)((long)(0)<<2|3);
4110 var471 = (val*)((long)(0)<<2|3);
4111 var467 = core__flat___CString___to_s_unsafe(var466, var468, var469, var470, var471);
4112 var465 = var467;
4113 varonce464 = var465;
4114 }
4115 ((struct instance_core__NativeArray*)var463)->values[1]=var465;
4116 } else {
4117 var463 = varonce462;
4118 varonce462 = NULL;
4119 }
4120 {
4121 var472 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_recv); /* to_s on <var_recv:RuntimeVariable>*/
4122 }
4123 ((struct instance_core__NativeArray*)var463)->values[0]=var472;
4124 {
4125 var473 = ((val*(*)(val* self))(var463->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var463); /* native_to_s on <var463:NativeArray[String]>*/
4126 }
4127 varonce462 = var463;
4128 var_recv_ptr = var473;
4129 } else {
4130 {
4131 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_recv) on <var_recv:RuntimeVariable> */
4132 var476 = var_recv->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
4133 if (unlikely(var476 == NULL)) {
4134 if(catchStack.cursor >= 0){
4135 longjmp(catchStack.envs[catchStack.cursor], 1);
4136 }
4137 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
4138 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
4139 fatal_exit(1);
4140 }
4141 var474 = var476;
4142 RET_LABEL475:(void)0;
4143 }
4144 }
4145 /* <var474:MType> isa MClassType */
4146 cltype478 = type_nitc__MClassType.color;
4147 idtype479 = type_nitc__MClassType.id;
4148 if(cltype478 >= var474->type->table_size) {
4149 var477 = 0;
4150 } else {
4151 var477 = var474->type->type_table[cltype478] == idtype479;
4152 }
4153 if (unlikely(!var477)) {
4154 var_class_name480 = var474 == NULL ? "null" : var474->type->name;
4155 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name480);
4156 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 560);
4157 fatal_exit(1);
4158 }
4159 {
4160 { /* Inline model$MClassType$mclass (var474) on <var474:MType(MClassType)> */
4161 var483 = var474->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var474:MType(MClassType)> */
4162 if (unlikely(var483 == NULL)) {
4163 if(catchStack.cursor >= 0){
4164 longjmp(catchStack.envs[catchStack.cursor], 1);
4165 }
4166 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4167 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
4168 fatal_exit(1);
4169 }
4170 var481 = var483;
4171 RET_LABEL482:(void)0;
4172 }
4173 }
4174 var_mclass484 = var481;
4175 if (unlikely(varonce485==NULL)) {
4176 var486 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
4177 if (likely(varonce487!=NULL)) {
4178 var488 = varonce487;
4179 } else {
4180 var489 = "class_";
4181 var491 = (val*)(6l<<2|1);
4182 var492 = (val*)(6l<<2|1);
4183 var493 = (val*)((long)(0)<<2|3);
4184 var494 = (val*)((long)(0)<<2|3);
4185 var490 = core__flat___CString___to_s_unsafe(var489, var491, var492, var493, var494);
4186 var488 = var490;
4187 varonce487 = var488;
4188 }
4189 ((struct instance_core__NativeArray*)var486)->values[0]=var488;
4190 } else {
4191 var486 = varonce485;
4192 varonce485 = NULL;
4193 }
4194 {
4195 var495 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass484);
4196 }
4197 ((struct instance_core__NativeArray*)var486)->values[1]=var495;
4198 {
4199 var496 = ((val*(*)(val* self))(var486->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var486); /* native_to_s on <var486:NativeArray[String]>*/
4200 }
4201 varonce485 = var486;
4202 {
4203 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var496); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
4204 }
4205 if (unlikely(varonce497==NULL)) {
4206 var498 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4207 if (likely(varonce499!=NULL)) {
4208 var500 = varonce499;
4209 } else {
4210 var501 = "class_";
4211 var503 = (val*)(6l<<2|1);
4212 var504 = (val*)(6l<<2|1);
4213 var505 = (val*)((long)(0)<<2|3);
4214 var506 = (val*)((long)(0)<<2|3);
4215 var502 = core__flat___CString___to_s_unsafe(var501, var503, var504, var505, var506);
4216 var500 = var502;
4217 varonce499 = var500;
4218 }
4219 ((struct instance_core__NativeArray*)var498)->values[0]=var500;
4220 if (likely(varonce507!=NULL)) {
4221 var508 = varonce507;
4222 } else {
4223 var509 = ".";
4224 var511 = (val*)(1l<<2|1);
4225 var512 = (val*)(1l<<2|1);
4226 var513 = (val*)((long)(0)<<2|3);
4227 var514 = (val*)((long)(0)<<2|3);
4228 var510 = core__flat___CString___to_s_unsafe(var509, var511, var512, var513, var514);
4229 var508 = var510;
4230 varonce507 = var508;
4231 }
4232 ((struct instance_core__NativeArray*)var498)->values[2]=var508;
4233 } else {
4234 var498 = varonce497;
4235 varonce497 = NULL;
4236 }
4237 {
4238 var515 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_mclass484);
4239 }
4240 ((struct instance_core__NativeArray*)var498)->values[1]=var515;
4241 {
4242 var516 = ((val*(*)(val* self))(var498->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var498); /* native_to_s on <var498:NativeArray[String]>*/
4243 }
4244 varonce497 = var498;
4245 var_recv_ptr = var516;
4246 }
4247 if (likely(varonce517!=NULL)) {
4248 var518 = varonce517;
4249 } else {
4250 var519 = "entry";
4251 var521 = (val*)(5l<<2|1);
4252 var522 = (val*)(5l<<2|1);
4253 var523 = (val*)((long)(0)<<2|3);
4254 var524 = (val*)((long)(0)<<2|3);
4255 var520 = core__flat___CString___to_s_unsafe(var519, var521, var522, var523, var524);
4256 var518 = var520;
4257 varonce517 = var518;
4258 }
4259 {
4260 var525 = nitc___nitc__AbstractCompilerVisitor___get_name(self, var518);
4261 }
4262 var_entry = var525;
4263 if (unlikely(varonce526==NULL)) {
4264 var527 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4265 if (likely(varonce528!=NULL)) {
4266 var529 = varonce528;
4267 } else {
4268 var530 = "struct vts_entry ";
4269 var532 = (val*)(17l<<2|1);
4270 var533 = (val*)(17l<<2|1);
4271 var534 = (val*)((long)(0)<<2|3);
4272 var535 = (val*)((long)(0)<<2|3);
4273 var531 = core__flat___CString___to_s_unsafe(var530, var532, var533, var534, var535);
4274 var529 = var531;
4275 varonce528 = var529;
4276 }
4277 ((struct instance_core__NativeArray*)var527)->values[0]=var529;
4278 if (likely(varonce536!=NULL)) {
4279 var537 = varonce536;
4280 } else {
4281 var538 = ";";
4282 var540 = (val*)(1l<<2|1);
4283 var541 = (val*)(1l<<2|1);
4284 var542 = (val*)((long)(0)<<2|3);
4285 var543 = (val*)((long)(0)<<2|3);
4286 var539 = core__flat___CString___to_s_unsafe(var538, var540, var541, var542, var543);
4287 var537 = var539;
4288 varonce536 = var537;
4289 }
4290 ((struct instance_core__NativeArray*)var527)->values[2]=var537;
4291 } else {
4292 var527 = varonce526;
4293 varonce526 = NULL;
4294 }
4295 ((struct instance_core__NativeArray*)var527)->values[1]=var_entry;
4296 {
4297 var544 = ((val*(*)(val* self))(var527->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var527); /* native_to_s on <var527:NativeArray[String]>*/
4298 }
4299 varonce526 = var527;
4300 {
4301 nitc___nitc__AbstractCompilerVisitor___add(self, var544); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4302 }
4303 {
4304 { /* Inline model$MVirtualType$mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
4305 var547 = var_mtype->attrs[COLOR_nitc__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
4306 if (unlikely(var547 == NULL)) {
4307 if(catchStack.cursor >= 0){
4308 longjmp(catchStack.envs[catchStack.cursor], 1);
4309 }
4310 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4311 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1423);
4312 fatal_exit(1);
4313 }
4314 var545 = var547;
4315 RET_LABEL546:(void)0;
4316 }
4317 }
4318 {
4319 var548 = nitc__separate_compiler___MEntity___const_color(var545);
4320 }
4321 {
4322 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var548); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
4323 }
4324 if (unlikely(varonce549==NULL)) {
4325 var550 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
4326 if (likely(varonce551!=NULL)) {
4327 var552 = varonce551;
4328 } else {
4329 var553 = " = ";
4330 var555 = (val*)(3l<<2|1);
4331 var556 = (val*)(3l<<2|1);
4332 var557 = (val*)((long)(0)<<2|3);
4333 var558 = (val*)((long)(0)<<2|3);
4334 var554 = core__flat___CString___to_s_unsafe(var553, var555, var556, var557, var558);
4335 var552 = var554;
4336 varonce551 = var552;
4337 }
4338 ((struct instance_core__NativeArray*)var550)->values[1]=var552;
4339 if (likely(varonce559!=NULL)) {
4340 var560 = varonce559;
4341 } else {
4342 var561 = "vts_table->vts[";
4343 var563 = (val*)(15l<<2|1);
4344 var564 = (val*)(15l<<2|1);
4345 var565 = (val*)((long)(0)<<2|3);
4346 var566 = (val*)((long)(0)<<2|3);
4347 var562 = core__flat___CString___to_s_unsafe(var561, var563, var564, var565, var566);
4348 var560 = var562;
4349 varonce559 = var560;
4350 }
4351 ((struct instance_core__NativeArray*)var550)->values[3]=var560;
4352 if (likely(varonce567!=NULL)) {
4353 var568 = varonce567;
4354 } else {
4355 var569 = "];";
4356 var571 = (val*)(2l<<2|1);
4357 var572 = (val*)(2l<<2|1);
4358 var573 = (val*)((long)(0)<<2|3);
4359 var574 = (val*)((long)(0)<<2|3);
4360 var570 = core__flat___CString___to_s_unsafe(var569, var571, var572, var573, var574);
4361 var568 = var570;
4362 varonce567 = var568;
4363 }
4364 ((struct instance_core__NativeArray*)var550)->values[5]=var568;
4365 } else {
4366 var550 = varonce549;
4367 varonce549 = NULL;
4368 }
4369 ((struct instance_core__NativeArray*)var550)->values[0]=var_entry;
4370 ((struct instance_core__NativeArray*)var550)->values[2]=var_recv_ptr;
4371 {
4372 { /* Inline model$MVirtualType$mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
4373 var577 = var_mtype->attrs[COLOR_nitc__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
4374 if (unlikely(var577 == NULL)) {
4375 if(catchStack.cursor >= 0){
4376 longjmp(catchStack.envs[catchStack.cursor], 1);
4377 }
4378 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
4379 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1423);
4380 fatal_exit(1);
4381 }
4382 var575 = var577;
4383 RET_LABEL576:(void)0;
4384 }
4385 }
4386 {
4387 var578 = nitc__separate_compiler___MEntity___const_color(var575);
4388 }
4389 ((struct instance_core__NativeArray*)var550)->values[4]=var578;
4390 {
4391 var579 = ((val*(*)(val* self))(var550->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var550); /* native_to_s on <var550:NativeArray[String]>*/
4392 }
4393 varonce549 = var550;
4394 {
4395 nitc___nitc__AbstractCompilerVisitor___add(self, var579); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4396 }
4397 if (unlikely(varonce580==NULL)) {
4398 var581 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4399 if (likely(varonce582!=NULL)) {
4400 var583 = varonce582;
4401 } else {
4402 var584 = " = ";
4403 var586 = (val*)(3l<<2|1);
4404 var587 = (val*)(3l<<2|1);
4405 var588 = (val*)((long)(0)<<2|3);
4406 var589 = (val*)((long)(0)<<2|3);
4407 var585 = core__flat___CString___to_s_unsafe(var584, var586, var587, var588, var589);
4408 var583 = var585;
4409 varonce582 = var583;
4410 }
4411 ((struct instance_core__NativeArray*)var581)->values[1]=var583;
4412 if (likely(varonce590!=NULL)) {
4413 var591 = varonce590;
4414 } else {
4415 var592 = ".class->color;";
4416 var594 = (val*)(14l<<2|1);
4417 var595 = (val*)(14l<<2|1);
4418 var596 = (val*)((long)(0)<<2|3);
4419 var597 = (val*)((long)(0)<<2|3);
4420 var593 = core__flat___CString___to_s_unsafe(var592, var594, var595, var596, var597);
4421 var591 = var593;
4422 varonce590 = var591;
4423 }
4424 ((struct instance_core__NativeArray*)var581)->values[3]=var591;
4425 } else {
4426 var581 = varonce580;
4427 varonce580 = NULL;
4428 }
4429 ((struct instance_core__NativeArray*)var581)->values[0]=var_cltype;
4430 ((struct instance_core__NativeArray*)var581)->values[2]=var_entry;
4431 {
4432 var598 = ((val*(*)(val* self))(var581->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var581); /* native_to_s on <var581:NativeArray[String]>*/
4433 }
4434 varonce580 = var581;
4435 {
4436 nitc___nitc__AbstractCompilerVisitor___add(self, var598); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4437 }
4438 if (unlikely(varonce599==NULL)) {
4439 var600 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4440 if (likely(varonce601!=NULL)) {
4441 var602 = varonce601;
4442 } else {
4443 var603 = " = ";
4444 var605 = (val*)(3l<<2|1);
4445 var606 = (val*)(3l<<2|1);
4446 var607 = (val*)((long)(0)<<2|3);
4447 var608 = (val*)((long)(0)<<2|3);
4448 var604 = core__flat___CString___to_s_unsafe(var603, var605, var606, var607, var608);
4449 var602 = var604;
4450 varonce601 = var602;
4451 }
4452 ((struct instance_core__NativeArray*)var600)->values[1]=var602;
4453 if (likely(varonce609!=NULL)) {
4454 var610 = varonce609;
4455 } else {
4456 var611 = ".class->id;";
4457 var613 = (val*)(11l<<2|1);
4458 var614 = (val*)(11l<<2|1);
4459 var615 = (val*)((long)(0)<<2|3);
4460 var616 = (val*)((long)(0)<<2|3);
4461 var612 = core__flat___CString___to_s_unsafe(var611, var613, var614, var615, var616);
4462 var610 = var612;
4463 varonce609 = var610;
4464 }
4465 ((struct instance_core__NativeArray*)var600)->values[3]=var610;
4466 } else {
4467 var600 = varonce599;
4468 varonce599 = NULL;
4469 }
4470 ((struct instance_core__NativeArray*)var600)->values[0]=var_idtype;
4471 ((struct instance_core__NativeArray*)var600)->values[2]=var_entry;
4472 {
4473 var617 = ((val*(*)(val* self))(var600->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var600); /* native_to_s on <var600:NativeArray[String]>*/
4474 }
4475 varonce599 = var600;
4476 {
4477 nitc___nitc__AbstractCompilerVisitor___add(self, var617); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4478 }
4479 var_619 = var_maybe_null;
4480 if (var_maybe_null){
4481 if (likely(varonce620!=NULL)) {
4482 var621 = varonce620;
4483 } else {
4484 var622 = "0";
4485 var624 = (val*)(1l<<2|1);
4486 var625 = (val*)(1l<<2|1);
4487 var626 = (val*)((long)(0)<<2|3);
4488 var627 = (val*)((long)(0)<<2|3);
4489 var623 = core__flat___CString___to_s_unsafe(var622, var624, var625, var626, var627);
4490 var621 = var623;
4491 varonce620 = var621;
4492 }
4493 {
4494 var628 = ((short int(*)(val* self, val* p0))(var_accept_null->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_accept_null, var621); /* == on <var_accept_null:String>*/
4495 }
4496 var618 = var628;
4497 } else {
4498 var618 = var_619;
4499 }
4500 if (var618){
4501 if (likely(varonce629!=NULL)) {
4502 var630 = varonce629;
4503 } else {
4504 var631 = "is_nullable";
4505 var633 = (val*)(11l<<2|1);
4506 var634 = (val*)(11l<<2|1);
4507 var635 = (val*)((long)(0)<<2|3);
4508 var636 = (val*)((long)(0)<<2|3);
4509 var632 = core__flat___CString___to_s_unsafe(var631, var633, var634, var635, var636);
4510 var630 = var632;
4511 varonce629 = var630;
4512 }
4513 {
4514 var637 = nitc___nitc__AbstractCompilerVisitor___get_name(self, var630);
4515 }
4516 var_is_nullable = var637;
4517 if (unlikely(varonce638==NULL)) {
4518 var639 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4519 if (likely(varonce640!=NULL)) {
4520 var641 = varonce640;
4521 } else {
4522 var642 = "short int ";
4523 var644 = (val*)(10l<<2|1);
4524 var645 = (val*)(10l<<2|1);
4525 var646 = (val*)((long)(0)<<2|3);
4526 var647 = (val*)((long)(0)<<2|3);
4527 var643 = core__flat___CString___to_s_unsafe(var642, var644, var645, var646, var647);
4528 var641 = var643;
4529 varonce640 = var641;
4530 }
4531 ((struct instance_core__NativeArray*)var639)->values[0]=var641;
4532 if (likely(varonce648!=NULL)) {
4533 var649 = varonce648;
4534 } else {
4535 var650 = ";";
4536 var652 = (val*)(1l<<2|1);
4537 var653 = (val*)(1l<<2|1);
4538 var654 = (val*)((long)(0)<<2|3);
4539 var655 = (val*)((long)(0)<<2|3);
4540 var651 = core__flat___CString___to_s_unsafe(var650, var652, var653, var654, var655);
4541 var649 = var651;
4542 varonce648 = var649;
4543 }
4544 ((struct instance_core__NativeArray*)var639)->values[2]=var649;
4545 } else {
4546 var639 = varonce638;
4547 varonce638 = NULL;
4548 }
4549 ((struct instance_core__NativeArray*)var639)->values[1]=var_is_nullable;
4550 {
4551 var656 = ((val*(*)(val* self))(var639->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var639); /* native_to_s on <var639:NativeArray[String]>*/
4552 }
4553 varonce638 = var639;
4554 {
4555 nitc___nitc__AbstractCompilerVisitor___add_decl(self, var656); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <self:SeparateErasureCompilerVisitor>*/
4556 }
4557 if (unlikely(varonce657==NULL)) {
4558 var658 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4559 if (likely(varonce659!=NULL)) {
4560 var660 = varonce659;
4561 } else {
4562 var661 = " = ";
4563 var663 = (val*)(3l<<2|1);
4564 var664 = (val*)(3l<<2|1);
4565 var665 = (val*)((long)(0)<<2|3);
4566 var666 = (val*)((long)(0)<<2|3);
4567 var662 = core__flat___CString___to_s_unsafe(var661, var663, var664, var665, var666);
4568 var660 = var662;
4569 varonce659 = var660;
4570 }
4571 ((struct instance_core__NativeArray*)var658)->values[1]=var660;
4572 if (likely(varonce667!=NULL)) {
4573 var668 = varonce667;
4574 } else {
4575 var669 = ".is_nullable;";
4576 var671 = (val*)(13l<<2|1);
4577 var672 = (val*)(13l<<2|1);
4578 var673 = (val*)((long)(0)<<2|3);
4579 var674 = (val*)((long)(0)<<2|3);
4580 var670 = core__flat___CString___to_s_unsafe(var669, var671, var672, var673, var674);
4581 var668 = var670;
4582 varonce667 = var668;
4583 }
4584 ((struct instance_core__NativeArray*)var658)->values[3]=var668;
4585 } else {
4586 var658 = varonce657;
4587 varonce657 = NULL;
4588 }
4589 ((struct instance_core__NativeArray*)var658)->values[0]=var_is_nullable;
4590 ((struct instance_core__NativeArray*)var658)->values[2]=var_entry;
4591 {
4592 var675 = ((val*(*)(val* self))(var658->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var658); /* native_to_s on <var658:NativeArray[String]>*/
4593 }
4594 varonce657 = var658;
4595 {
4596 nitc___nitc__AbstractCompilerVisitor___add(self, var675); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4597 }
4598 {
4599 var676 = core___core__String___Object__to_s(var_is_nullable);
4600 }
4601 var_accept_null = var676;
4602 } else {
4603 }
4604 {
4605 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
4606 var679 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
4607 if (unlikely(var679 == NULL)) {
4608 if(catchStack.cursor >= 0){
4609 longjmp(catchStack.envs[catchStack.cursor], 1);
4610 }
4611 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4612 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
4613 fatal_exit(1);
4614 }
4615 var677 = var679;
4616 RET_LABEL678:(void)0;
4617 }
4618 }
4619 {
4620 { /* Inline abstract_compiler$AbstractCompiler$modelbuilder (var677) on <var677:AbstractCompiler(SeparateCompiler)> */
4621 var682 = var677->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var677:AbstractCompiler(SeparateCompiler)> */
4622 if (unlikely(var682 == NULL)) {
4623 if(catchStack.cursor >= 0){
4624 longjmp(catchStack.envs[catchStack.cursor], 1);
4625 }
4626 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4627 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 552);
4628 fatal_exit(1);
4629 }
4630 var680 = var682;
4631 RET_LABEL681:(void)0;
4632 }
4633 }
4634 {
4635 { /* Inline modelbuilder_base$ModelBuilder$toolcontext (var680) on <var680:ModelBuilder> */
4636 var685 = var680->attrs[COLOR_nitc__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var680:ModelBuilder> */
4637 if (unlikely(var685 == NULL)) {
4638 if(catchStack.cursor >= 0){
4639 longjmp(catchStack.envs[catchStack.cursor], 1);
4640 }
4641 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4642 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__modelbuilder_base, 47);
4643 fatal_exit(1);
4644 }
4645 var683 = var685;
4646 RET_LABEL684:(void)0;
4647 }
4648 }
4649 {
4650 { /* Inline abstract_compiler$ToolContext$opt_typing_test_metrics (var683) on <var683:ToolContext> */
4651 var688 = var683->attrs[COLOR_nitc__abstract_compiler__ToolContext___opt_typing_test_metrics].val; /* _opt_typing_test_metrics on <var683:ToolContext> */
4652 if (unlikely(var688 == NULL)) {
4653 if(catchStack.cursor >= 0){
4654 longjmp(catchStack.envs[catchStack.cursor], 1);
4655 }
4656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_typing_test_metrics");
4657 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 60);
4658 fatal_exit(1);
4659 }
4660 var686 = var688;
4661 RET_LABEL687:(void)0;
4662 }
4663 }
4664 {
4665 { /* Inline opts$Option$value (var686) on <var686:OptionBool> */
4666 var691 = var686->attrs[COLOR_opts__Option___value].val; /* _value on <var686:OptionBool> */
4667 var689 = var691;
4668 RET_LABEL690:(void)0;
4669 }
4670 }
4671 var692 = (short int)((long)(var689)>>2);
4672 if (var692){
4673 {
4674 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
4675 var695 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
4676 if (unlikely(var695 == NULL)) {
4677 if(catchStack.cursor >= 0){
4678 longjmp(catchStack.envs[catchStack.cursor], 1);
4679 }
4680 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4681 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
4682 fatal_exit(1);
4683 }
4684 var693 = var695;
4685 RET_LABEL694:(void)0;
4686 }
4687 }
4688 {
4689 { /* Inline abstract_compiler$AbstractCompiler$count_type_test_unresolved (var693) on <var693:AbstractCompiler(SeparateCompiler)> */
4690 var698 = var693->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___count_type_test_unresolved].val; /* _count_type_test_unresolved on <var693:AbstractCompiler(SeparateCompiler)> */
4691 if (unlikely(var698 == NULL)) {
4692 if(catchStack.cursor >= 0){
4693 longjmp(catchStack.envs[catchStack.cursor], 1);
4694 }
4695 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _count_type_test_unresolved");
4696 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1112);
4697 fatal_exit(1);
4698 }
4699 var696 = var698;
4700 RET_LABEL697:(void)0;
4701 }
4702 }
4703 var_699 = var696;
4704 var_700 = var_tag;
4705 {
4706 var701 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var_699, var_700);
4707 }
4708 {
4709 { /* Inline kernel$Int$+ (var701,1l) on <var701:nullable Object(Int)> */
4710 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
4711 /* <1l:Int> isa OTHER */
4712 var704 = 1; /* easy <1l:Int> isa OTHER*/
4713 if (unlikely(!var704)) {
4714 var_class_name707 = type_core__Int.name;
4715 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name707);
4716 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
4717 fatal_exit(1);
4718 }
4719 var708 = (long)(var701)>>2;
4720 var709 = var708 + 1l;
4721 var702 = var709;
4722 goto RET_LABEL703;
4723 RET_LABEL703:(void)0;
4724 }
4725 }
4726 {
4727 var710 = (val*)(var702<<2|1);
4728 core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var_699, var_700, var710); /* Direct call hash_collection$HashMap$[]= on <var_699:HashMap[String, Int]>*/
4729 }
4730 if (unlikely(varonce711==NULL)) {
4731 var712 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4732 if (likely(varonce713!=NULL)) {
4733 var714 = varonce713;
4734 } else {
4735 var715 = "count_type_test_unresolved_";
4736 var717 = (val*)(27l<<2|1);
4737 var718 = (val*)(27l<<2|1);
4738 var719 = (val*)((long)(0)<<2|3);
4739 var720 = (val*)((long)(0)<<2|3);
4740 var716 = core__flat___CString___to_s_unsafe(var715, var717, var718, var719, var720);
4741 var714 = var716;
4742 varonce713 = var714;
4743 }
4744 ((struct instance_core__NativeArray*)var712)->values[0]=var714;
4745 if (likely(varonce721!=NULL)) {
4746 var722 = varonce721;
4747 } else {
4748 var723 = "++;";
4749 var725 = (val*)(3l<<2|1);
4750 var726 = (val*)(3l<<2|1);
4751 var727 = (val*)((long)(0)<<2|3);
4752 var728 = (val*)((long)(0)<<2|3);
4753 var724 = core__flat___CString___to_s_unsafe(var723, var725, var726, var727, var728);
4754 var722 = var724;
4755 varonce721 = var722;
4756 }
4757 ((struct instance_core__NativeArray*)var712)->values[2]=var722;
4758 } else {
4759 var712 = varonce711;
4760 varonce711 = NULL;
4761 }
4762 ((struct instance_core__NativeArray*)var712)->values[1]=var_tag;
4763 {
4764 var729 = ((val*(*)(val* self))(var712->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var712); /* native_to_s on <var712:NativeArray[String]>*/
4765 }
4766 varonce711 = var712;
4767 {
4768 nitc___nitc__AbstractCompilerVisitor___add(self, var729); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4769 }
4770 } else {
4771 }
4772 } else {
4773 if (unlikely(varonce730==NULL)) {
4774 var731 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
4775 if (likely(varonce732!=NULL)) {
4776 var733 = varonce732;
4777 } else {
4778 var734 = "type_test(";
4779 var736 = (val*)(10l<<2|1);
4780 var737 = (val*)(10l<<2|1);
4781 var738 = (val*)((long)(0)<<2|3);
4782 var739 = (val*)((long)(0)<<2|3);
4783 var735 = core__flat___CString___to_s_unsafe(var734, var736, var737, var738, var739);
4784 var733 = var735;
4785 varonce732 = var733;
4786 }
4787 ((struct instance_core__NativeArray*)var731)->values[0]=var733;
4788 if (likely(varonce740!=NULL)) {
4789 var741 = varonce740;
4790 } else {
4791 var742 = ", ";
4792 var744 = (val*)(2l<<2|1);
4793 var745 = (val*)(2l<<2|1);
4794 var746 = (val*)((long)(0)<<2|3);
4795 var747 = (val*)((long)(0)<<2|3);
4796 var743 = core__flat___CString___to_s_unsafe(var742, var744, var745, var746, var747);
4797 var741 = var743;
4798 varonce740 = var741;
4799 }
4800 ((struct instance_core__NativeArray*)var731)->values[2]=var741;
4801 if (likely(varonce748!=NULL)) {
4802 var749 = varonce748;
4803 } else {
4804 var750 = ")";
4805 var752 = (val*)(1l<<2|1);
4806 var753 = (val*)(1l<<2|1);
4807 var754 = (val*)((long)(0)<<2|3);
4808 var755 = (val*)((long)(0)<<2|3);
4809 var751 = core__flat___CString___to_s_unsafe(var750, var752, var753, var754, var755);
4810 var749 = var751;
4811 varonce748 = var749;
4812 }
4813 ((struct instance_core__NativeArray*)var731)->values[4]=var749;
4814 } else {
4815 var731 = varonce730;
4816 varonce730 = NULL;
4817 }
4818 {
4819 var756 = nitc___nitc__RuntimeVariable___core__abstract_text__Object__inspect(var_value);
4820 }
4821 ((struct instance_core__NativeArray*)var731)->values[1]=var756;
4822 {
4823 var757 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
4824 }
4825 ((struct instance_core__NativeArray*)var731)->values[3]=var757;
4826 {
4827 var758 = ((val*(*)(val* self))(var731->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var731); /* native_to_s on <var731:NativeArray[String]>*/
4828 }
4829 varonce730 = var731;
4830 {
4831 nitc___nitc__AbstractCompilerVisitor___debug(self, var758); /* Direct call abstract_compiler$AbstractCompilerVisitor$debug on <self:SeparateErasureCompilerVisitor>*/
4832 }
4833 if(catchStack.cursor >= 0){
4834 longjmp(catchStack.envs[catchStack.cursor], 1);
4835 }
4836 PRINT_ERROR("Runtime error: %s", "Aborted");
4837 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 582);
4838 fatal_exit(1);
4839 }
4840 }
4841 if (var_maybe_null){
4842 if (unlikely(varonce759==NULL)) {
4843 var760 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
4844 if (likely(varonce761!=NULL)) {
4845 var762 = varonce761;
4846 } else {
4847 var763 = "if(";
4848 var765 = (val*)(3l<<2|1);
4849 var766 = (val*)(3l<<2|1);
4850 var767 = (val*)((long)(0)<<2|3);
4851 var768 = (val*)((long)(0)<<2|3);
4852 var764 = core__flat___CString___to_s_unsafe(var763, var765, var766, var767, var768);
4853 var762 = var764;
4854 varonce761 = var762;
4855 }
4856 ((struct instance_core__NativeArray*)var760)->values[0]=var762;
4857 if (likely(varonce769!=NULL)) {
4858 var770 = varonce769;
4859 } else {
4860 var771 = " == NULL) {";
4861 var773 = (val*)(11l<<2|1);
4862 var774 = (val*)(11l<<2|1);
4863 var775 = (val*)((long)(0)<<2|3);
4864 var776 = (val*)((long)(0)<<2|3);
4865 var772 = core__flat___CString___to_s_unsafe(var771, var773, var774, var775, var776);
4866 var770 = var772;
4867 varonce769 = var770;
4868 }
4869 ((struct instance_core__NativeArray*)var760)->values[2]=var770;
4870 } else {
4871 var760 = varonce759;
4872 varonce759 = NULL;
4873 }
4874 {
4875 var777 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
4876 }
4877 ((struct instance_core__NativeArray*)var760)->values[1]=var777;
4878 {
4879 var778 = ((val*(*)(val* self))(var760->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var760); /* native_to_s on <var760:NativeArray[String]>*/
4880 }
4881 varonce759 = var760;
4882 {
4883 nitc___nitc__AbstractCompilerVisitor___add(self, var778); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4884 }
4885 if (unlikely(varonce779==NULL)) {
4886 var780 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
4887 if (likely(varonce781!=NULL)) {
4888 var782 = varonce781;
4889 } else {
4890 var783 = " = ";
4891 var785 = (val*)(3l<<2|1);
4892 var786 = (val*)(3l<<2|1);
4893 var787 = (val*)((long)(0)<<2|3);
4894 var788 = (val*)((long)(0)<<2|3);
4895 var784 = core__flat___CString___to_s_unsafe(var783, var785, var786, var787, var788);
4896 var782 = var784;
4897 varonce781 = var782;
4898 }
4899 ((struct instance_core__NativeArray*)var780)->values[1]=var782;
4900 if (likely(varonce789!=NULL)) {
4901 var790 = varonce789;
4902 } else {
4903 var791 = ";";
4904 var793 = (val*)(1l<<2|1);
4905 var794 = (val*)(1l<<2|1);
4906 var795 = (val*)((long)(0)<<2|3);
4907 var796 = (val*)((long)(0)<<2|3);
4908 var792 = core__flat___CString___to_s_unsafe(var791, var793, var794, var795, var796);
4909 var790 = var792;
4910 varonce789 = var790;
4911 }
4912 ((struct instance_core__NativeArray*)var780)->values[3]=var790;
4913 } else {
4914 var780 = varonce779;
4915 varonce779 = NULL;
4916 }
4917 {
4918 var797 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
4919 }
4920 ((struct instance_core__NativeArray*)var780)->values[0]=var797;
4921 ((struct instance_core__NativeArray*)var780)->values[2]=var_accept_null;
4922 {
4923 var798 = ((val*(*)(val* self))(var780->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var780); /* native_to_s on <var780:NativeArray[String]>*/
4924 }
4925 varonce779 = var780;
4926 {
4927 nitc___nitc__AbstractCompilerVisitor___add(self, var798); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4928 }
4929 if (likely(varonce799!=NULL)) {
4930 var800 = varonce799;
4931 } else {
4932 var801 = "} else {";
4933 var803 = (val*)(8l<<2|1);
4934 var804 = (val*)(8l<<2|1);
4935 var805 = (val*)((long)(0)<<2|3);
4936 var806 = (val*)((long)(0)<<2|3);
4937 var802 = core__flat___CString___to_s_unsafe(var801, var803, var804, var805, var806);
4938 var800 = var802;
4939 varonce799 = var800;
4940 }
4941 {
4942 nitc___nitc__AbstractCompilerVisitor___add(self, var800); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4943 }
4944 } else {
4945 }
4946 if (unlikely(varonce807==NULL)) {
4947 var808 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
4948 if (likely(varonce809!=NULL)) {
4949 var810 = varonce809;
4950 } else {
4951 var811 = "if(";
4952 var813 = (val*)(3l<<2|1);
4953 var814 = (val*)(3l<<2|1);
4954 var815 = (val*)((long)(0)<<2|3);
4955 var816 = (val*)((long)(0)<<2|3);
4956 var812 = core__flat___CString___to_s_unsafe(var811, var813, var814, var815, var816);
4957 var810 = var812;
4958 varonce809 = var810;
4959 }
4960 ((struct instance_core__NativeArray*)var808)->values[0]=var810;
4961 if (likely(varonce817!=NULL)) {
4962 var818 = varonce817;
4963 } else {
4964 var819 = " >= ";
4965 var821 = (val*)(4l<<2|1);
4966 var822 = (val*)(4l<<2|1);
4967 var823 = (val*)((long)(0)<<2|3);
4968 var824 = (val*)((long)(0)<<2|3);
4969 var820 = core__flat___CString___to_s_unsafe(var819, var821, var822, var823, var824);
4970 var818 = var820;
4971 varonce817 = var818;
4972 }
4973 ((struct instance_core__NativeArray*)var808)->values[2]=var818;
4974 if (likely(varonce825!=NULL)) {
4975 var826 = varonce825;
4976 } else {
4977 var827 = "type_table->size) {";
4978 var829 = (val*)(19l<<2|1);
4979 var830 = (val*)(19l<<2|1);
4980 var831 = (val*)((long)(0)<<2|3);
4981 var832 = (val*)((long)(0)<<2|3);
4982 var828 = core__flat___CString___to_s_unsafe(var827, var829, var830, var831, var832);
4983 var826 = var828;
4984 varonce825 = var826;
4985 }
4986 ((struct instance_core__NativeArray*)var808)->values[4]=var826;
4987 } else {
4988 var808 = varonce807;
4989 varonce807 = NULL;
4990 }
4991 ((struct instance_core__NativeArray*)var808)->values[1]=var_cltype;
4992 ((struct instance_core__NativeArray*)var808)->values[3]=var_class_ptr;
4993 {
4994 var833 = ((val*(*)(val* self))(var808->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var808); /* native_to_s on <var808:NativeArray[String]>*/
4995 }
4996 varonce807 = var808;
4997 {
4998 nitc___nitc__AbstractCompilerVisitor___add(self, var833); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
4999 }
5000 if (unlikely(varonce834==NULL)) {
5001 var835 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
5002 if (likely(varonce836!=NULL)) {
5003 var837 = varonce836;
5004 } else {
5005 var838 = " = 0;";
5006 var840 = (val*)(5l<<2|1);
5007 var841 = (val*)(5l<<2|1);
5008 var842 = (val*)((long)(0)<<2|3);
5009 var843 = (val*)((long)(0)<<2|3);
5010 var839 = core__flat___CString___to_s_unsafe(var838, var840, var841, var842, var843);
5011 var837 = var839;
5012 varonce836 = var837;
5013 }
5014 ((struct instance_core__NativeArray*)var835)->values[1]=var837;
5015 } else {
5016 var835 = varonce834;
5017 varonce834 = NULL;
5018 }
5019 {
5020 var844 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
5021 }
5022 ((struct instance_core__NativeArray*)var835)->values[0]=var844;
5023 {
5024 var845 = ((val*(*)(val* self))(var835->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var835); /* native_to_s on <var835:NativeArray[String]>*/
5025 }
5026 varonce834 = var835;
5027 {
5028 nitc___nitc__AbstractCompilerVisitor___add(self, var845); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
5029 }
5030 if (likely(varonce846!=NULL)) {
5031 var847 = varonce846;
5032 } else {
5033 var848 = "} else {";
5034 var850 = (val*)(8l<<2|1);
5035 var851 = (val*)(8l<<2|1);
5036 var852 = (val*)((long)(0)<<2|3);
5037 var853 = (val*)((long)(0)<<2|3);
5038 var849 = core__flat___CString___to_s_unsafe(var848, var850, var851, var852, var853);
5039 var847 = var849;
5040 varonce846 = var847;
5041 }
5042 {
5043 nitc___nitc__AbstractCompilerVisitor___add(self, var847); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
5044 }
5045 if (unlikely(varonce854==NULL)) {
5046 var855 = NEW_core__NativeArray((int)8l, &type_core__NativeArray__core__String);
5047 if (likely(varonce856!=NULL)) {
5048 var857 = varonce856;
5049 } else {
5050 var858 = " = ";
5051 var860 = (val*)(3l<<2|1);
5052 var861 = (val*)(3l<<2|1);
5053 var862 = (val*)((long)(0)<<2|3);
5054 var863 = (val*)((long)(0)<<2|3);
5055 var859 = core__flat___CString___to_s_unsafe(var858, var860, var861, var862, var863);
5056 var857 = var859;
5057 varonce856 = var857;
5058 }
5059 ((struct instance_core__NativeArray*)var855)->values[1]=var857;
5060 if (likely(varonce864!=NULL)) {
5061 var865 = varonce864;
5062 } else {
5063 var866 = "type_table->table[";
5064 var868 = (val*)(18l<<2|1);
5065 var869 = (val*)(18l<<2|1);
5066 var870 = (val*)((long)(0)<<2|3);
5067 var871 = (val*)((long)(0)<<2|3);
5068 var867 = core__flat___CString___to_s_unsafe(var866, var868, var869, var870, var871);
5069 var865 = var867;
5070 varonce864 = var865;
5071 }
5072 ((struct instance_core__NativeArray*)var855)->values[3]=var865;
5073 if (likely(varonce872!=NULL)) {
5074 var873 = varonce872;
5075 } else {
5076 var874 = "] == ";
5077 var876 = (val*)(5l<<2|1);
5078 var877 = (val*)(5l<<2|1);
5079 var878 = (val*)((long)(0)<<2|3);
5080 var879 = (val*)((long)(0)<<2|3);
5081 var875 = core__flat___CString___to_s_unsafe(var874, var876, var877, var878, var879);
5082 var873 = var875;
5083 varonce872 = var873;
5084 }
5085 ((struct instance_core__NativeArray*)var855)->values[5]=var873;
5086 if (likely(varonce880!=NULL)) {
5087 var881 = varonce880;
5088 } else {
5089 var882 = ";";
5090 var884 = (val*)(1l<<2|1);
5091 var885 = (val*)(1l<<2|1);
5092 var886 = (val*)((long)(0)<<2|3);
5093 var887 = (val*)((long)(0)<<2|3);
5094 var883 = core__flat___CString___to_s_unsafe(var882, var884, var885, var886, var887);
5095 var881 = var883;
5096 varonce880 = var881;
5097 }
5098 ((struct instance_core__NativeArray*)var855)->values[7]=var881;
5099 } else {
5100 var855 = varonce854;
5101 varonce854 = NULL;
5102 }
5103 {
5104 var888 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
5105 }
5106 ((struct instance_core__NativeArray*)var855)->values[0]=var888;
5107 ((struct instance_core__NativeArray*)var855)->values[2]=var_class_ptr;
5108 ((struct instance_core__NativeArray*)var855)->values[4]=var_cltype;
5109 ((struct instance_core__NativeArray*)var855)->values[6]=var_idtype;
5110 {
5111 var889 = ((val*(*)(val* self))(var855->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var855); /* native_to_s on <var855:NativeArray[String]>*/
5112 }
5113 varonce854 = var855;
5114 {
5115 nitc___nitc__AbstractCompilerVisitor___add(self, var889); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
5116 }
5117 if (likely(varonce890!=NULL)) {
5118 var891 = varonce890;
5119 } else {
5120 var892 = "}";
5121 var894 = (val*)(1l<<2|1);
5122 var895 = (val*)(1l<<2|1);
5123 var896 = (val*)((long)(0)<<2|3);
5124 var897 = (val*)((long)(0)<<2|3);
5125 var893 = core__flat___CString___to_s_unsafe(var892, var894, var895, var896, var897);
5126 var891 = var893;
5127 varonce890 = var891;
5128 }
5129 {
5130 nitc___nitc__AbstractCompilerVisitor___add(self, var891); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
5131 }
5132 if (var_maybe_null){
5133 if (likely(varonce898!=NULL)) {
5134 var899 = varonce898;
5135 } else {
5136 var900 = "}";
5137 var902 = (val*)(1l<<2|1);
5138 var903 = (val*)(1l<<2|1);
5139 var904 = (val*)((long)(0)<<2|3);
5140 var905 = (val*)((long)(0)<<2|3);
5141 var901 = core__flat___CString___to_s_unsafe(var900, var902, var903, var904, var905);
5142 var899 = var901;
5143 varonce898 = var899;
5144 }
5145 {
5146 nitc___nitc__AbstractCompilerVisitor___add(self, var899); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
5147 }
5148 } else {
5149 }
5150 var = var_res;
5151 goto RET_LABEL;
5152 RET_LABEL:;
5153 return var;
5154 }
5155 /* method separate_erasure_compiler$SeparateErasureCompilerVisitor$unbox_extern for (self: SeparateErasureCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
5156 val* nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__unbox_extern(val* self, val* p0, val* p1) {
5157 val* var /* : RuntimeVariable */;
5158 val* var_value /* var value: RuntimeVariable */;
5159 val* var_mtype /* var mtype: MType */;
5160 short int var1 /* : Bool */;
5161 short int var2 /* : Bool */;
5162 short int var3 /* : Bool */;
5163 int cltype;
5164 int idtype;
5165 short int var_ /* var : Bool */;
5166 val* var4 /* : MClass */;
5167 val* var6 /* : MClass */;
5168 val* var7 /* : MClassKind */;
5169 val* var9 /* : MClassKind */;
5170 val* var10 /* : Sys */;
5171 val* var11 /* : MClassKind */;
5172 short int var12 /* : Bool */;
5173 val* var_other /* var other: nullable Object */;
5174 short int var14 /* : Bool */;
5175 short int var16 /* : Bool */;
5176 short int var_17 /* var : Bool */;
5177 val* var18 /* : MClass */;
5178 val* var20 /* : MClass */;
5179 val* var21 /* : String */;
5180 val* var23 /* : String */;
5181 static val* varonce;
5182 val* var24 /* : String */;
5183 char* var25 /* : CString */;
5184 val* var26 /* : String */;
5185 val* var27 /* : nullable Int */;
5186 val* var28 /* : nullable Int */;
5187 val* var29 /* : nullable Bool */;
5188 val* var30 /* : nullable Bool */;
5189 short int var31 /* : Bool */;
5190 val* var_other33 /* var other: nullable Object */;
5191 short int var34 /* : Bool */;
5192 short int var35 /* : Bool */;
5193 val* var36 /* : AbstractCompiler */;
5194 val* var38 /* : AbstractCompiler */;
5195 val* var39 /* : MModule */;
5196 val* var41 /* : MModule */;
5197 val* var42 /* : MClassType */;
5198 val* var_pointer_type /* var pointer_type: MClassType */;
5199 val* var43 /* : RuntimeVariable */;
5200 val* var_res /* var res: RuntimeVariable */;
5201 val* var45 /* : NativeArray[String] */;
5202 static val* varonce44;
5203 static val* varonce46;
5204 val* var47 /* : String */;
5205 char* var48 /* : CString */;
5206 val* var49 /* : String */;
5207 val* var50 /* : nullable Int */;
5208 val* var51 /* : nullable Int */;
5209 val* var52 /* : nullable Bool */;
5210 val* var53 /* : nullable Bool */;
5211 static val* varonce54;
5212 val* var55 /* : String */;
5213 char* var56 /* : CString */;
5214 val* var57 /* : String */;
5215 val* var58 /* : nullable Int */;
5216 val* var59 /* : nullable Int */;
5217 val* var60 /* : nullable Bool */;
5218 val* var61 /* : nullable Bool */;
5219 static val* varonce62;
5220 val* var63 /* : String */;
5221 char* var64 /* : CString */;
5222 val* var65 /* : String */;
5223 val* var66 /* : nullable Int */;
5224 val* var67 /* : nullable Int */;
5225 val* var68 /* : nullable Bool */;
5226 val* var69 /* : nullable Bool */;
5227 static val* varonce70;
5228 val* var71 /* : String */;
5229 char* var72 /* : CString */;
5230 val* var73 /* : String */;
5231 val* var74 /* : nullable Int */;
5232 val* var75 /* : nullable Int */;
5233 val* var76 /* : nullable Bool */;
5234 val* var77 /* : nullable Bool */;
5235 val* var78 /* : String */;
5236 val* var79 /* : String */;
5237 val* var80 /* : String */;
5238 val* var81 /* : MType */;
5239 val* var83 /* : MType */;
5240 val* var84 /* : String */;
5241 val* var85 /* : String */;
5242 var_value = p0;
5243 var_mtype = p1;
5244 /* <var_mtype:MType> isa MClassType */
5245 cltype = type_nitc__MClassType.color;
5246 idtype = type_nitc__MClassType.id;
5247 if(cltype >= var_mtype->type->table_size) {
5248 var3 = 0;
5249 } else {
5250 var3 = var_mtype->type->type_table[cltype] == idtype;
5251 }
5252 var_ = var3;
5253 if (var3){
5254 {
5255 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MType(MClassType)> */
5256 var6 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
5257 if (unlikely(var6 == NULL)) {
5258 if(catchStack.cursor >= 0){
5259 longjmp(catchStack.envs[catchStack.cursor], 1);
5260 }
5261 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5262 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
5263 fatal_exit(1);
5264 }
5265 var4 = var6;
5266 RET_LABEL5:(void)0;
5267 }
5268 }
5269 {
5270 { /* Inline model$MClass$kind (var4) on <var4:MClass> */
5271 var9 = var4->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var4:MClass> */
5272 if (unlikely(var9 == NULL)) {
5273 if(catchStack.cursor >= 0){
5274 longjmp(catchStack.envs[catchStack.cursor], 1);
5275 }
5276 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
5277 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 472);
5278 fatal_exit(1);
5279 }
5280 var7 = var9;
5281 RET_LABEL8:(void)0;
5282 }
5283 }
5284 var10 = glob_sys;
5285 {
5286 var11 = nitc__model___core__Sys___extern_kind(var10);
5287 }
5288 {
5289 { /* Inline kernel$Object$== (var7,var11) on <var7:MClassKind> */
5290 var_other = var11;
5291 {
5292 { /* Inline kernel$Object$is_same_instance (var7,var_other) on <var7:MClassKind> */
5293 var16 = var7 == var_other;
5294 var14 = var16;
5295 goto RET_LABEL15;
5296 RET_LABEL15:(void)0;
5297 }
5298 }
5299 var12 = var14;
5300 goto RET_LABEL13;
5301 RET_LABEL13:(void)0;
5302 }
5303 }
5304 var2 = var12;
5305 } else {
5306 var2 = var_;
5307 }
5308 var_17 = var2;
5309 if (var2){
5310 {
5311 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MType(MClassType)> */
5312 var20 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
5313 if (unlikely(var20 == NULL)) {
5314 if(catchStack.cursor >= 0){
5315 longjmp(catchStack.envs[catchStack.cursor], 1);
5316 }
5317 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5318 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
5319 fatal_exit(1);
5320 }
5321 var18 = var20;
5322 RET_LABEL19:(void)0;
5323 }
5324 }
5325 {
5326 { /* Inline model$MClass$name (var18) on <var18:MClass> */
5327 var23 = var18->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var18:MClass> */
5328 if (unlikely(var23 == NULL)) {
5329 if(catchStack.cursor >= 0){
5330 longjmp(catchStack.envs[catchStack.cursor], 1);
5331 }
5332 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5333 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
5334 fatal_exit(1);
5335 }
5336 var21 = var23;
5337 RET_LABEL22:(void)0;
5338 }
5339 }
5340 if (likely(varonce!=NULL)) {
5341 var24 = varonce;
5342 } else {
5343 var25 = "CString";
5344 var27 = (val*)(7l<<2|1);
5345 var28 = (val*)(7l<<2|1);
5346 var29 = (val*)((long)(0)<<2|3);
5347 var30 = (val*)((long)(0)<<2|3);
5348 var26 = core__flat___CString___to_s_unsafe(var25, var27, var28, var29, var30);
5349 var24 = var26;
5350 varonce = var24;
5351 }
5352 {
5353 { /* Inline kernel$Object$!= (var21,var24) on <var21:String> */
5354 var_other33 = var24;
5355 {
5356 var34 = ((short int(*)(val* self, val* p0))(var21->class->vft[COLOR_core__kernel__Object___61d_61d]))(var21, var_other33); /* == on <var21:String>*/
5357 }
5358 var35 = !var34;
5359 var31 = var35;
5360 goto RET_LABEL32;
5361 RET_LABEL32:(void)0;
5362 }
5363 }
5364 var1 = var31;
5365 } else {
5366 var1 = var_17;
5367 }
5368 if (var1){
5369 {
5370 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
5371 var38 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
5372 if (unlikely(var38 == NULL)) {
5373 if(catchStack.cursor >= 0){
5374 longjmp(catchStack.envs[catchStack.cursor], 1);
5375 }
5376 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5377 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
5378 fatal_exit(1);
5379 }
5380 var36 = var38;
5381 RET_LABEL37:(void)0;
5382 }
5383 }
5384 {
5385 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (var36) on <var36:AbstractCompiler(SeparateCompiler)> */
5386 var41 = var36->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var36:AbstractCompiler(SeparateCompiler)> */
5387 if (unlikely(var41 == NULL)) {
5388 if(catchStack.cursor >= 0){
5389 longjmp(catchStack.envs[catchStack.cursor], 1);
5390 }
5391 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5392 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
5393 fatal_exit(1);
5394 }
5395 var39 = var41;
5396 RET_LABEL40:(void)0;
5397 }
5398 }
5399 {
5400 var42 = nitc__model___MModule___pointer_type(var39);
5401 }
5402 var_pointer_type = var42;
5403 {
5404 var43 = nitc___nitc__AbstractCompilerVisitor___new_var_extern(self, var_mtype);
5405 }
5406 var_res = var43;
5407 if (unlikely(varonce44==NULL)) {
5408 var45 = NEW_core__NativeArray((int)8l, &type_core__NativeArray__core__String);
5409 if (likely(varonce46!=NULL)) {
5410 var47 = varonce46;
5411 } else {
5412 var48 = " = ((struct instance_";
5413 var50 = (val*)(21l<<2|1);
5414 var51 = (val*)(21l<<2|1);
5415 var52 = (val*)((long)(0)<<2|3);
5416 var53 = (val*)((long)(0)<<2|3);
5417 var49 = core__flat___CString___to_s_unsafe(var48, var50, var51, var52, var53);
5418 var47 = var49;
5419 varonce46 = var47;
5420 }
5421 ((struct instance_core__NativeArray*)var45)->values[1]=var47;
5422 if (likely(varonce54!=NULL)) {
5423 var55 = varonce54;
5424 } else {
5425 var56 = "*)";
5426 var58 = (val*)(2l<<2|1);
5427 var59 = (val*)(2l<<2|1);
5428 var60 = (val*)((long)(0)<<2|3);
5429 var61 = (val*)((long)(0)<<2|3);
5430 var57 = core__flat___CString___to_s_unsafe(var56, var58, var59, var60, var61);
5431 var55 = var57;
5432 varonce54 = var55;
5433 }
5434 ((struct instance_core__NativeArray*)var45)->values[3]=var55;
5435 if (likely(varonce62!=NULL)) {
5436 var63 = varonce62;
5437 } else {
5438 var64 = ")->value; /* unboxing ";
5439 var66 = (val*)(22l<<2|1);
5440 var67 = (val*)(22l<<2|1);
5441 var68 = (val*)((long)(0)<<2|3);
5442 var69 = (val*)((long)(0)<<2|3);
5443 var65 = core__flat___CString___to_s_unsafe(var64, var66, var67, var68, var69);
5444 var63 = var65;
5445 varonce62 = var63;
5446 }
5447 ((struct instance_core__NativeArray*)var45)->values[5]=var63;
5448 if (likely(varonce70!=NULL)) {
5449 var71 = varonce70;
5450 } else {
5451 var72 = " */";
5452 var74 = (val*)(3l<<2|1);
5453 var75 = (val*)(3l<<2|1);
5454 var76 = (val*)((long)(0)<<2|3);
5455 var77 = (val*)((long)(0)<<2|3);
5456 var73 = core__flat___CString___to_s_unsafe(var72, var74, var75, var76, var77);
5457 var71 = var73;
5458 varonce70 = var71;
5459 }
5460 ((struct instance_core__NativeArray*)var45)->values[7]=var71;
5461 } else {
5462 var45 = varonce44;
5463 varonce44 = NULL;
5464 }
5465 {
5466 var78 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
5467 }
5468 ((struct instance_core__NativeArray*)var45)->values[0]=var78;
5469 {
5470 var79 = ((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>*/
5471 }
5472 ((struct instance_core__NativeArray*)var45)->values[2]=var79;
5473 {
5474 var80 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
5475 }
5476 ((struct instance_core__NativeArray*)var45)->values[4]=var80;
5477 {
5478 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
5479 var83 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
5480 if (unlikely(var83 == NULL)) {
5481 if(catchStack.cursor >= 0){
5482 longjmp(catchStack.envs[catchStack.cursor], 1);
5483 }
5484 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
5485 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
5486 fatal_exit(1);
5487 }
5488 var81 = var83;
5489 RET_LABEL82:(void)0;
5490 }
5491 }
5492 {
5493 var84 = ((val*(*)(val* self))(var81->class->vft[COLOR_core__abstract_text__Object__to_s]))(var81); /* to_s on <var81:MType>*/
5494 }
5495 ((struct instance_core__NativeArray*)var45)->values[6]=var84;
5496 {
5497 var85 = ((val*(*)(val* self))(var45->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var45); /* native_to_s on <var45:NativeArray[String]>*/
5498 }
5499 varonce44 = var45;
5500 {
5501 nitc___nitc__AbstractCompilerVisitor___add(self, var85); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
5502 }
5503 var = var_res;
5504 goto RET_LABEL;
5505 } else {
5506 var = var_value;
5507 goto RET_LABEL;
5508 }
5509 RET_LABEL:;
5510 return var;
5511 }
5512 /* method separate_erasure_compiler$SeparateErasureCompilerVisitor$box_extern for (self: SeparateErasureCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
5513 val* nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__box_extern(val* self, val* p0, val* p1) {
5514 val* var /* : RuntimeVariable */;
5515 val* var_value /* var value: RuntimeVariable */;
5516 val* var_mtype /* var mtype: MType */;
5517 short int var1 /* : Bool */;
5518 short int var2 /* : Bool */;
5519 short int var3 /* : Bool */;
5520 int cltype;
5521 int idtype;
5522 short int var_ /* var : Bool */;
5523 val* var4 /* : MClass */;
5524 val* var6 /* : MClass */;
5525 val* var7 /* : MClassKind */;
5526 val* var9 /* : MClassKind */;
5527 val* var10 /* : Sys */;
5528 val* var11 /* : MClassKind */;
5529 short int var12 /* : Bool */;
5530 val* var_other /* var other: nullable Object */;
5531 short int var14 /* : Bool */;
5532 short int var16 /* : Bool */;
5533 short int var_17 /* var : Bool */;
5534 val* var18 /* : MClass */;
5535 val* var20 /* : MClass */;
5536 val* var21 /* : String */;
5537 val* var23 /* : String */;
5538 static val* varonce;
5539 val* var24 /* : String */;
5540 char* var25 /* : CString */;
5541 val* var26 /* : String */;
5542 val* var27 /* : nullable Int */;
5543 val* var28 /* : nullable Int */;
5544 val* var29 /* : nullable Bool */;
5545 val* var30 /* : nullable Bool */;
5546 short int var31 /* : Bool */;
5547 val* var_other33 /* var other: nullable Object */;
5548 short int var34 /* : Bool */;
5549 short int var35 /* : Bool */;
5550 val* var36 /* : AbstractCompiler */;
5551 val* var38 /* : AbstractCompiler */;
5552 val* var39 /* : MModule */;
5553 val* var41 /* : MModule */;
5554 val* var42 /* : MClassType */;
5555 val* var_valtype /* var valtype: MClassType */;
5556 val* var43 /* : RuntimeVariable */;
5557 val* var_res /* var res: RuntimeVariable */;
5558 short int var44 /* : Bool */;
5559 val* var45 /* : AbstractCompiler */;
5560 val* var47 /* : AbstractCompiler */;
5561 val* var48 /* : nullable RapidTypeAnalysis */;
5562 val* var50 /* : nullable RapidTypeAnalysis */;
5563 short int var51 /* : Bool */;
5564 short int var52 /* : Bool */;
5565 short int var54 /* : Bool */;
5566 short int var55 /* : Bool */;
5567 short int var_56 /* var : Bool */;
5568 val* var57 /* : AbstractCompiler */;
5569 val* var59 /* : AbstractCompiler */;
5570 val* var60 /* : nullable RapidTypeAnalysis */;
5571 val* var62 /* : nullable RapidTypeAnalysis */;
5572 val* var63 /* : HashSet[MClassType] */;
5573 val* var65 /* : HashSet[MClassType] */;
5574 val* var66 /* : MType */;
5575 val* var68 /* : MType */;
5576 short int var69 /* : Bool */;
5577 int cltype70;
5578 int idtype71;
5579 const char* var_class_name;
5580 short int var72 /* : Bool */;
5581 short int var73 /* : Bool */;
5582 val* var75 /* : NativeArray[String] */;
5583 static val* varonce74;
5584 static val* varonce76;
5585 val* var77 /* : String */;
5586 char* var78 /* : CString */;
5587 val* var79 /* : String */;
5588 val* var80 /* : nullable Int */;
5589 val* var81 /* : nullable Int */;
5590 val* var82 /* : nullable Bool */;
5591 val* var83 /* : nullable Bool */;
5592 static val* varonce84;
5593 val* var85 /* : String */;
5594 char* var86 /* : CString */;
5595 val* var87 /* : String */;
5596 val* var88 /* : nullable Int */;
5597 val* var89 /* : nullable Int */;
5598 val* var90 /* : nullable Bool */;
5599 val* var91 /* : nullable Bool */;
5600 static val* varonce92;
5601 val* var93 /* : String */;
5602 char* var94 /* : CString */;
5603 val* var95 /* : String */;
5604 val* var96 /* : nullable Int */;
5605 val* var97 /* : nullable Int */;
5606 val* var98 /* : nullable Bool */;
5607 val* var99 /* : nullable Bool */;
5608 val* var100 /* : MType */;
5609 val* var102 /* : MType */;
5610 val* var103 /* : String */;
5611 val* var104 /* : MType */;
5612 val* var106 /* : MType */;
5613 val* var107 /* : String */;
5614 val* var108 /* : String */;
5615 static val* varonce109;
5616 val* var110 /* : String */;
5617 char* var111 /* : CString */;
5618 val* var112 /* : String */;
5619 val* var113 /* : nullable Int */;
5620 val* var114 /* : nullable Int */;
5621 val* var115 /* : nullable Bool */;
5622 val* var116 /* : nullable Bool */;
5623 val* var118 /* : NativeArray[String] */;
5624 static val* varonce117;
5625 static val* varonce119;
5626 val* var120 /* : String */;
5627 char* var121 /* : CString */;
5628 val* var122 /* : String */;
5629 val* var123 /* : nullable Int */;
5630 val* var124 /* : nullable Int */;
5631 val* var125 /* : nullable Bool */;
5632 val* var126 /* : nullable Bool */;
5633 val* var127 /* : String */;
5634 val* var128 /* : String */;
5635 val* var130 /* : NativeArray[String] */;
5636 static val* varonce129;
5637 static val* varonce131;
5638 val* var132 /* : String */;
5639 char* var133 /* : CString */;
5640 val* var134 /* : String */;
5641 val* var135 /* : nullable Int */;
5642 val* var136 /* : nullable Int */;
5643 val* var137 /* : nullable Bool */;
5644 val* var138 /* : nullable Bool */;
5645 static val* varonce139;
5646 val* var140 /* : String */;
5647 char* var141 /* : CString */;
5648 val* var142 /* : String */;
5649 val* var143 /* : nullable Int */;
5650 val* var144 /* : nullable Int */;
5651 val* var145 /* : nullable Bool */;
5652 val* var146 /* : nullable Bool */;
5653 static val* varonce147;
5654 val* var148 /* : String */;
5655 char* var149 /* : CString */;
5656 val* var150 /* : String */;
5657 val* var151 /* : nullable Int */;
5658 val* var152 /* : nullable Int */;
5659 val* var153 /* : nullable Bool */;
5660 val* var154 /* : nullable Bool */;
5661 static val* varonce155;
5662 val* var156 /* : String */;
5663 char* var157 /* : CString */;
5664 val* var158 /* : String */;
5665 val* var159 /* : nullable Int */;
5666 val* var160 /* : nullable Int */;
5667 val* var161 /* : nullable Bool */;
5668 val* var162 /* : nullable Bool */;
5669 val* var163 /* : String */;
5670 val* var164 /* : String */;
5671 val* var165 /* : String */;
5672 val* var166 /* : MType */;
5673 val* var168 /* : MType */;
5674 val* var169 /* : String */;
5675 val* var170 /* : String */;
5676 val* var172 /* : NativeArray[String] */;
5677 static val* varonce171;
5678 static val* varonce173;
5679 val* var174 /* : String */;
5680 char* var175 /* : CString */;
5681 val* var176 /* : String */;
5682 val* var177 /* : nullable Int */;
5683 val* var178 /* : nullable Int */;
5684 val* var179 /* : nullable Bool */;
5685 val* var180 /* : nullable Bool */;
5686 val* var181 /* : String */;
5687 val* var182 /* : String */;
5688 val* var184 /* : NativeArray[String] */;
5689 static val* varonce183;
5690 static val* varonce185;
5691 val* var186 /* : String */;
5692 char* var187 /* : CString */;
5693 val* var188 /* : String */;
5694 val* var189 /* : nullable Int */;
5695 val* var190 /* : nullable Int */;
5696 val* var191 /* : nullable Bool */;
5697 val* var192 /* : nullable Bool */;
5698 static val* varonce193;
5699 val* var194 /* : String */;
5700 char* var195 /* : CString */;
5701 val* var196 /* : String */;
5702 val* var197 /* : nullable Int */;
5703 val* var198 /* : nullable Int */;
5704 val* var199 /* : nullable Bool */;
5705 val* var200 /* : nullable Bool */;
5706 val* var201 /* : String */;
5707 val* var202 /* : String */;
5708 val* var203 /* : String */;
5709 var_value = p0;
5710 var_mtype = p1;
5711 /* <var_mtype:MType> isa MClassType */
5712 cltype = type_nitc__MClassType.color;
5713 idtype = type_nitc__MClassType.id;
5714 if(cltype >= var_mtype->type->table_size) {
5715 var3 = 0;
5716 } else {
5717 var3 = var_mtype->type->type_table[cltype] == idtype;
5718 }
5719 var_ = var3;
5720 if (var3){
5721 {
5722 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MType(MClassType)> */
5723 var6 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
5724 if (unlikely(var6 == NULL)) {
5725 if(catchStack.cursor >= 0){
5726 longjmp(catchStack.envs[catchStack.cursor], 1);
5727 }
5728 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5729 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
5730 fatal_exit(1);
5731 }
5732 var4 = var6;
5733 RET_LABEL5:(void)0;
5734 }
5735 }
5736 {
5737 { /* Inline model$MClass$kind (var4) on <var4:MClass> */
5738 var9 = var4->attrs[COLOR_nitc__model__MClass___kind].val; /* _kind on <var4:MClass> */
5739 if (unlikely(var9 == NULL)) {
5740 if(catchStack.cursor >= 0){
5741 longjmp(catchStack.envs[catchStack.cursor], 1);
5742 }
5743 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
5744 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 472);
5745 fatal_exit(1);
5746 }
5747 var7 = var9;
5748 RET_LABEL8:(void)0;
5749 }
5750 }
5751 var10 = glob_sys;
5752 {
5753 var11 = nitc__model___core__Sys___extern_kind(var10);
5754 }
5755 {
5756 { /* Inline kernel$Object$== (var7,var11) on <var7:MClassKind> */
5757 var_other = var11;
5758 {
5759 { /* Inline kernel$Object$is_same_instance (var7,var_other) on <var7:MClassKind> */
5760 var16 = var7 == var_other;
5761 var14 = var16;
5762 goto RET_LABEL15;
5763 RET_LABEL15:(void)0;
5764 }
5765 }
5766 var12 = var14;
5767 goto RET_LABEL13;
5768 RET_LABEL13:(void)0;
5769 }
5770 }
5771 var2 = var12;
5772 } else {
5773 var2 = var_;
5774 }
5775 var_17 = var2;
5776 if (var2){
5777 {
5778 { /* Inline model$MClassType$mclass (var_mtype) on <var_mtype:MType(MClassType)> */
5779 var20 = var_mtype->attrs[COLOR_nitc__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
5780 if (unlikely(var20 == NULL)) {
5781 if(catchStack.cursor >= 0){
5782 longjmp(catchStack.envs[catchStack.cursor], 1);
5783 }
5784 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
5785 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 1197);
5786 fatal_exit(1);
5787 }
5788 var18 = var20;
5789 RET_LABEL19:(void)0;
5790 }
5791 }
5792 {
5793 { /* Inline model$MClass$name (var18) on <var18:MClass> */
5794 var23 = var18->attrs[COLOR_nitc__model__MClass___name].val; /* _name on <var18:MClass> */
5795 if (unlikely(var23 == NULL)) {
5796 if(catchStack.cursor >= 0){
5797 longjmp(catchStack.envs[catchStack.cursor], 1);
5798 }
5799 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5800 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__model, 396);
5801 fatal_exit(1);
5802 }
5803 var21 = var23;
5804 RET_LABEL22:(void)0;
5805 }
5806 }
5807 if (likely(varonce!=NULL)) {
5808 var24 = varonce;
5809 } else {
5810 var25 = "CString";
5811 var27 = (val*)(7l<<2|1);
5812 var28 = (val*)(7l<<2|1);
5813 var29 = (val*)((long)(0)<<2|3);
5814 var30 = (val*)((long)(0)<<2|3);
5815 var26 = core__flat___CString___to_s_unsafe(var25, var27, var28, var29, var30);
5816 var24 = var26;
5817 varonce = var24;
5818 }
5819 {
5820 { /* Inline kernel$Object$!= (var21,var24) on <var21:String> */
5821 var_other33 = var24;
5822 {
5823 var34 = ((short int(*)(val* self, val* p0))(var21->class->vft[COLOR_core__kernel__Object___61d_61d]))(var21, var_other33); /* == on <var21:String>*/
5824 }
5825 var35 = !var34;
5826 var31 = var35;
5827 goto RET_LABEL32;
5828 RET_LABEL32:(void)0;
5829 }
5830 }
5831 var1 = var31;
5832 } else {
5833 var1 = var_17;
5834 }
5835 if (var1){
5836 {
5837 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
5838 var38 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
5839 if (unlikely(var38 == NULL)) {
5840 if(catchStack.cursor >= 0){
5841 longjmp(catchStack.envs[catchStack.cursor], 1);
5842 }
5843 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5844 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
5845 fatal_exit(1);
5846 }
5847 var36 = var38;
5848 RET_LABEL37:(void)0;
5849 }
5850 }
5851 {
5852 { /* Inline abstract_compiler$AbstractCompiler$mainmodule (var36) on <var36:AbstractCompiler(SeparateCompiler)> */
5853 var41 = var36->attrs[COLOR_nitc__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var36:AbstractCompiler(SeparateCompiler)> */
5854 if (unlikely(var41 == NULL)) {
5855 if(catchStack.cursor >= 0){
5856 longjmp(catchStack.envs[catchStack.cursor], 1);
5857 }
5858 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5859 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 545);
5860 fatal_exit(1);
5861 }
5862 var39 = var41;
5863 RET_LABEL40:(void)0;
5864 }
5865 }
5866 {
5867 var42 = nitc__model___MModule___pointer_type(var39);
5868 }
5869 var_valtype = var42;
5870 {
5871 var43 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var_mtype);
5872 }
5873 var_res = var43;
5874 {
5875 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
5876 var47 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
5877 if (unlikely(var47 == NULL)) {
5878 if(catchStack.cursor >= 0){
5879 longjmp(catchStack.envs[catchStack.cursor], 1);
5880 }
5881 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5882 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
5883 fatal_exit(1);
5884 }
5885 var45 = var47;
5886 RET_LABEL46:(void)0;
5887 }
5888 }
5889 {
5890 { /* Inline separate_compiler$SeparateCompiler$runtime_type_analysis (var45) on <var45:AbstractCompiler(SeparateCompiler)> */
5891 var50 = var45->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var45:AbstractCompiler(SeparateCompiler)> */
5892 var48 = var50;
5893 RET_LABEL49:(void)0;
5894 }
5895 }
5896 if (var48 == NULL) {
5897 var51 = 0; /* is null */
5898 } else {
5899 var51 = 1; /* arg is null and recv is not */
5900 }
5901 if (0) {
5902 { /* Inline kernel$Object$!= (var48,((val*)NULL)) on <var48:nullable RapidTypeAnalysis> */
5903 var_other33 = ((val*)NULL);
5904 {
5905 var54 = ((short int(*)(val* self, val* p0))(var48->class->vft[COLOR_core__kernel__Object___61d_61d]))(var48, var_other33); /* == on <var48:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
5906 }
5907 var55 = !var54;
5908 var52 = var55;
5909 goto RET_LABEL53;
5910 RET_LABEL53:(void)0;
5911 }
5912 var51 = var52;
5913 }
5914 var_56 = var51;
5915 if (var51){
5916 {
5917 { /* Inline abstract_compiler$AbstractCompilerVisitor$compiler (self) on <self:SeparateErasureCompilerVisitor> */
5918 var59 = self->attrs[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateErasureCompilerVisitor> */
5919 if (unlikely(var59 == NULL)) {
5920 if(catchStack.cursor >= 0){
5921 longjmp(catchStack.envs[catchStack.cursor], 1);
5922 }
5923 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5924 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1214);
5925 fatal_exit(1);
5926 }
5927 var57 = var59;
5928 RET_LABEL58:(void)0;
5929 }
5930 }
5931 {
5932 { /* Inline separate_compiler$SeparateCompiler$runtime_type_analysis (var57) on <var57:AbstractCompiler(SeparateCompiler)> */
5933 var62 = var57->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var57:AbstractCompiler(SeparateCompiler)> */
5934 var60 = var62;
5935 RET_LABEL61:(void)0;
5936 }
5937 }
5938 if (var60 == NULL) {
5939 if(catchStack.cursor >= 0){
5940 longjmp(catchStack.envs[catchStack.cursor], 1);
5941 }
5942 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5943 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 622);
5944 fatal_exit(1);
5945 } else {
5946 { /* Inline rapid_type_analysis$RapidTypeAnalysis$live_types (var60) on <var60:nullable RapidTypeAnalysis> */
5947 if (unlikely(var60 == NULL)) {
5948 if(catchStack.cursor >= 0){
5949 longjmp(catchStack.envs[catchStack.cursor], 1);
5950 }
5951 PRINT_ERROR("Runtime error: %s", "Receiver is null");
5952 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
5953 fatal_exit(1);
5954 }
5955 var65 = var60->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var60:nullable RapidTypeAnalysis> */
5956 if (unlikely(var65 == NULL)) {
5957 if(catchStack.cursor >= 0){
5958 longjmp(catchStack.envs[catchStack.cursor], 1);
5959 }
5960 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
5961 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
5962 fatal_exit(1);
5963 }
5964 var63 = var65;
5965 RET_LABEL64:(void)0;
5966 }
5967 }
5968 {
5969 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
5970 var68 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
5971 if (unlikely(var68 == NULL)) {
5972 if(catchStack.cursor >= 0){
5973 longjmp(catchStack.envs[catchStack.cursor], 1);
5974 }
5975 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
5976 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
5977 fatal_exit(1);
5978 }
5979 var66 = var68;
5980 RET_LABEL67:(void)0;
5981 }
5982 }
5983 /* <var66:MType> isa MClassType */
5984 cltype70 = type_nitc__MClassType.color;
5985 idtype71 = type_nitc__MClassType.id;
5986 if(cltype70 >= var66->type->table_size) {
5987 var69 = 0;
5988 } else {
5989 var69 = var66->type->type_table[cltype70] == idtype71;
5990 }
5991 if (unlikely(!var69)) {
5992 var_class_name = var66 == NULL ? "null" : var66->type->name;
5993 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5994 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_erasure_compiler, 622);
5995 fatal_exit(1);
5996 }
5997 {
5998 var72 = core___core__HashSet___core__abstract_collection__Collection__has(var63, var66);
5999 }
6000 var73 = !var72;
6001 var44 = var73;
6002 } else {
6003 var44 = var_56;
6004 }
6005 if (var44){
6006 if (unlikely(varonce74==NULL)) {
6007 var75 = NEW_core__NativeArray((int)5l, &type_core__NativeArray__core__String);
6008 if (likely(varonce76!=NULL)) {
6009 var77 = varonce76;
6010 } else {
6011 var78 = "/*no boxing of ";
6012 var80 = (val*)(15l<<2|1);
6013 var81 = (val*)(15l<<2|1);
6014 var82 = (val*)((long)(0)<<2|3);
6015 var83 = (val*)((long)(0)<<2|3);
6016 var79 = core__flat___CString___to_s_unsafe(var78, var80, var81, var82, var83);
6017 var77 = var79;
6018 varonce76 = var77;
6019 }
6020 ((struct instance_core__NativeArray*)var75)->values[0]=var77;
6021 if (likely(varonce84!=NULL)) {
6022 var85 = varonce84;
6023 } else {
6024 var86 = ": ";
6025 var88 = (val*)(2l<<2|1);
6026 var89 = (val*)(2l<<2|1);
6027 var90 = (val*)((long)(0)<<2|3);
6028 var91 = (val*)((long)(0)<<2|3);
6029 var87 = core__flat___CString___to_s_unsafe(var86, var88, var89, var90, var91);
6030 var85 = var87;
6031 varonce84 = var85;
6032 }
6033 ((struct instance_core__NativeArray*)var75)->values[2]=var85;
6034 if (likely(varonce92!=NULL)) {
6035 var93 = varonce92;
6036 } else {
6037 var94 = " is not live! */";
6038 var96 = (val*)(16l<<2|1);
6039 var97 = (val*)(16l<<2|1);
6040 var98 = (val*)((long)(0)<<2|3);
6041 var99 = (val*)((long)(0)<<2|3);
6042 var95 = core__flat___CString___to_s_unsafe(var94, var96, var97, var98, var99);
6043 var93 = var95;
6044 varonce92 = var93;
6045 }
6046 ((struct instance_core__NativeArray*)var75)->values[4]=var93;
6047 } else {
6048 var75 = varonce74;
6049 varonce74 = NULL;
6050 }
6051 {
6052 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
6053 var102 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
6054 if (unlikely(var102 == NULL)) {
6055 if(catchStack.cursor >= 0){
6056 longjmp(catchStack.envs[catchStack.cursor], 1);
6057 }
6058 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6059 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
6060 fatal_exit(1);
6061 }
6062 var100 = var102;
6063 RET_LABEL101:(void)0;
6064 }
6065 }
6066 {
6067 var103 = ((val*(*)(val* self))(var100->class->vft[COLOR_core__abstract_text__Object__to_s]))(var100); /* to_s on <var100:MType>*/
6068 }
6069 ((struct instance_core__NativeArray*)var75)->values[1]=var103;
6070 {
6071 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
6072 var106 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
6073 if (unlikely(var106 == NULL)) {
6074 if(catchStack.cursor >= 0){
6075 longjmp(catchStack.envs[catchStack.cursor], 1);
6076 }
6077 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6078 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
6079 fatal_exit(1);
6080 }
6081 var104 = var106;
6082 RET_LABEL105:(void)0;
6083 }
6084 }
6085 {
6086 var107 = ((val*(*)(val* self))(var104->class->vft[COLOR_core__abstract_text__Object__to_s]))(var104); /* to_s on <var104:MType>*/
6087 }
6088 ((struct instance_core__NativeArray*)var75)->values[3]=var107;
6089 {
6090 var108 = ((val*(*)(val* self))(var75->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var75); /* native_to_s on <var75:NativeArray[String]>*/
6091 }
6092 varonce74 = var75;
6093 {
6094 nitc___nitc__AbstractCompilerVisitor___add(self, var108); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
6095 }
6096 if (likely(varonce109!=NULL)) {
6097 var110 = varonce109;
6098 } else {
6099 var111 = "PRINT_ERROR(\"Dead code executed!\\n\"); fatal_exit(1);";
6100 var113 = (val*)(52l<<2|1);
6101 var114 = (val*)(52l<<2|1);
6102 var115 = (val*)((long)(0)<<2|3);
6103 var116 = (val*)((long)(0)<<2|3);
6104 var112 = core__flat___CString___to_s_unsafe(var111, var113, var114, var115, var116);
6105 var110 = var112;
6106 varonce109 = var110;
6107 }
6108 {
6109 nitc___nitc__AbstractCompilerVisitor___add(self, var110); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
6110 }
6111 var = var_res;
6112 goto RET_LABEL;
6113 } else {
6114 }
6115 if (unlikely(varonce117==NULL)) {
6116 var118 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6117 if (likely(varonce119!=NULL)) {
6118 var120 = varonce119;
6119 } else {
6120 var121 = "BOX_";
6121 var123 = (val*)(4l<<2|1);
6122 var124 = (val*)(4l<<2|1);
6123 var125 = (val*)((long)(0)<<2|3);
6124 var126 = (val*)((long)(0)<<2|3);
6125 var122 = core__flat___CString___to_s_unsafe(var121, var123, var124, var125, var126);
6126 var120 = var122;
6127 varonce119 = var120;
6128 }
6129 ((struct instance_core__NativeArray*)var118)->values[0]=var120;
6130 } else {
6131 var118 = varonce117;
6132 varonce117 = NULL;
6133 }
6134 {
6135 var127 = ((val*(*)(val* self))(var_valtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_valtype); /* c_name on <var_valtype:MClassType>*/
6136 }
6137 ((struct instance_core__NativeArray*)var118)->values[1]=var127;
6138 {
6139 var128 = ((val*(*)(val* self))(var118->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var118); /* native_to_s on <var118:NativeArray[String]>*/
6140 }
6141 varonce117 = var118;
6142 {
6143 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var128); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
6144 }
6145 if (unlikely(varonce129==NULL)) {
6146 var130 = NEW_core__NativeArray((int)8l, &type_core__NativeArray__core__String);
6147 if (likely(varonce131!=NULL)) {
6148 var132 = varonce131;
6149 } else {
6150 var133 = " = BOX_";
6151 var135 = (val*)(7l<<2|1);
6152 var136 = (val*)(7l<<2|1);
6153 var137 = (val*)((long)(0)<<2|3);
6154 var138 = (val*)((long)(0)<<2|3);
6155 var134 = core__flat___CString___to_s_unsafe(var133, var135, var136, var137, var138);
6156 var132 = var134;
6157 varonce131 = var132;
6158 }
6159 ((struct instance_core__NativeArray*)var130)->values[1]=var132;
6160 if (likely(varonce139!=NULL)) {
6161 var140 = varonce139;
6162 } else {
6163 var141 = "(";
6164 var143 = (val*)(1l<<2|1);
6165 var144 = (val*)(1l<<2|1);
6166 var145 = (val*)((long)(0)<<2|3);
6167 var146 = (val*)((long)(0)<<2|3);
6168 var142 = core__flat___CString___to_s_unsafe(var141, var143, var144, var145, var146);
6169 var140 = var142;
6170 varonce139 = var140;
6171 }
6172 ((struct instance_core__NativeArray*)var130)->values[3]=var140;
6173 if (likely(varonce147!=NULL)) {
6174 var148 = varonce147;
6175 } else {
6176 var149 = "); /* boxing ";
6177 var151 = (val*)(13l<<2|1);
6178 var152 = (val*)(13l<<2|1);
6179 var153 = (val*)((long)(0)<<2|3);
6180 var154 = (val*)((long)(0)<<2|3);
6181 var150 = core__flat___CString___to_s_unsafe(var149, var151, var152, var153, var154);
6182 var148 = var150;
6183 varonce147 = var148;
6184 }
6185 ((struct instance_core__NativeArray*)var130)->values[5]=var148;
6186 if (likely(varonce155!=NULL)) {
6187 var156 = varonce155;
6188 } else {
6189 var157 = " */";
6190 var159 = (val*)(3l<<2|1);
6191 var160 = (val*)(3l<<2|1);
6192 var161 = (val*)((long)(0)<<2|3);
6193 var162 = (val*)((long)(0)<<2|3);
6194 var158 = core__flat___CString___to_s_unsafe(var157, var159, var160, var161, var162);
6195 var156 = var158;
6196 varonce155 = var156;
6197 }
6198 ((struct instance_core__NativeArray*)var130)->values[7]=var156;
6199 } else {
6200 var130 = varonce129;
6201 varonce129 = NULL;
6202 }
6203 {
6204 var163 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
6205 }
6206 ((struct instance_core__NativeArray*)var130)->values[0]=var163;
6207 {
6208 var164 = ((val*(*)(val* self))(var_valtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_valtype); /* c_name on <var_valtype:MClassType>*/
6209 }
6210 ((struct instance_core__NativeArray*)var130)->values[2]=var164;
6211 {
6212 var165 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
6213 }
6214 ((struct instance_core__NativeArray*)var130)->values[4]=var165;
6215 {
6216 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
6217 var168 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
6218 if (unlikely(var168 == NULL)) {
6219 if(catchStack.cursor >= 0){
6220 longjmp(catchStack.envs[catchStack.cursor], 1);
6221 }
6222 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6223 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
6224 fatal_exit(1);
6225 }
6226 var166 = var168;
6227 RET_LABEL167:(void)0;
6228 }
6229 }
6230 {
6231 var169 = ((val*(*)(val* self))(var166->class->vft[COLOR_core__abstract_text__Object__to_s]))(var166); /* to_s on <var166:MType>*/
6232 }
6233 ((struct instance_core__NativeArray*)var130)->values[6]=var169;
6234 {
6235 var170 = ((val*(*)(val* self))(var130->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var130); /* native_to_s on <var130:NativeArray[String]>*/
6236 }
6237 varonce129 = var130;
6238 {
6239 nitc___nitc__AbstractCompilerVisitor___add(self, var170); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
6240 }
6241 if (unlikely(varonce171==NULL)) {
6242 var172 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6243 if (likely(varonce173!=NULL)) {
6244 var174 = varonce173;
6245 } else {
6246 var175 = "class_";
6247 var177 = (val*)(6l<<2|1);
6248 var178 = (val*)(6l<<2|1);
6249 var179 = (val*)((long)(0)<<2|3);
6250 var180 = (val*)((long)(0)<<2|3);
6251 var176 = core__flat___CString___to_s_unsafe(var175, var177, var178, var179, var180);
6252 var174 = var176;
6253 varonce173 = var174;
6254 }
6255 ((struct instance_core__NativeArray*)var172)->values[0]=var174;
6256 } else {
6257 var172 = varonce171;
6258 varonce171 = NULL;
6259 }
6260 {
6261 var181 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType(MClassType)>*/
6262 }
6263 ((struct instance_core__NativeArray*)var172)->values[1]=var181;
6264 {
6265 var182 = ((val*(*)(val* self))(var172->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var172); /* native_to_s on <var172:NativeArray[String]>*/
6266 }
6267 varonce171 = var172;
6268 {
6269 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var182); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
6270 }
6271 if (unlikely(varonce183==NULL)) {
6272 var184 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6273 if (likely(varonce185!=NULL)) {
6274 var186 = varonce185;
6275 } else {
6276 var187 = "->class = &class_";
6277 var189 = (val*)(17l<<2|1);
6278 var190 = (val*)(17l<<2|1);
6279 var191 = (val*)((long)(0)<<2|3);
6280 var192 = (val*)((long)(0)<<2|3);
6281 var188 = core__flat___CString___to_s_unsafe(var187, var189, var190, var191, var192);
6282 var186 = var188;
6283 varonce185 = var186;
6284 }
6285 ((struct instance_core__NativeArray*)var184)->values[1]=var186;
6286 if (likely(varonce193!=NULL)) {
6287 var194 = varonce193;
6288 } else {
6289 var195 = ";";
6290 var197 = (val*)(1l<<2|1);
6291 var198 = (val*)(1l<<2|1);
6292 var199 = (val*)((long)(0)<<2|3);
6293 var200 = (val*)((long)(0)<<2|3);
6294 var196 = core__flat___CString___to_s_unsafe(var195, var197, var198, var199, var200);
6295 var194 = var196;
6296 varonce193 = var194;
6297 }
6298 ((struct instance_core__NativeArray*)var184)->values[3]=var194;
6299 } else {
6300 var184 = varonce183;
6301 varonce183 = NULL;
6302 }
6303 {
6304 var201 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
6305 }
6306 ((struct instance_core__NativeArray*)var184)->values[0]=var201;
6307 {
6308 var202 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType(MClassType)>*/
6309 }
6310 ((struct instance_core__NativeArray*)var184)->values[2]=var202;
6311 {
6312 var203 = ((val*(*)(val* self))(var184->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var184); /* native_to_s on <var184:NativeArray[String]>*/
6313 }
6314 varonce183 = var184;
6315 {
6316 nitc___nitc__AbstractCompilerVisitor___add(self, var203); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
6317 }
6318 var = var_res;
6319 goto RET_LABEL;
6320 } else {
6321 var = var_value;
6322 goto RET_LABEL;
6323 }
6324 RET_LABEL:;
6325 return var;
6326 }
6327 /* method separate_erasure_compiler$SeparateErasureCompilerVisitor$class_name_string for (self: SeparateErasureCompilerVisitor, RuntimeVariable): String */
6328 val* nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__class_name_string(val* self, val* p0) {
6329 val* var /* : String */;
6330 val* var_value /* var value: RuntimeVariable */;
6331 static val* varonce;
6332 val* var1 /* : String */;
6333 char* var2 /* : CString */;
6334 val* var3 /* : String */;
6335 val* var4 /* : nullable Int */;
6336 val* var5 /* : nullable Int */;
6337 val* var6 /* : nullable Bool */;
6338 val* var7 /* : nullable Bool */;
6339 val* var8 /* : String */;
6340 val* var_res /* var res: String */;
6341 val* var10 /* : NativeArray[String] */;
6342 static val* varonce9;
6343 static val* varonce11;
6344 val* var12 /* : String */;
6345 char* var13 /* : CString */;
6346 val* var14 /* : String */;
6347 val* var15 /* : nullable Int */;
6348 val* var16 /* : nullable Int */;
6349 val* var17 /* : nullable Bool */;
6350 val* var18 /* : nullable Bool */;
6351 static val* varonce19;
6352 val* var20 /* : String */;
6353 char* var21 /* : CString */;
6354 val* var22 /* : String */;
6355 val* var23 /* : nullable Int */;
6356 val* var24 /* : nullable Int */;
6357 val* var25 /* : nullable Bool */;
6358 val* var26 /* : nullable Bool */;
6359 val* var27 /* : String */;
6360 val* var28 /* : MType */;
6361 val* var30 /* : MType */;
6362 short int var31 /* : Bool */;
6363 short int var32 /* : Bool */;
6364 val* var34 /* : NativeArray[String] */;
6365 static val* varonce33;
6366 static val* varonce35;
6367 val* var36 /* : String */;
6368 char* var37 /* : CString */;
6369 val* var38 /* : String */;
6370 val* var39 /* : nullable Int */;
6371 val* var40 /* : nullable Int */;
6372 val* var41 /* : nullable Bool */;
6373 val* var42 /* : nullable Bool */;
6374 static val* varonce43;
6375 val* var44 /* : String */;
6376 char* var45 /* : CString */;
6377 val* var46 /* : String */;
6378 val* var47 /* : nullable Int */;
6379 val* var48 /* : nullable Int */;
6380 val* var49 /* : nullable Bool */;
6381 val* var50 /* : nullable Bool */;
6382 static val* varonce51;
6383 val* var52 /* : String */;
6384 char* var53 /* : CString */;
6385 val* var54 /* : String */;
6386 val* var55 /* : nullable Int */;
6387 val* var56 /* : nullable Int */;
6388 val* var57 /* : nullable Bool */;
6389 val* var58 /* : nullable Bool */;
6390 val* var59 /* : String */;
6391 val* var60 /* : String */;
6392 val* var61 /* : String */;
6393 val* var63 /* : NativeArray[String] */;
6394 static val* varonce62;
6395 static val* varonce64;
6396 val* var65 /* : String */;
6397 char* var66 /* : CString */;
6398 val* var67 /* : String */;
6399 val* var68 /* : nullable Int */;
6400 val* var69 /* : nullable Int */;
6401 val* var70 /* : nullable Bool */;
6402 val* var71 /* : nullable Bool */;
6403 val* var72 /* : MType */;
6404 val* var74 /* : MType */;
6405 val* var75 /* : String */;
6406 val* var76 /* : String */;
6407 val* var78 /* : NativeArray[String] */;
6408 static val* varonce77;
6409 static val* varonce79;
6410 val* var80 /* : String */;
6411 char* var81 /* : CString */;
6412 val* var82 /* : String */;
6413 val* var83 /* : nullable Int */;
6414 val* var84 /* : nullable Int */;
6415 val* var85 /* : nullable Bool */;
6416 val* var86 /* : nullable Bool */;
6417 static val* varonce87;
6418 val* var88 /* : String */;
6419 char* var89 /* : CString */;
6420 val* var90 /* : String */;
6421 val* var91 /* : nullable Int */;
6422 val* var92 /* : nullable Int */;
6423 val* var93 /* : nullable Bool */;
6424 val* var94 /* : nullable Bool */;
6425 val* var95 /* : MType */;
6426 val* var97 /* : MType */;
6427 val* var98 /* : String */;
6428 val* var99 /* : String */;
6429 var_value = p0;
6430 if (likely(varonce!=NULL)) {
6431 var1 = varonce;
6432 } else {
6433 var2 = "var_class_name";
6434 var4 = (val*)(14l<<2|1);
6435 var5 = (val*)(14l<<2|1);
6436 var6 = (val*)((long)(0)<<2|3);
6437 var7 = (val*)((long)(0)<<2|3);
6438 var3 = core__flat___CString___to_s_unsafe(var2, var4, var5, var6, var7);
6439 var1 = var3;
6440 varonce = var1;
6441 }
6442 {
6443 var8 = nitc___nitc__AbstractCompilerVisitor___get_name(self, var1);
6444 }
6445 var_res = var8;
6446 if (unlikely(varonce9==NULL)) {
6447 var10 = NEW_core__NativeArray((int)3l, &type_core__NativeArray__core__String);
6448 if (likely(varonce11!=NULL)) {
6449 var12 = varonce11;
6450 } else {
6451 var13 = "const char* ";
6452 var15 = (val*)(12l<<2|1);
6453 var16 = (val*)(12l<<2|1);
6454 var17 = (val*)((long)(0)<<2|3);
6455 var18 = (val*)((long)(0)<<2|3);
6456 var14 = core__flat___CString___to_s_unsafe(var13, var15, var16, var17, var18);
6457 var12 = var14;
6458 varonce11 = var12;
6459 }
6460 ((struct instance_core__NativeArray*)var10)->values[0]=var12;
6461 if (likely(varonce19!=NULL)) {
6462 var20 = varonce19;
6463 } else {
6464 var21 = ";";
6465 var23 = (val*)(1l<<2|1);
6466 var24 = (val*)(1l<<2|1);
6467 var25 = (val*)((long)(0)<<2|3);
6468 var26 = (val*)((long)(0)<<2|3);
6469 var22 = core__flat___CString___to_s_unsafe(var21, var23, var24, var25, var26);
6470 var20 = var22;
6471 varonce19 = var20;
6472 }
6473 ((struct instance_core__NativeArray*)var10)->values[2]=var20;
6474 } else {
6475 var10 = varonce9;
6476 varonce9 = NULL;
6477 }
6478 ((struct instance_core__NativeArray*)var10)->values[1]=var_res;
6479 {
6480 var27 = ((val*(*)(val* self))(var10->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var10); /* native_to_s on <var10:NativeArray[String]>*/
6481 }
6482 varonce9 = var10;
6483 {
6484 nitc___nitc__AbstractCompilerVisitor___add_decl(self, var27); /* Direct call abstract_compiler$AbstractCompilerVisitor$add_decl on <self:SeparateErasureCompilerVisitor>*/
6485 }
6486 {
6487 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
6488 var30 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
6489 if (unlikely(var30 == NULL)) {
6490 if(catchStack.cursor >= 0){
6491 longjmp(catchStack.envs[catchStack.cursor], 1);
6492 }
6493 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6494 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
6495 fatal_exit(1);
6496 }
6497 var28 = var30;
6498 RET_LABEL29:(void)0;
6499 }
6500 }
6501 {
6502 var31 = ((short int(*)(val* self))(var28->class->vft[COLOR_nitc__abstract_compiler__MType__is_c_primitive]))(var28); /* is_c_primitive on <var28:MType>*/
6503 }
6504 var32 = !var31;
6505 if (var32){
6506 if (unlikely(varonce33==NULL)) {
6507 var34 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
6508 if (likely(varonce35!=NULL)) {
6509 var36 = varonce35;
6510 } else {
6511 var37 = " = ";
6512 var39 = (val*)(3l<<2|1);
6513 var40 = (val*)(3l<<2|1);
6514 var41 = (val*)((long)(0)<<2|3);
6515 var42 = (val*)((long)(0)<<2|3);
6516 var38 = core__flat___CString___to_s_unsafe(var37, var39, var40, var41, var42);
6517 var36 = var38;
6518 varonce35 = var36;
6519 }
6520 ((struct instance_core__NativeArray*)var34)->values[1]=var36;
6521 if (likely(varonce43!=NULL)) {
6522 var44 = varonce43;
6523 } else {
6524 var45 = " == NULL ? \"null\" : ";
6525 var47 = (val*)(20l<<2|1);
6526 var48 = (val*)(20l<<2|1);
6527 var49 = (val*)((long)(0)<<2|3);
6528 var50 = (val*)((long)(0)<<2|3);
6529 var46 = core__flat___CString___to_s_unsafe(var45, var47, var48, var49, var50);
6530 var44 = var46;
6531 varonce43 = var44;
6532 }
6533 ((struct instance_core__NativeArray*)var34)->values[3]=var44;
6534 if (likely(varonce51!=NULL)) {
6535 var52 = varonce51;
6536 } else {
6537 var53 = "->class->name;";
6538 var55 = (val*)(14l<<2|1);
6539 var56 = (val*)(14l<<2|1);
6540 var57 = (val*)((long)(0)<<2|3);
6541 var58 = (val*)((long)(0)<<2|3);
6542 var54 = core__flat___CString___to_s_unsafe(var53, var55, var56, var57, var58);
6543 var52 = var54;
6544 varonce51 = var52;
6545 }
6546 ((struct instance_core__NativeArray*)var34)->values[5]=var52;
6547 } else {
6548 var34 = varonce33;
6549 varonce33 = NULL;
6550 }
6551 ((struct instance_core__NativeArray*)var34)->values[0]=var_res;
6552 {
6553 var59 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
6554 }
6555 ((struct instance_core__NativeArray*)var34)->values[2]=var59;
6556 {
6557 var60 = ((val*(*)(val* self))(var_value->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_value); /* to_s on <var_value:RuntimeVariable>*/
6558 }
6559 ((struct instance_core__NativeArray*)var34)->values[4]=var60;
6560 {
6561 var61 = ((val*(*)(val* self))(var34->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var34); /* native_to_s on <var34:NativeArray[String]>*/
6562 }
6563 varonce33 = var34;
6564 {
6565 nitc___nitc__AbstractCompilerVisitor___add(self, var61); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
6566 }
6567 } else {
6568 if (unlikely(varonce62==NULL)) {
6569 var63 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6570 if (likely(varonce64!=NULL)) {
6571 var65 = varonce64;
6572 } else {
6573 var66 = "class_";
6574 var68 = (val*)(6l<<2|1);
6575 var69 = (val*)(6l<<2|1);
6576 var70 = (val*)((long)(0)<<2|3);
6577 var71 = (val*)((long)(0)<<2|3);
6578 var67 = core__flat___CString___to_s_unsafe(var66, var68, var69, var70, var71);
6579 var65 = var67;
6580 varonce64 = var65;
6581 }
6582 ((struct instance_core__NativeArray*)var63)->values[0]=var65;
6583 } else {
6584 var63 = varonce62;
6585 varonce62 = NULL;
6586 }
6587 {
6588 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
6589 var74 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
6590 if (unlikely(var74 == NULL)) {
6591 if(catchStack.cursor >= 0){
6592 longjmp(catchStack.envs[catchStack.cursor], 1);
6593 }
6594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6595 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
6596 fatal_exit(1);
6597 }
6598 var72 = var74;
6599 RET_LABEL73:(void)0;
6600 }
6601 }
6602 {
6603 var75 = ((val*(*)(val* self))(var72->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var72); /* c_name on <var72:MType>*/
6604 }
6605 ((struct instance_core__NativeArray*)var63)->values[1]=var75;
6606 {
6607 var76 = ((val*(*)(val* self))(var63->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var63); /* native_to_s on <var63:NativeArray[String]>*/
6608 }
6609 varonce62 = var63;
6610 {
6611 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var76); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
6612 }
6613 if (unlikely(varonce77==NULL)) {
6614 var78 = NEW_core__NativeArray((int)4l, &type_core__NativeArray__core__String);
6615 if (likely(varonce79!=NULL)) {
6616 var80 = varonce79;
6617 } else {
6618 var81 = " = class_";
6619 var83 = (val*)(9l<<2|1);
6620 var84 = (val*)(9l<<2|1);
6621 var85 = (val*)((long)(0)<<2|3);
6622 var86 = (val*)((long)(0)<<2|3);
6623 var82 = core__flat___CString___to_s_unsafe(var81, var83, var84, var85, var86);
6624 var80 = var82;
6625 varonce79 = var80;
6626 }
6627 ((struct instance_core__NativeArray*)var78)->values[1]=var80;
6628 if (likely(varonce87!=NULL)) {
6629 var88 = varonce87;
6630 } else {
6631 var89 = ".name;";
6632 var91 = (val*)(6l<<2|1);
6633 var92 = (val*)(6l<<2|1);
6634 var93 = (val*)((long)(0)<<2|3);
6635 var94 = (val*)((long)(0)<<2|3);
6636 var90 = core__flat___CString___to_s_unsafe(var89, var91, var92, var93, var94);
6637 var88 = var90;
6638 varonce87 = var88;
6639 }
6640 ((struct instance_core__NativeArray*)var78)->values[3]=var88;
6641 } else {
6642 var78 = varonce77;
6643 varonce77 = NULL;
6644 }
6645 ((struct instance_core__NativeArray*)var78)->values[0]=var_res;
6646 {
6647 { /* Inline abstract_compiler$RuntimeVariable$mtype (var_value) on <var_value:RuntimeVariable> */
6648 var97 = var_value->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
6649 if (unlikely(var97 == NULL)) {
6650 if(catchStack.cursor >= 0){
6651 longjmp(catchStack.envs[catchStack.cursor], 1);
6652 }
6653 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6654 PRINT_ERROR(" (%s:%d)\n", FILE_nitc__abstract_compiler, 1983);
6655 fatal_exit(1);
6656 }
6657 var95 = var97;
6658 RET_LABEL96:(void)0;
6659 }
6660 }
6661 {
6662 var98 = ((val*(*)(val* self))(var95->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var95); /* c_name on <var95:MType>*/
6663 }
6664 ((struct instance_core__NativeArray*)var78)->values[2]=var98;
6665 {
6666 var99 = ((val*(*)(val* self))(var78->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
6667 }
6668 varonce77 = var78;
6669 {
6670 nitc___nitc__AbstractCompilerVisitor___add(self, var99); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
6671 }
6672 }
6673 var = var_res;
6674 goto RET_LABEL;
6675 RET_LABEL:;
6676 return var;
6677 }
6678 /* method separate_erasure_compiler$SeparateErasureCompilerVisitor$native_array_instance for (self: SeparateErasureCompilerVisitor, MType, RuntimeVariable): RuntimeVariable */
6679 val* nitc___nitc__SeparateErasureCompilerVisitor___nitc__abstract_compiler__AbstractCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
6680 val* var /* : RuntimeVariable */;
6681 val* var_elttype /* var elttype: MType */;
6682 val* var_length /* var length: RuntimeVariable */;
6683 val* var1 /* : MModule */;
6684 val* var2 /* : MClass */;
6685 val* var_nclass /* var nclass: MClass */;
6686 val* var3 /* : Array[MType] */;
6687 val* var_ /* var : Array[MType] */;
6688 val* var4 /* : MClassType */;
6689 val* var_mtype /* var mtype: MClassType */;
6690 val* var5 /* : RuntimeVariable */;
6691 val* var_res /* var res: RuntimeVariable */;
6692 val* var7 /* : NativeArray[String] */;
6693 static val* varonce;
6694 static val* varonce8;
6695 val* var9 /* : String */;
6696 char* var10 /* : CString */;
6697 val* var11 /* : String */;
6698 val* var12 /* : nullable Int */;
6699 val* var13 /* : nullable Int */;
6700 val* var14 /* : nullable Bool */;
6701 val* var15 /* : nullable Bool */;
6702 val* var16 /* : String */;
6703 val* var17 /* : String */;
6704 val* var19 /* : NativeArray[String] */;
6705 static val* varonce18;
6706 static val* varonce20;
6707 val* var21 /* : String */;
6708 char* var22 /* : CString */;
6709 val* var23 /* : String */;
6710 val* var24 /* : nullable Int */;
6711 val* var25 /* : nullable Int */;
6712 val* var26 /* : nullable Bool */;
6713 val* var27 /* : nullable Bool */;
6714 static val* varonce28;
6715 val* var29 /* : String */;
6716 char* var30 /* : CString */;
6717 val* var31 /* : String */;
6718 val* var32 /* : nullable Int */;
6719 val* var33 /* : nullable Int */;
6720 val* var34 /* : nullable Bool */;
6721 val* var35 /* : nullable Bool */;
6722 static val* varonce36;
6723 val* var37 /* : String */;
6724 char* var38 /* : CString */;
6725 val* var39 /* : String */;
6726 val* var40 /* : nullable Int */;
6727 val* var41 /* : nullable Int */;
6728 val* var42 /* : nullable Bool */;
6729 val* var43 /* : nullable Bool */;
6730 val* var44 /* : String */;
6731 val* var45 /* : String */;
6732 val* var46 /* : String */;
6733 val* var47 /* : String */;
6734 var_elttype = p0;
6735 var_length = p1;
6736 {
6737 var1 = nitc___nitc__AbstractCompilerVisitor___mmodule(self);
6738 }
6739 {
6740 var2 = nitc__model___MModule___native_array_class(var1);
6741 }
6742 var_nclass = var2;
6743 var3 = NEW_core__Array(&type_core__Array__nitc__MType);
6744 {
6745 core___core__Array___with_capacity(var3, 1l); /* Direct call array$Array$with_capacity on <var3:Array[MType]>*/
6746 }
6747 var_ = var3;
6748 {
6749 core___core__AbstractArray___core__abstract_collection__Sequence__push(var_, var_elttype); /* Direct call array$AbstractArray$push on <var_:Array[MType]>*/
6750 }
6751 {
6752 var4 = nitc___nitc__MClass___get_mtype(var_nclass, var_);
6753 }
6754 var_mtype = var4;
6755 {
6756 var5 = nitc___nitc__AbstractCompilerVisitor___new_var(self, var_mtype);
6757 }
6758 var_res = var5;
6759 {
6760 { /* Inline abstract_compiler$RuntimeVariable$is_exact= (var_res,1) on <var_res:RuntimeVariable> */
6761 var_res->attrs[COLOR_nitc__abstract_compiler__RuntimeVariable___is_exact].s = 1; /* _is_exact on <var_res:RuntimeVariable> */
6762 RET_LABEL6:(void)0;
6763 }
6764 }
6765 if (unlikely(varonce==NULL)) {
6766 var7 = NEW_core__NativeArray((int)2l, &type_core__NativeArray__core__String);
6767 if (likely(varonce8!=NULL)) {
6768 var9 = varonce8;
6769 } else {
6770 var10 = "NEW_";
6771 var12 = (val*)(4l<<2|1);
6772 var13 = (val*)(4l<<2|1);
6773 var14 = (val*)((long)(0)<<2|3);
6774 var15 = (val*)((long)(0)<<2|3);
6775 var11 = core__flat___CString___to_s_unsafe(var10, var12, var13, var14, var15);
6776 var9 = var11;
6777 varonce8 = var9;
6778 }
6779 ((struct instance_core__NativeArray*)var7)->values[0]=var9;
6780 } else {
6781 var7 = varonce;
6782 varonce = NULL;
6783 }
6784 {
6785 var16 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_nclass);
6786 }
6787 ((struct instance_core__NativeArray*)var7)->values[1]=var16;
6788 {
6789 var17 = ((val*(*)(val* self))(var7->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var7); /* native_to_s on <var7:NativeArray[String]>*/
6790 }
6791 varonce = var7;
6792 {
6793 nitc___nitc__AbstractCompilerVisitor___require_declaration(self, var17); /* Direct call abstract_compiler$AbstractCompilerVisitor$require_declaration on <self:SeparateErasureCompilerVisitor>*/
6794 }
6795 if (unlikely(varonce18==NULL)) {
6796 var19 = NEW_core__NativeArray((int)6l, &type_core__NativeArray__core__String);
6797 if (likely(varonce20!=NULL)) {
6798 var21 = varonce20;
6799 } else {
6800 var22 = " = NEW_";
6801 var24 = (val*)(7l<<2|1);
6802 var25 = (val*)(7l<<2|1);
6803 var26 = (val*)((long)(0)<<2|3);
6804 var27 = (val*)((long)(0)<<2|3);
6805 var23 = core__flat___CString___to_s_unsafe(var22, var24, var25, var26, var27);
6806 var21 = var23;
6807 varonce20 = var21;
6808 }
6809 ((struct instance_core__NativeArray*)var19)->values[1]=var21;
6810 if (likely(varonce28!=NULL)) {
6811 var29 = varonce28;
6812 } else {
6813 var30 = "(";
6814 var32 = (val*)(1l<<2|1);
6815 var33 = (val*)(1l<<2|1);
6816 var34 = (val*)((long)(0)<<2|3);
6817 var35 = (val*)((long)(0)<<2|3);
6818 var31 = core__flat___CString___to_s_unsafe(var30, var32, var33, var34, var35);
6819 var29 = var31;
6820 varonce28 = var29;
6821 }
6822 ((struct instance_core__NativeArray*)var19)->values[3]=var29;
6823 if (likely(varonce36!=NULL)) {
6824 var37 = varonce36;
6825 } else {
6826 var38 = ");";
6827 var40 = (val*)(2l<<2|1);
6828 var41 = (val*)(2l<<2|1);
6829 var42 = (val*)((long)(0)<<2|3);
6830 var43 = (val*)((long)(0)<<2|3);
6831 var39 = core__flat___CString___to_s_unsafe(var38, var40, var41, var42, var43);
6832 var37 = var39;
6833 varonce36 = var37;
6834 }
6835 ((struct instance_core__NativeArray*)var19)->values[5]=var37;
6836 } else {
6837 var19 = varonce18;
6838 varonce18 = NULL;
6839 }
6840 {
6841 var44 = ((val*(*)(val* self))(var_res->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
6842 }
6843 ((struct instance_core__NativeArray*)var19)->values[0]=var44;
6844 {
6845 var45 = nitc___nitc__MClass___nitc__model_base__MEntity__c_name(var_nclass);
6846 }
6847 ((struct instance_core__NativeArray*)var19)->values[2]=var45;
6848 {
6849 var46 = ((val*(*)(val* self))(var_length->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_length); /* to_s on <var_length:RuntimeVariable>*/
6850 }
6851 ((struct instance_core__NativeArray*)var19)->values[4]=var46;
6852 {
6853 var47 = ((val*(*)(val* self))(var19->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var19); /* native_to_s on <var19:NativeArray[String]>*/
6854 }
6855 varonce18 = var19;
6856 {
6857 nitc___nitc__AbstractCompilerVisitor___add(self, var47); /* Direct call abstract_compiler$AbstractCompilerVisitor$add on <self:SeparateErasureCompilerVisitor>*/
6858 }
6859 var = var_res;
6860 goto RET_LABEL;
6861 RET_LABEL:;
6862 return var;
6863 }