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