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