nitdoc: move css files to share/css/ dir
[nit.git] / c_src / separate_compiler.sep.2.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#autobox for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
3 val* separate_compiler__SeparateCompilerVisitor__autobox(val* self, val* p0, val* p1) {
4 val* var /* : RuntimeVariable */;
5 val* var_value /* var value: RuntimeVariable */;
6 val* var_mtype /* var mtype: MType */;
7 val* var1 /* : MType */;
8 short int var2 /* : Bool */;
9 short int var3 /* : Bool */;
10 val* var4 /* : MType */;
11 val* var5 /* : String */;
12 static val* varonce;
13 val* var6 /* : String */;
14 char* var7 /* : NativeString */;
15 long var8 /* : Int */;
16 val* var9 /* : String */;
17 short int var10 /* : Bool */;
18 short int var_ /* var : Bool */;
19 val* var11 /* : String */;
20 static val* varonce12;
21 val* var13 /* : String */;
22 char* var14 /* : NativeString */;
23 long var15 /* : Int */;
24 val* var16 /* : String */;
25 short int var17 /* : Bool */;
26 val* var18 /* : MType */;
27 val* var19 /* : String */;
28 static val* varonce20;
29 val* var21 /* : String */;
30 char* var22 /* : NativeString */;
31 long var23 /* : Int */;
32 val* var24 /* : String */;
33 short int var25 /* : Bool */;
34 static val* varonce26;
35 val* var27 /* : String */;
36 char* var28 /* : NativeString */;
37 long var29 /* : Int */;
38 val* var30 /* : String */;
39 val* var31 /* : String */;
40 static val* varonce32;
41 val* var33 /* : String */;
42 char* var34 /* : NativeString */;
43 long var35 /* : Int */;
44 val* var36 /* : String */;
45 static val* varonce37;
46 val* var38 /* : String */;
47 char* var39 /* : NativeString */;
48 long var40 /* : Int */;
49 val* var41 /* : String */;
50 val* var42 /* : MType */;
51 static val* varonce43;
52 val* var44 /* : String */;
53 char* var45 /* : NativeString */;
54 long var46 /* : Int */;
55 val* var47 /* : String */;
56 static val* varonce48;
57 val* var49 /* : String */;
58 char* var50 /* : NativeString */;
59 long var51 /* : Int */;
60 val* var52 /* : String */;
61 val* var53 /* : Array[Object] */;
62 long var54 /* : Int */;
63 val* var55 /* : NativeArray[Object] */;
64 val* var56 /* : String */;
65 val* var57 /* : RuntimeVariable */;
66 val* var58 /* : String */;
67 static val* varonce59;
68 val* var60 /* : String */;
69 char* var61 /* : NativeString */;
70 long var62 /* : Int */;
71 val* var63 /* : String */;
72 short int var64 /* : Bool */;
73 val* var65 /* : MType */;
74 short int var66 /* : Bool */;
75 int cltype;
76 int idtype;
77 const char* var_class_name;
78 val* var_valtype /* var valtype: MClassType */;
79 val* var67 /* : RuntimeVariable */;
80 val* var_res /* var res: RuntimeVariable */;
81 val* var68 /* : AbstractCompiler */;
82 val* var69 /* : RapidTypeAnalysis */;
83 val* var70 /* : HashSet[MClassType] */;
84 short int var71 /* : Bool */;
85 short int var72 /* : Bool */;
86 static val* varonce73;
87 val* var74 /* : String */;
88 char* var75 /* : NativeString */;
89 long var76 /* : Int */;
90 val* var77 /* : String */;
91 val* var78 /* : MType */;
92 static val* varonce79;
93 val* var80 /* : String */;
94 char* var81 /* : NativeString */;
95 long var82 /* : Int */;
96 val* var83 /* : String */;
97 static val* varonce84;
98 val* var85 /* : String */;
99 char* var86 /* : NativeString */;
100 long var87 /* : Int */;
101 val* var88 /* : String */;
102 val* var89 /* : MType */;
103 static val* varonce90;
104 val* var91 /* : String */;
105 char* var92 /* : NativeString */;
106 long var93 /* : Int */;
107 val* var94 /* : String */;
108 val* var95 /* : Array[Object] */;
109 long var96 /* : Int */;
110 val* var97 /* : NativeArray[Object] */;
111 val* var98 /* : String */;
112 static val* varonce99;
113 val* var100 /* : String */;
114 char* var101 /* : NativeString */;
115 long var102 /* : Int */;
116 val* var103 /* : String */;
117 static val* varonce104;
118 val* var105 /* : String */;
119 char* var106 /* : NativeString */;
120 long var107 /* : Int */;
121 val* var108 /* : String */;
122 val* var109 /* : String */;
123 static val* varonce110;
124 val* var111 /* : String */;
125 char* var112 /* : NativeString */;
126 long var113 /* : Int */;
127 val* var114 /* : String */;
128 static val* varonce115;
129 val* var116 /* : String */;
130 char* var117 /* : NativeString */;
131 long var118 /* : Int */;
132 val* var119 /* : String */;
133 val* var120 /* : MType */;
134 static val* varonce121;
135 val* var122 /* : String */;
136 char* var123 /* : NativeString */;
137 long var124 /* : Int */;
138 val* var125 /* : String */;
139 static val* varonce126;
140 val* var127 /* : String */;
141 char* var128 /* : NativeString */;
142 long var129 /* : Int */;
143 val* var130 /* : String */;
144 val* var131 /* : Array[Object] */;
145 long var132 /* : Int */;
146 val* var133 /* : NativeArray[Object] */;
147 val* var134 /* : String */;
148 val* var135 /* : RuntimeVariable */;
149 val* var_res136 /* var res: RuntimeVariable */;
150 static val* varonce137;
151 val* var138 /* : String */;
152 char* var139 /* : NativeString */;
153 long var140 /* : Int */;
154 val* var141 /* : String */;
155 static val* varonce142;
156 val* var143 /* : String */;
157 char* var144 /* : NativeString */;
158 long var145 /* : Int */;
159 val* var146 /* : String */;
160 val* var147 /* : MType */;
161 static val* varonce148;
162 val* var149 /* : String */;
163 char* var150 /* : NativeString */;
164 long var151 /* : Int */;
165 val* var152 /* : String */;
166 static val* varonce153;
167 val* var154 /* : String */;
168 char* var155 /* : NativeString */;
169 long var156 /* : Int */;
170 val* var157 /* : String */;
171 val* var158 /* : Array[Object] */;
172 long var159 /* : Int */;
173 val* var160 /* : NativeArray[Object] */;
174 val* var161 /* : String */;
175 static val* varonce162;
176 val* var163 /* : String */;
177 char* var164 /* : NativeString */;
178 long var165 /* : Int */;
179 val* var166 /* : String */;
180 val* var167 /* : MType */;
181 static val* varonce168;
182 val* var169 /* : String */;
183 char* var170 /* : NativeString */;
184 long var171 /* : Int */;
185 val* var172 /* : String */;
186 static val* varonce173;
187 val* var174 /* : String */;
188 char* var175 /* : NativeString */;
189 long var176 /* : Int */;
190 val* var177 /* : String */;
191 val* var178 /* : Array[Object] */;
192 long var179 /* : Int */;
193 val* var180 /* : NativeArray[Object] */;
194 val* var181 /* : String */;
195 var_value = p0;
196 var_mtype = p1;
197 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
198 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_mtype) /* == on <var1:MType>*/;
199 if (var2){
200 var = var_value;
201 goto RET_LABEL;
202 } else {
203 var4 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
204 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
205 if (varonce) {
206 var6 = varonce;
207 } else {
208 var7 = "val*";
209 var8 = 4;
210 var9 = string__NativeString__to_s_with_length(var7, var8);
211 var6 = var9;
212 varonce = var6;
213 }
214 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var6) /* == on <var5:String>*/;
215 var_ = var10;
216 if (var10){
217 var11 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
218 if (varonce12) {
219 var13 = varonce12;
220 } else {
221 var14 = "val*";
222 var15 = 4;
223 var16 = string__NativeString__to_s_with_length(var14, var15);
224 var13 = var16;
225 varonce12 = var13;
226 }
227 var17 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var13) /* == on <var11:String>*/;
228 var3 = var17;
229 } else {
230 var3 = var_;
231 }
232 if (var3){
233 var = var_value;
234 goto RET_LABEL;
235 } else {
236 var18 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
237 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__MType__ctype]))(var18) /* ctype on <var18:MType>*/;
238 if (varonce20) {
239 var21 = varonce20;
240 } else {
241 var22 = "val*";
242 var23 = 4;
243 var24 = string__NativeString__to_s_with_length(var22, var23);
244 var21 = var24;
245 varonce20 = var21;
246 }
247 var25 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var21) /* == on <var19:String>*/;
248 if (var25){
249 if (varonce26) {
250 var27 = varonce26;
251 } else {
252 var28 = "((struct instance_";
253 var29 = 18;
254 var30 = string__NativeString__to_s_with_length(var28, var29);
255 var27 = var30;
256 varonce26 = var27;
257 }
258 var31 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
259 if (varonce32) {
260 var33 = varonce32;
261 } else {
262 var34 = "*)";
263 var35 = 2;
264 var36 = string__NativeString__to_s_with_length(var34, var35);
265 var33 = var36;
266 varonce32 = var33;
267 }
268 if (varonce37) {
269 var38 = varonce37;
270 } else {
271 var39 = ")->value; /* autounbox from ";
272 var40 = 28;
273 var41 = string__NativeString__to_s_with_length(var39, var40);
274 var38 = var41;
275 varonce37 = var38;
276 }
277 var42 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
278 if (varonce43) {
279 var44 = varonce43;
280 } else {
281 var45 = " to ";
282 var46 = 4;
283 var47 = string__NativeString__to_s_with_length(var45, var46);
284 var44 = var47;
285 varonce43 = var44;
286 }
287 if (varonce48) {
288 var49 = varonce48;
289 } else {
290 var50 = " */";
291 var51 = 3;
292 var52 = string__NativeString__to_s_with_length(var50, var51);
293 var49 = var52;
294 varonce48 = var49;
295 }
296 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
297 { /* var53 = array_instance Array[Object] */
298 var54 = 9;
299 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
300 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var27;
301 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var31;
302 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var33;
303 ((struct instance_array__NativeArray*)var55)->values[3] = (val*) var_value;
304 ((struct instance_array__NativeArray*)var55)->values[4] = (val*) var38;
305 ((struct instance_array__NativeArray*)var55)->values[5] = (val*) var42;
306 ((struct instance_array__NativeArray*)var55)->values[6] = (val*) var44;
307 ((struct instance_array__NativeArray*)var55)->values[7] = (val*) var_mtype;
308 ((struct instance_array__NativeArray*)var55)->values[8] = (val*) var49;
309 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
310 CHECK_NEW_array__Array(var53);
311 }
312 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
313 var57 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var56, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
314 var = var57;
315 goto RET_LABEL;
316 } else {
317 var58 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
318 if (varonce59) {
319 var60 = varonce59;
320 } else {
321 var61 = "val*";
322 var62 = 4;
323 var63 = string__NativeString__to_s_with_length(var61, var62);
324 var60 = var63;
325 varonce59 = var60;
326 }
327 var64 = ((short int (*)(val*, val*))(var58->class->vft[COLOR_kernel__Object___61d_61d]))(var58, var60) /* == on <var58:String>*/;
328 if (var64){
329 var65 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
330 /* <var65:MType> isa MClassType */
331 cltype = type_model__MClassType.color;
332 idtype = type_model__MClassType.id;
333 if(cltype >= var65->type->table_size) {
334 var66 = 0;
335 } else {
336 var66 = var65->type->type_table[cltype] == idtype;
337 }
338 if (!var66) {
339 var_class_name = var65 == NULL ? "null" : var65->type->name;
340 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
341 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 944);
342 exit(1);
343 }
344 var_valtype = var65;
345 var67 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:SeparateCompilerVisitor>*/;
346 var_res = var67;
347 var68 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
348 var69 = ((val* (*)(val*))(var68->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(var68) /* runtime_type_analysis on <var68:AbstractCompiler(SeparateCompiler)>*/;
349 var70 = ((val* (*)(val*))(var69->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var69) /* live_types on <var69:RapidTypeAnalysis>*/;
350 var71 = ((short int (*)(val*, val*))(var70->class->vft[COLOR_abstract_collection__Collection__has]))(var70, var_valtype) /* has on <var70:HashSet[MClassType]>*/;
351 var72 = !var71;
352 if (var72){
353 if (varonce73) {
354 var74 = varonce73;
355 } else {
356 var75 = "/*no autobox from ";
357 var76 = 18;
358 var77 = string__NativeString__to_s_with_length(var75, var76);
359 var74 = var77;
360 varonce73 = var74;
361 }
362 var78 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
363 if (varonce79) {
364 var80 = varonce79;
365 } else {
366 var81 = " to ";
367 var82 = 4;
368 var83 = string__NativeString__to_s_with_length(var81, var82);
369 var80 = var83;
370 varonce79 = var80;
371 }
372 if (varonce84) {
373 var85 = varonce84;
374 } else {
375 var86 = ": ";
376 var87 = 2;
377 var88 = string__NativeString__to_s_with_length(var86, var87);
378 var85 = var88;
379 varonce84 = var85;
380 }
381 var89 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
382 if (varonce90) {
383 var91 = varonce90;
384 } else {
385 var92 = " is not live! */";
386 var93 = 16;
387 var94 = string__NativeString__to_s_with_length(var92, var93);
388 var91 = var94;
389 varonce90 = var91;
390 }
391 var95 = NEW_array__Array(&type_array__Arraykernel__Object);
392 { /* var95 = array_instance Array[Object] */
393 var96 = 7;
394 var97 = NEW_array__NativeArray(var96, &type_array__NativeArraykernel__Object);
395 ((struct instance_array__NativeArray*)var97)->values[0] = (val*) var74;
396 ((struct instance_array__NativeArray*)var97)->values[1] = (val*) var78;
397 ((struct instance_array__NativeArray*)var97)->values[2] = (val*) var80;
398 ((struct instance_array__NativeArray*)var97)->values[3] = (val*) var_mtype;
399 ((struct instance_array__NativeArray*)var97)->values[4] = (val*) var85;
400 ((struct instance_array__NativeArray*)var97)->values[5] = (val*) var89;
401 ((struct instance_array__NativeArray*)var97)->values[6] = (val*) var91;
402 ((void (*)(val*, val*, long))(var95->class->vft[COLOR_array__Array__with_native]))(var95, var97, var96) /* with_native on <var95:Array[Object]>*/;
403 CHECK_NEW_array__Array(var95);
404 }
405 var98 = ((val* (*)(val*))(var95->class->vft[COLOR_string__Object__to_s]))(var95) /* to_s on <var95:Array[Object]>*/;
406 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var98) /* add on <self:SeparateCompilerVisitor>*/;
407 if (varonce99) {
408 var100 = varonce99;
409 } else {
410 var101 = "printf(\"Dead code executed!\\n\"); exit(1);";
411 var102 = 41;
412 var103 = string__NativeString__to_s_with_length(var101, var102);
413 var100 = var103;
414 varonce99 = var100;
415 }
416 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var100) /* add on <self:SeparateCompilerVisitor>*/;
417 var = var_res;
418 goto RET_LABEL;
419 } else {
420 }
421 if (varonce104) {
422 var105 = varonce104;
423 } else {
424 var106 = " = BOX_";
425 var107 = 7;
426 var108 = string__NativeString__to_s_with_length(var106, var107);
427 var105 = var108;
428 varonce104 = var105;
429 }
430 var109 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
431 if (varonce110) {
432 var111 = varonce110;
433 } else {
434 var112 = "(";
435 var113 = 1;
436 var114 = string__NativeString__to_s_with_length(var112, var113);
437 var111 = var114;
438 varonce110 = var111;
439 }
440 if (varonce115) {
441 var116 = varonce115;
442 } else {
443 var117 = "); /* autobox from ";
444 var118 = 19;
445 var119 = string__NativeString__to_s_with_length(var117, var118);
446 var116 = var119;
447 varonce115 = var116;
448 }
449 var120 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
450 if (varonce121) {
451 var122 = varonce121;
452 } else {
453 var123 = " to ";
454 var124 = 4;
455 var125 = string__NativeString__to_s_with_length(var123, var124);
456 var122 = var125;
457 varonce121 = var122;
458 }
459 if (varonce126) {
460 var127 = varonce126;
461 } else {
462 var128 = " */";
463 var129 = 3;
464 var130 = string__NativeString__to_s_with_length(var128, var129);
465 var127 = var130;
466 varonce126 = var127;
467 }
468 var131 = NEW_array__Array(&type_array__Arraykernel__Object);
469 { /* var131 = array_instance Array[Object] */
470 var132 = 10;
471 var133 = NEW_array__NativeArray(var132, &type_array__NativeArraykernel__Object);
472 ((struct instance_array__NativeArray*)var133)->values[0] = (val*) var_res;
473 ((struct instance_array__NativeArray*)var133)->values[1] = (val*) var105;
474 ((struct instance_array__NativeArray*)var133)->values[2] = (val*) var109;
475 ((struct instance_array__NativeArray*)var133)->values[3] = (val*) var111;
476 ((struct instance_array__NativeArray*)var133)->values[4] = (val*) var_value;
477 ((struct instance_array__NativeArray*)var133)->values[5] = (val*) var116;
478 ((struct instance_array__NativeArray*)var133)->values[6] = (val*) var120;
479 ((struct instance_array__NativeArray*)var133)->values[7] = (val*) var122;
480 ((struct instance_array__NativeArray*)var133)->values[8] = (val*) var_mtype;
481 ((struct instance_array__NativeArray*)var133)->values[9] = (val*) var127;
482 ((void (*)(val*, val*, long))(var131->class->vft[COLOR_array__Array__with_native]))(var131, var133, var132) /* with_native on <var131:Array[Object]>*/;
483 CHECK_NEW_array__Array(var131);
484 }
485 var134 = ((val* (*)(val*))(var131->class->vft[COLOR_string__Object__to_s]))(var131) /* to_s on <var131:Array[Object]>*/;
486 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var134) /* add on <self:SeparateCompilerVisitor>*/;
487 var = var_res;
488 goto RET_LABEL;
489 } else {
490 var135 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:SeparateCompilerVisitor>*/;
491 var_res136 = var135;
492 if (varonce137) {
493 var138 = varonce137;
494 } else {
495 var139 = "/* ";
496 var140 = 3;
497 var141 = string__NativeString__to_s_with_length(var139, var140);
498 var138 = var141;
499 varonce137 = var138;
500 }
501 if (varonce142) {
502 var143 = varonce142;
503 } else {
504 var144 = " left unintialized (cannot convert ";
505 var145 = 35;
506 var146 = string__NativeString__to_s_with_length(var144, var145);
507 var143 = var146;
508 varonce142 = var143;
509 }
510 var147 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
511 if (varonce148) {
512 var149 = varonce148;
513 } else {
514 var150 = " to ";
515 var151 = 4;
516 var152 = string__NativeString__to_s_with_length(var150, var151);
517 var149 = var152;
518 varonce148 = var149;
519 }
520 if (varonce153) {
521 var154 = varonce153;
522 } else {
523 var155 = ") */";
524 var156 = 4;
525 var157 = string__NativeString__to_s_with_length(var155, var156);
526 var154 = var157;
527 varonce153 = var154;
528 }
529 var158 = NEW_array__Array(&type_array__Arraykernel__Object);
530 { /* var158 = array_instance Array[Object] */
531 var159 = 7;
532 var160 = NEW_array__NativeArray(var159, &type_array__NativeArraykernel__Object);
533 ((struct instance_array__NativeArray*)var160)->values[0] = (val*) var138;
534 ((struct instance_array__NativeArray*)var160)->values[1] = (val*) var_res136;
535 ((struct instance_array__NativeArray*)var160)->values[2] = (val*) var143;
536 ((struct instance_array__NativeArray*)var160)->values[3] = (val*) var147;
537 ((struct instance_array__NativeArray*)var160)->values[4] = (val*) var149;
538 ((struct instance_array__NativeArray*)var160)->values[5] = (val*) var_mtype;
539 ((struct instance_array__NativeArray*)var160)->values[6] = (val*) var154;
540 ((void (*)(val*, val*, long))(var158->class->vft[COLOR_array__Array__with_native]))(var158, var160, var159) /* with_native on <var158:Array[Object]>*/;
541 CHECK_NEW_array__Array(var158);
542 }
543 var161 = ((val* (*)(val*))(var158->class->vft[COLOR_string__Object__to_s]))(var158) /* to_s on <var158:Array[Object]>*/;
544 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var161) /* add on <self:SeparateCompilerVisitor>*/;
545 if (varonce162) {
546 var163 = varonce162;
547 } else {
548 var164 = "printf(\"Cast error: Cannot cast %s to %s.\\n\", \"";
549 var165 = 47;
550 var166 = string__NativeString__to_s_with_length(var164, var165);
551 var163 = var166;
552 varonce162 = var163;
553 }
554 var167 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
555 if (varonce168) {
556 var169 = varonce168;
557 } else {
558 var170 = "\", \"";
559 var171 = 4;
560 var172 = string__NativeString__to_s_with_length(var170, var171);
561 var169 = var172;
562 varonce168 = var169;
563 }
564 if (varonce173) {
565 var174 = varonce173;
566 } else {
567 var175 = "\"); exit(1);";
568 var176 = 12;
569 var177 = string__NativeString__to_s_with_length(var175, var176);
570 var174 = var177;
571 varonce173 = var174;
572 }
573 var178 = NEW_array__Array(&type_array__Arraykernel__Object);
574 { /* var178 = array_instance Array[Object] */
575 var179 = 5;
576 var180 = NEW_array__NativeArray(var179, &type_array__NativeArraykernel__Object);
577 ((struct instance_array__NativeArray*)var180)->values[0] = (val*) var163;
578 ((struct instance_array__NativeArray*)var180)->values[1] = (val*) var167;
579 ((struct instance_array__NativeArray*)var180)->values[2] = (val*) var169;
580 ((struct instance_array__NativeArray*)var180)->values[3] = (val*) var_mtype;
581 ((struct instance_array__NativeArray*)var180)->values[4] = (val*) var174;
582 ((void (*)(val*, val*, long))(var178->class->vft[COLOR_array__Array__with_native]))(var178, var180, var179) /* with_native on <var178:Array[Object]>*/;
583 CHECK_NEW_array__Array(var178);
584 }
585 var181 = ((val* (*)(val*))(var178->class->vft[COLOR_string__Object__to_s]))(var178) /* to_s on <var178:Array[Object]>*/;
586 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var181) /* add on <self:SeparateCompilerVisitor>*/;
587 var = var_res136;
588 goto RET_LABEL;
589 }
590 }
591 }
592 }
593 RET_LABEL:;
594 return var;
595 }
596 /* method separate_compiler#SeparateCompilerVisitor#autobox for (self: Object, RuntimeVariable, MType): RuntimeVariable */
597 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__autobox(val* self, val* p0, val* p1) {
598 val* var /* : RuntimeVariable */;
599 val* var1 /* : RuntimeVariable */;
600 var1 = separate_compiler__SeparateCompilerVisitor__autobox(self, p0, p1);
601 var = var1;
602 RET_LABEL:;
603 return var;
604 }
605 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */
606 val* separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
607 val* var /* : String */;
608 val* var_value /* var value: RuntimeVariable */;
609 val* var1 /* : MType */;
610 val* var2 /* : String */;
611 static val* varonce;
612 val* var3 /* : String */;
613 char* var4 /* : NativeString */;
614 long var5 /* : Int */;
615 val* var6 /* : String */;
616 short int var7 /* : Bool */;
617 val* var8 /* : Array[Object] */;
618 long var9 /* : Int */;
619 val* var_ /* var : Array[Object] */;
620 static val* varonce10;
621 val* var11 /* : String */;
622 char* var12 /* : NativeString */;
623 long var13 /* : Int */;
624 val* var14 /* : String */;
625 static val* varonce15;
626 val* var16 /* : String */;
627 char* var17 /* : NativeString */;
628 long var18 /* : Int */;
629 val* var19 /* : String */;
630 val* var20 /* : String */;
631 static val* varonce21;
632 val* var22 /* : String */;
633 char* var23 /* : NativeString */;
634 long var24 /* : Int */;
635 val* var25 /* : String */;
636 val* var26 /* : MType */;
637 val* var27 /* : String */;
638 val* var28 /* : Array[Object] */;
639 long var29 /* : Int */;
640 val* var30 /* : NativeArray[Object] */;
641 val* var31 /* : String */;
642 val* var32 /* : Array[Object] */;
643 long var33 /* : Int */;
644 val* var_34 /* var : Array[Object] */;
645 static val* varonce35;
646 val* var36 /* : String */;
647 char* var37 /* : NativeString */;
648 long var38 /* : Int */;
649 val* var39 /* : String */;
650 val* var40 /* : MType */;
651 val* var41 /* : String */;
652 static val* varonce42;
653 val* var43 /* : String */;
654 char* var44 /* : NativeString */;
655 long var45 /* : Int */;
656 val* var46 /* : String */;
657 val* var47 /* : String */;
658 var_value = p0;
659 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
660 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var1) /* ctype on <var1:MType>*/;
661 if (varonce) {
662 var3 = varonce;
663 } else {
664 var4 = "val*";
665 var5 = 4;
666 var6 = string__NativeString__to_s_with_length(var4, var5);
667 var3 = var6;
668 varonce = var3;
669 }
670 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var3) /* == on <var2:String>*/;
671 if (var7){
672 var8 = NEW_array__Array(&type_array__Arraykernel__Object);
673 var9 = 3;
674 ((void (*)(val*, long))(var8->class->vft[COLOR_array__Array__with_capacity]))(var8, var9) /* with_capacity on <var8:Array[Object]>*/;
675 CHECK_NEW_array__Array(var8);
676 var_ = var8;
677 if (varonce10) {
678 var11 = varonce10;
679 } else {
680 var12 = "";
681 var13 = 0;
682 var14 = string__NativeString__to_s_with_length(var12, var13);
683 var11 = var14;
684 varonce10 = var11;
685 }
686 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
687 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_value) /* add on <var_:Array[Object]>*/;
688 if (varonce15) {
689 var16 = varonce15;
690 } else {
691 var17 = "->type";
692 var18 = 6;
693 var19 = string__NativeString__to_s_with_length(var17, var18);
694 var16 = var19;
695 varonce15 = var16;
696 }
697 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
698 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
699 var = var20;
700 goto RET_LABEL;
701 } else {
702 if (varonce21) {
703 var22 = varonce21;
704 } else {
705 var23 = "type_";
706 var24 = 5;
707 var25 = string__NativeString__to_s_with_length(var23, var24);
708 var22 = var25;
709 varonce21 = var22;
710 }
711 var26 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
712 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_compiler__MType__c_name]))(var26) /* c_name on <var26:MType>*/;
713 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
714 { /* var28 = array_instance Array[Object] */
715 var29 = 2;
716 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
717 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var22;
718 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var27;
719 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
720 CHECK_NEW_array__Array(var28);
721 }
722 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
723 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var31) /* require_declaration on <self:SeparateCompilerVisitor>*/;
724 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
725 var33 = 3;
726 ((void (*)(val*, long))(var32->class->vft[COLOR_array__Array__with_capacity]))(var32, var33) /* with_capacity on <var32:Array[Object]>*/;
727 CHECK_NEW_array__Array(var32);
728 var_34 = var32;
729 if (varonce35) {
730 var36 = varonce35;
731 } else {
732 var37 = "(&type_";
733 var38 = 7;
734 var39 = string__NativeString__to_s_with_length(var37, var38);
735 var36 = var39;
736 varonce35 = var36;
737 }
738 ((void (*)(val*, val*))(var_34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_34, var36) /* add on <var_34:Array[Object]>*/;
739 var40 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
740 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_compiler__MType__c_name]))(var40) /* c_name on <var40:MType>*/;
741 ((void (*)(val*, val*))(var_34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_34, var41) /* add on <var_34:Array[Object]>*/;
742 if (varonce42) {
743 var43 = varonce42;
744 } else {
745 var44 = ")";
746 var45 = 1;
747 var46 = string__NativeString__to_s_with_length(var44, var45);
748 var43 = var46;
749 varonce42 = var43;
750 }
751 ((void (*)(val*, val*))(var_34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_34, var43) /* add on <var_34:Array[Object]>*/;
752 var47 = ((val* (*)(val*))(var_34->class->vft[COLOR_string__Object__to_s]))(var_34) /* to_s on <var_34:Array[Object]>*/;
753 var = var47;
754 goto RET_LABEL;
755 }
756 RET_LABEL:;
757 return var;
758 }
759 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: Object, RuntimeVariable): String */
760 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
761 val* var /* : String */;
762 val* var1 /* : String */;
763 var1 = separate_compiler__SeparateCompilerVisitor__type_info(self, p0);
764 var = var1;
765 RET_LABEL:;
766 return var;
767 }
768 /* method separate_compiler#SeparateCompilerVisitor#send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
769 val* separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
770 val* var /* : nullable RuntimeVariable */;
771 val* var_mmethod /* var mmethod: MMethod */;
772 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
773 val* var1 /* : MPropDef */;
774 val* var2 /* : MPropDef */;
775 val* var3 /* : nullable MSignature */;
776 val* var4 /* : String */;
777 val* var5 /* : nullable RuntimeVariable */;
778 var_mmethod = p0;
779 var_arguments = p1;
780 var1 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
781 var2 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
782 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MMethodDef__msignature]))(var2) /* msignature on <var2:MPropDef(MMethodDef)>*/;
783 if (var3 == NULL) {
784 fprintf(stderr, "Runtime error: %s", "Cast failed");
785 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 976);
786 exit(1);
787 }
788 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__varargize]))(self, var1, var3, var_arguments) /* varargize on <self:SeparateCompilerVisitor>*/;
789 var4 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_mmethod) /* const_color on <var_mmethod:MMethod>*/;
790 var5 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__table_send]))(self, var_mmethod, var_arguments, var4) /* table_send on <self:SeparateCompilerVisitor>*/;
791 var = var5;
792 goto RET_LABEL;
793 RET_LABEL:;
794 return var;
795 }
796 /* method separate_compiler#SeparateCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
797 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
798 val* var /* : nullable RuntimeVariable */;
799 val* var1 /* : nullable RuntimeVariable */;
800 var1 = separate_compiler__SeparateCompilerVisitor__send(self, p0, p1);
801 var = var1;
802 RET_LABEL:;
803 return var;
804 }
805 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
806 val* separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
807 val* var /* : nullable RuntimeVariable */;
808 val* var_mmethod /* var mmethod: MMethod */;
809 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
810 val* var_const_color /* var const_color: String */;
811 val* var1 /* : nullable Object */;
812 val* var2 /* : MType */;
813 val* var3 /* : String */;
814 static val* varonce;
815 val* var4 /* : String */;
816 char* var5 /* : NativeString */;
817 long var6 /* : Int */;
818 val* var7 /* : String */;
819 short int var8 /* : Bool */;
820 val* var9 /* : AbstractCompiler */;
821 val* var10 /* : MModule */;
822 val* var_m /* var m: MModule */;
823 val* var11 /* : AbstractCompiler */;
824 val* var12 /* : AbstractCompiler */;
825 val* var13 /* : MModule */;
826 val* var14 /* : nullable Object */;
827 val* var15 /* : MType */;
828 val* var16 /* : nullable RuntimeVariable */;
829 val* var_res /* var res: nullable RuntimeVariable */;
830 val* var17 /* : AbstractCompiler */;
831 val* var18 /* : MPropDef */;
832 val* var19 /* : nullable MSignature */;
833 val* var20 /* : MPropDef */;
834 val* var21 /* : MClassDef */;
835 val* var22 /* : MClassType */;
836 val* var23 /* : MPropDef */;
837 val* var24 /* : MClassDef */;
838 val* var25 /* : MClassType */;
839 val* var26 /* : MPropDef */;
840 val* var27 /* : MClassDef */;
841 val* var28 /* : MModule */;
842 short int var29 /* : Bool */;
843 val* var30 /* : MType */;
844 val* var_msignature /* var msignature: MSignature */;
845 val* var31 /* : nullable MType */;
846 val* var_ret /* var ret: nullable MType */;
847 short int var32 /* : Bool */;
848 val* var33 /* : nullable Object */;
849 val* var34 /* : MType */;
850 val* var35 /* : RuntimeVariable */;
851 val* var_res36 /* var res: nullable RuntimeVariable */;
852 val* var37 /* : null */;
853 short int var38 /* : Bool */;
854 val* var39 /* : null */;
855 val* var40 /* : RuntimeVariable */;
856 val* var41 /* : Buffer */;
857 val* var_s /* var s: Buffer */;
858 val* var42 /* : Buffer */;
859 val* var_ss /* var ss: Buffer */;
860 val* var43 /* : nullable Object */;
861 val* var_recv /* var recv: RuntimeVariable */;
862 static val* varonce44;
863 val* var45 /* : String */;
864 char* var46 /* : NativeString */;
865 long var47 /* : Int */;
866 val* var48 /* : String */;
867 val* var49 /* : Array[Object] */;
868 long var50 /* : Int */;
869 val* var51 /* : NativeArray[Object] */;
870 val* var52 /* : String */;
871 val* var53 /* : Range[Int] */;
872 long var54 /* : Int */;
873 long var55 /* : Int */;
874 val* var56 /* : Discrete */;
875 val* var57 /* : Discrete */;
876 val* var58 /* : Iterator[nullable Object] */;
877 short int var59 /* : Bool */;
878 val* var60 /* : nullable Object */;
879 long var_i /* var i: Int */;
880 long var61 /* : Int */;
881 long var62 /* : Int */;
882 long var63 /* : Int */;
883 long var65 /* : Int */;
884 val* var66 /* : nullable Object */;
885 val* var_a /* var a: RuntimeVariable */;
886 val* var67 /* : Array[MParameter] */;
887 val* var68 /* : nullable Object */;
888 val* var69 /* : MType */;
889 val* var_t /* var t: MType */;
890 long var70 /* : Int */;
891 short int var71 /* : Bool */;
892 short int var73 /* : Bool */;
893 long var74 /* : Int */;
894 long var75 /* : Int */;
895 long var77 /* : Int */;
896 val* var78 /* : nullable Object */;
897 val* var79 /* : MType */;
898 static val* varonce80;
899 val* var81 /* : String */;
900 char* var82 /* : NativeString */;
901 long var83 /* : Int */;
902 val* var84 /* : String */;
903 val* var85 /* : String */;
904 val* var86 /* : Array[Object] */;
905 long var87 /* : Int */;
906 val* var88 /* : NativeArray[Object] */;
907 val* var89 /* : String */;
908 val* var90 /* : RuntimeVariable */;
909 static val* varonce91;
910 val* var92 /* : String */;
911 char* var93 /* : NativeString */;
912 long var94 /* : Int */;
913 val* var95 /* : String */;
914 val* var96 /* : Array[Object] */;
915 long var97 /* : Int */;
916 val* var98 /* : NativeArray[Object] */;
917 val* var99 /* : String */;
918 short int var100 /* : Bool */;
919 short int var101 /* : Bool */;
920 val* var102 /* : AbstractCompiler */;
921 val* var103 /* : ModelBuilder */;
922 val* var104 /* : ToolContext */;
923 val* var105 /* : OptionBool */;
924 val* var106 /* : nullable Object */;
925 short int var107 /* : Bool */;
926 short int var108 /* : Bool */;
927 short int var_ /* var : Bool */;
928 val* var109 /* : String */;
929 static val* varonce110;
930 val* var111 /* : String */;
931 char* var112 /* : NativeString */;
932 long var113 /* : Int */;
933 val* var114 /* : String */;
934 short int var115 /* : Bool */;
935 short int var_116 /* var : Bool */;
936 val* var117 /* : String */;
937 static val* varonce118;
938 val* var119 /* : String */;
939 char* var120 /* : NativeString */;
940 long var121 /* : Int */;
941 val* var122 /* : String */;
942 short int var123 /* : Bool */;
943 short int var_consider_null /* var consider_null: Bool */;
944 short int var124 /* : Bool */;
945 val* var125 /* : MType */;
946 short int var126 /* : Bool */;
947 int cltype;
948 int idtype;
949 short int var_127 /* var : Bool */;
950 short int var_maybenull /* var maybenull: Bool */;
951 static val* varonce128;
952 val* var129 /* : String */;
953 char* var130 /* : NativeString */;
954 long var131 /* : Int */;
955 val* var132 /* : String */;
956 static val* varonce133;
957 val* var134 /* : String */;
958 char* var135 /* : NativeString */;
959 long var136 /* : Int */;
960 val* var137 /* : String */;
961 val* var138 /* : Array[Object] */;
962 long var139 /* : Int */;
963 val* var140 /* : NativeArray[Object] */;
964 val* var141 /* : String */;
965 val* var142 /* : String */;
966 static val* varonce143;
967 val* var144 /* : String */;
968 char* var145 /* : NativeString */;
969 long var146 /* : Int */;
970 val* var147 /* : String */;
971 short int var148 /* : Bool */;
972 val* var149 /* : null */;
973 short int var150 /* : Bool */;
974 long var151 /* : Int */;
975 val* var152 /* : nullable Object */;
976 val* var_arg /* var arg: RuntimeVariable */;
977 val* var153 /* : MType */;
978 short int var154 /* : Bool */;
979 int cltype155;
980 int idtype156;
981 static val* varonce157;
982 val* var158 /* : String */;
983 char* var159 /* : NativeString */;
984 long var160 /* : Int */;
985 val* var161 /* : String */;
986 static val* varonce162;
987 val* var163 /* : String */;
988 char* var164 /* : NativeString */;
989 long var165 /* : Int */;
990 val* var166 /* : String */;
991 val* var167 /* : Array[Object] */;
992 long var168 /* : Int */;
993 val* var169 /* : NativeArray[Object] */;
994 val* var170 /* : String */;
995 val* var171 /* : MType */;
996 short int var172 /* : Bool */;
997 int cltype173;
998 int idtype174;
999 static val* varonce175;
1000 val* var176 /* : String */;
1001 char* var177 /* : NativeString */;
1002 long var178 /* : Int */;
1003 val* var179 /* : String */;
1004 val* var180 /* : Array[Object] */;
1005 long var181 /* : Int */;
1006 val* var182 /* : NativeArray[Object] */;
1007 val* var183 /* : String */;
1008 static val* varonce184;
1009 val* var185 /* : String */;
1010 char* var186 /* : NativeString */;
1011 long var187 /* : Int */;
1012 val* var188 /* : String */;
1013 val* var189 /* : String */;
1014 static val* varonce190;
1015 val* var191 /* : String */;
1016 char* var192 /* : NativeString */;
1017 long var193 /* : Int */;
1018 val* var194 /* : String */;
1019 val* var195 /* : Array[Object] */;
1020 long var196 /* : Int */;
1021 val* var197 /* : NativeArray[Object] */;
1022 val* var198 /* : String */;
1023 val* var199 /* : String */;
1024 static val* varonce200;
1025 val* var201 /* : String */;
1026 char* var202 /* : NativeString */;
1027 long var203 /* : Int */;
1028 val* var204 /* : String */;
1029 short int var205 /* : Bool */;
1030 val* var206 /* : null */;
1031 short int var207 /* : Bool */;
1032 long var208 /* : Int */;
1033 val* var209 /* : nullable Object */;
1034 val* var_arg210 /* var arg: RuntimeVariable */;
1035 val* var211 /* : MType */;
1036 short int var212 /* : Bool */;
1037 int cltype213;
1038 int idtype214;
1039 static val* varonce215;
1040 val* var216 /* : String */;
1041 char* var217 /* : NativeString */;
1042 long var218 /* : Int */;
1043 val* var219 /* : String */;
1044 static val* varonce220;
1045 val* var221 /* : String */;
1046 char* var222 /* : NativeString */;
1047 long var223 /* : Int */;
1048 val* var224 /* : String */;
1049 val* var225 /* : Array[Object] */;
1050 long var226 /* : Int */;
1051 val* var227 /* : NativeArray[Object] */;
1052 val* var228 /* : String */;
1053 val* var229 /* : MType */;
1054 short int var230 /* : Bool */;
1055 int cltype231;
1056 int idtype232;
1057 static val* varonce233;
1058 val* var234 /* : String */;
1059 char* var235 /* : NativeString */;
1060 long var236 /* : Int */;
1061 val* var237 /* : String */;
1062 val* var238 /* : Array[Object] */;
1063 long var239 /* : Int */;
1064 val* var240 /* : NativeArray[Object] */;
1065 val* var241 /* : String */;
1066 static val* varonce242;
1067 val* var243 /* : String */;
1068 char* var244 /* : NativeString */;
1069 long var245 /* : Int */;
1070 val* var246 /* : String */;
1071 val* var247 /* : String */;
1072 static val* varonce248;
1073 val* var249 /* : String */;
1074 char* var250 /* : NativeString */;
1075 long var251 /* : Int */;
1076 val* var252 /* : String */;
1077 val* var253 /* : Array[Object] */;
1078 long var254 /* : Int */;
1079 val* var255 /* : NativeArray[Object] */;
1080 val* var256 /* : String */;
1081 static val* varonce257;
1082 val* var258 /* : String */;
1083 char* var259 /* : NativeString */;
1084 long var260 /* : Int */;
1085 val* var261 /* : String */;
1086 static val* varonce262;
1087 val* var263 /* : String */;
1088 char* var264 /* : NativeString */;
1089 long var265 /* : Int */;
1090 val* var266 /* : String */;
1091 short int var267 /* : Bool */;
1092 val* var268 /* : AbstractCompiler */;
1093 val* var269 /* : ModelBuilder */;
1094 val* var270 /* : ToolContext */;
1095 val* var271 /* : OptionBool */;
1096 val* var272 /* : nullable Object */;
1097 short int var273 /* : Bool */;
1098 short int var274 /* : Bool */;
1099 short int var_275 /* var : Bool */;
1100 short int var276 /* : Bool */;
1101 val* var277 /* : String */;
1102 static val* varonce278;
1103 val* var279 /* : String */;
1104 char* var280 /* : NativeString */;
1105 long var281 /* : Int */;
1106 val* var282 /* : String */;
1107 short int var283 /* : Bool */;
1108 short int var_284 /* var : Bool */;
1109 val* var285 /* : String */;
1110 static val* varonce286;
1111 val* var287 /* : String */;
1112 char* var288 /* : NativeString */;
1113 long var289 /* : Int */;
1114 val* var290 /* : String */;
1115 short int var291 /* : Bool */;
1116 val* var292 /* : null */;
1117 short int var293 /* : Bool */;
1118 long var294 /* : Int */;
1119 val* var295 /* : nullable Object */;
1120 val* var_arg296 /* var arg: RuntimeVariable */;
1121 val* var297 /* : MType */;
1122 short int var298 /* : Bool */;
1123 int cltype299;
1124 int idtype300;
1125 val* var301 /* : String */;
1126 static val* varonce302;
1127 val* var303 /* : String */;
1128 char* var304 /* : NativeString */;
1129 long var305 /* : Int */;
1130 val* var306 /* : String */;
1131 short int var307 /* : Bool */;
1132 static val* varonce308;
1133 val* var309 /* : String */;
1134 char* var310 /* : NativeString */;
1135 long var311 /* : Int */;
1136 val* var312 /* : String */;
1137 val* var313 /* : Array[Object] */;
1138 long var314 /* : Int */;
1139 val* var315 /* : NativeArray[Object] */;
1140 val* var316 /* : String */;
1141 static val* varonce317;
1142 val* var318 /* : String */;
1143 char* var319 /* : NativeString */;
1144 long var320 /* : Int */;
1145 val* var321 /* : String */;
1146 val* var322 /* : Array[Object] */;
1147 long var323 /* : Int */;
1148 val* var324 /* : NativeArray[Object] */;
1149 val* var325 /* : String */;
1150 static val* varonce326;
1151 val* var327 /* : String */;
1152 char* var328 /* : NativeString */;
1153 long var329 /* : Int */;
1154 val* var330 /* : String */;
1155 val* var331 /* : null */;
1156 short int var332 /* : Bool */;
1157 static val* varonce333;
1158 val* var334 /* : String */;
1159 char* var335 /* : NativeString */;
1160 long var336 /* : Int */;
1161 val* var337 /* : String */;
1162 val* var_r /* var r: nullable Object */;
1163 val* var338 /* : String */;
1164 val* var339 /* : Array[Object] */;
1165 long var340 /* : Int */;
1166 val* var_341 /* var : Array[Object] */;
1167 static val* varonce342;
1168 val* var343 /* : String */;
1169 char* var344 /* : NativeString */;
1170 long var345 /* : Int */;
1171 val* var346 /* : String */;
1172 static val* varonce347;
1173 val* var348 /* : String */;
1174 char* var349 /* : NativeString */;
1175 long var350 /* : Int */;
1176 val* var351 /* : String */;
1177 static val* varonce352;
1178 val* var353 /* : String */;
1179 char* var354 /* : NativeString */;
1180 long var355 /* : Int */;
1181 val* var356 /* : String */;
1182 val* var357 /* : nullable Object */;
1183 static val* varonce358;
1184 val* var359 /* : String */;
1185 char* var360 /* : NativeString */;
1186 long var361 /* : Int */;
1187 val* var362 /* : String */;
1188 static val* varonce363;
1189 val* var364 /* : String */;
1190 char* var365 /* : NativeString */;
1191 long var366 /* : Int */;
1192 val* var367 /* : String */;
1193 static val* varonce368;
1194 val* var369 /* : String */;
1195 char* var370 /* : NativeString */;
1196 long var371 /* : Int */;
1197 val* var372 /* : String */;
1198 static val* varonce373;
1199 val* var374 /* : String */;
1200 char* var375 /* : NativeString */;
1201 long var376 /* : Int */;
1202 val* var377 /* : String */;
1203 val* var378 /* : nullable Object */;
1204 val* var379 /* : String */;
1205 static val* varonce380;
1206 val* var381 /* : String */;
1207 char* var382 /* : NativeString */;
1208 long var383 /* : Int */;
1209 val* var384 /* : String */;
1210 val* var385 /* : String */;
1211 val* var_call /* var call: String */;
1212 val* var386 /* : null */;
1213 short int var387 /* : Bool */;
1214 static val* varonce388;
1215 val* var389 /* : String */;
1216 char* var390 /* : NativeString */;
1217 long var391 /* : Int */;
1218 val* var392 /* : String */;
1219 static val* varonce393;
1220 val* var394 /* : String */;
1221 char* var395 /* : NativeString */;
1222 long var396 /* : Int */;
1223 val* var397 /* : String */;
1224 val* var398 /* : Array[Object] */;
1225 long var399 /* : Int */;
1226 val* var400 /* : NativeArray[Object] */;
1227 val* var401 /* : String */;
1228 static val* varonce402;
1229 val* var403 /* : String */;
1230 char* var404 /* : NativeString */;
1231 long var405 /* : Int */;
1232 val* var406 /* : String */;
1233 val* var407 /* : Array[Object] */;
1234 long var408 /* : Int */;
1235 val* var409 /* : NativeArray[Object] */;
1236 val* var410 /* : String */;
1237 static val* varonce411;
1238 val* var412 /* : String */;
1239 char* var413 /* : NativeString */;
1240 long var414 /* : Int */;
1241 val* var415 /* : String */;
1242 var_mmethod = p0;
1243 var_arguments = p1;
1244 var_const_color = p2;
1245 var1 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1246 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var1) /* mcasttype on <var1:nullable Object(RuntimeVariable)>*/;
1247 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var2) /* ctype on <var2:MType>*/;
1248 if (varonce) {
1249 var4 = varonce;
1250 } else {
1251 var5 = "val*";
1252 var6 = 4;
1253 var7 = string__NativeString__to_s_with_length(var5, var6);
1254 var4 = var7;
1255 varonce = var4;
1256 }
1257 var8 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___33d_61d]))(var3, var4) /* != on <var3:String>*/;
1258 if (var8){
1259 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1260 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var9) /* mainmodule on <var9:AbstractCompiler(SeparateCompiler)>*/;
1261 var_m = var10;
1262 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1263 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1264 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_compiler__AbstractCompiler__realmainmodule]))(var12) /* realmainmodule on <var12:AbstractCompiler(SeparateCompiler)>*/;
1265 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var11, var13) /* mainmodule= on <var11:AbstractCompiler(SeparateCompiler)>*/;
1266 var14 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1267 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var14) /* mcasttype on <var14:nullable Object(RuntimeVariable)>*/;
1268 var16 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__monomorphic_send]))(self, var_mmethod, var15, var_arguments) /* monomorphic_send on <self:SeparateCompilerVisitor>*/;
1269 var_res = var16;
1270 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1271 ((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(var17, var_m) /* mainmodule= on <var17:AbstractCompiler(SeparateCompiler)>*/;
1272 var = var_res;
1273 goto RET_LABEL;
1274 } else {
1275 }
1276 var18 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
1277 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MMethodDef__msignature]))(var18) /* msignature on <var18:MPropDef(MMethodDef)>*/;
1278 var20 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
1279 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MPropDef__mclassdef]))(var20) /* mclassdef on <var20:MPropDef(MMethodDef)>*/;
1280 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MClassDef__bound_mtype]))(var21) /* bound_mtype on <var21:MClassDef>*/;
1281 var23 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
1282 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_model__MPropDef__mclassdef]))(var23) /* mclassdef on <var23:MPropDef(MMethodDef)>*/;
1283 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MClassDef__bound_mtype]))(var24) /* bound_mtype on <var24:MClassDef>*/;
1284 var26 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__intro]))(var_mmethod) /* intro on <var_mmethod:MMethod>*/;
1285 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_model__MPropDef__mclassdef]))(var26) /* mclassdef on <var26:MPropDef(MMethodDef)>*/;
1286 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_model__MClassDef__mmodule]))(var27) /* mmodule on <var27:MClassDef>*/;
1287 var29 = 1;
1288 if (var19 == NULL) {
1289 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1290 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 993);
1291 exit(1);
1292 } else {
1293 var30 = ((val* (*)(val*, val*, val*, val*, short int))(var19->class->vft[COLOR_model__MType__resolve_for]))(var19, var22, var25, var28, var29) /* resolve_for on <var19:nullable MSignature>*/;
1294 }
1295 var_msignature = var30;
1296 var31 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1297 var_ret = var31;
1298 var32 = ((short int (*)(val*))(var_mmethod->class->vft[COLOR_model__MMethod__is_new]))(var_mmethod) /* is_new on <var_mmethod:MMethod>*/;
1299 if (var32){
1300 var33 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1301 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var33) /* mtype on <var33:nullable Object(RuntimeVariable)>*/;
1302 var_ret = var34;
1303 var35 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
1304 var_res36 = var35;
1305 } else {
1306 var37 = NULL;
1307 if (var_ret == NULL) {
1308 var38 = 1; /* is null */
1309 } else {
1310 var38 = 0; /* arg is null but recv is not */
1311 }
1312 if (var38){
1313 var39 = NULL;
1314 var_res36 = var39;
1315 } else {
1316 var40 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
1317 var_res36 = var40;
1318 }
1319 }
1320 var41 = NEW_string__Buffer(&type_string__Buffer);
1321 ((void (*)(val*))(var41->class->vft[COLOR_string__Buffer__init]))(var41) /* init on <var41:Buffer>*/;
1322 CHECK_NEW_string__Buffer(var41);
1323 var_s = var41;
1324 var42 = NEW_string__Buffer(&type_string__Buffer);
1325 ((void (*)(val*))(var42->class->vft[COLOR_string__Buffer__init]))(var42) /* init on <var42:Buffer>*/;
1326 CHECK_NEW_string__Buffer(var42);
1327 var_ss = var42;
1328 var43 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1329 var_recv = var43;
1330 if (varonce44) {
1331 var45 = varonce44;
1332 } else {
1333 var46 = "val*";
1334 var47 = 4;
1335 var48 = string__NativeString__to_s_with_length(var46, var47);
1336 var45 = var48;
1337 varonce44 = var45;
1338 }
1339 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var45) /* append on <var_s:Buffer>*/;
1340 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
1341 { /* var49 = array_instance Array[Object] */
1342 var50 = 1;
1343 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
1344 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var_recv;
1345 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
1346 CHECK_NEW_array__Array(var49);
1347 }
1348 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
1349 ((void (*)(val*, val*))(var_ss->class->vft[COLOR_abstract_collection__Sequence__append]))(var_ss, var52) /* append on <var_ss:Buffer>*/;
1350 var53 = NEW_range__Range(&type_range__Rangekernel__Int);
1351 var54 = 0;
1352 var55 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
1353 var56 = BOX_kernel__Int(var54); /* autobox from Int to Discrete */
1354 var57 = BOX_kernel__Int(var55); /* autobox from Int to Discrete */
1355 ((void (*)(val*, val*, val*))(var53->class->vft[COLOR_range__Range__without_last]))(var53, var56, var57) /* without_last on <var53:Range[Int]>*/;
1356 CHECK_NEW_range__Range(var53);
1357 var58 = ((val* (*)(val*))(var53->class->vft[COLOR_abstract_collection__Collection__iterator]))(var53) /* iterator on <var53:Range[Int]>*/;
1358 for(;;) {
1359 var59 = ((short int (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var58) /* is_ok on <var58:Iterator[nullable Object]>*/;
1360 if(!var59) break;
1361 var60 = ((val* (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__item]))(var58) /* item on <var58:Iterator[nullable Object]>*/;
1362 var61 = ((struct instance_kernel__Int*)var60)->value; /* autounbox from nullable Object to Int */;
1363 var_i = var61;
1364 var62 = 1;
1365 { /* Inline kernel#Int#+ (var_i,var62) */
1366 var65 = var_i + var62;
1367 var63 = var65;
1368 goto RET_LABEL64;
1369 RET_LABEL64:(void)0;
1370 }
1371 var66 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var63) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1372 var_a = var66;
1373 var67 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
1374 var68 = ((val* (*)(val*, long))(var67->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var67, var_i) /* [] on <var67:Array[MParameter]>*/;
1375 var69 = ((val* (*)(val*))(var68->class->vft[COLOR_model__MParameter__mtype]))(var68) /* mtype on <var68:nullable Object(MParameter)>*/;
1376 var_t = var69;
1377 var70 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
1378 { /* Inline kernel#Int#== (var_i,var70) */
1379 var73 = var_i == var70;
1380 var71 = var73;
1381 goto RET_LABEL72;
1382 RET_LABEL72:(void)0;
1383 }
1384 if (var71){
1385 var74 = 1;
1386 { /* Inline kernel#Int#+ (var_i,var74) */
1387 var77 = var_i + var74;
1388 var75 = var77;
1389 goto RET_LABEL76;
1390 RET_LABEL76:(void)0;
1391 }
1392 var78 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var75) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1393 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var78) /* mcasttype on <var78:nullable Object(RuntimeVariable)>*/;
1394 var_t = var79;
1395 } else {
1396 }
1397 if (varonce80) {
1398 var81 = varonce80;
1399 } else {
1400 var82 = ", ";
1401 var83 = 2;
1402 var84 = string__NativeString__to_s_with_length(var82, var83);
1403 var81 = var84;
1404 varonce80 = var81;
1405 }
1406 var85 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MType>*/;
1407 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
1408 { /* var86 = array_instance Array[Object] */
1409 var87 = 2;
1410 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
1411 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var81;
1412 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var85;
1413 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
1414 CHECK_NEW_array__Array(var86);
1415 }
1416 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
1417 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__Sequence__append]))(var_s, var89) /* append on <var_s:Buffer>*/;
1418 var90 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_a, var_t) /* autobox on <self:SeparateCompilerVisitor>*/;
1419 var_a = var90;
1420 if (varonce91) {
1421 var92 = varonce91;
1422 } else {
1423 var93 = ", ";
1424 var94 = 2;
1425 var95 = string__NativeString__to_s_with_length(var93, var94);
1426 var92 = var95;
1427 varonce91 = var92;
1428 }
1429 var96 = NEW_array__Array(&type_array__Arraykernel__Object);
1430 { /* var96 = array_instance Array[Object] */
1431 var97 = 2;
1432 var98 = NEW_array__NativeArray(var97, &type_array__NativeArraykernel__Object);
1433 ((struct instance_array__NativeArray*)var98)->values[0] = (val*) var92;
1434 ((struct instance_array__NativeArray*)var98)->values[1] = (val*) var_a;
1435 ((void (*)(val*, val*, long))(var96->class->vft[COLOR_array__Array__with_native]))(var96, var98, var97) /* with_native on <var96:Array[Object]>*/;
1436 CHECK_NEW_array__Array(var96);
1437 }
1438 var99 = ((val* (*)(val*))(var96->class->vft[COLOR_string__Object__to_s]))(var96) /* to_s on <var96:Array[Object]>*/;
1439 ((void (*)(val*, val*))(var_ss->class->vft[COLOR_abstract_collection__Sequence__append]))(var_ss, var99) /* append on <var_ss:Buffer>*/;
1440 CONTINUE_label: (void)0;
1441 ((void (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__next]))(var58) /* next on <var58:Iterator[nullable Object]>*/;
1442 }
1443 BREAK_label: (void)0;
1444 var102 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1445 var103 = ((val* (*)(val*))(var102->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var102) /* modelbuilder on <var102:AbstractCompiler(SeparateCompiler)>*/;
1446 var104 = ((val* (*)(val*))(var103->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var103) /* toolcontext on <var103:ModelBuilder>*/;
1447 var105 = ((val* (*)(val*))(var104->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_other]))(var104) /* opt_no_check_other on <var104:ToolContext>*/;
1448 var106 = ((val* (*)(val*))(var105->class->vft[COLOR_opts__Option__value]))(var105) /* value on <var105:OptionBool>*/;
1449 var107 = ((struct instance_kernel__Bool*)var106)->value; /* autounbox from nullable Object to Bool */;
1450 var108 = !var107;
1451 var_ = var108;
1452 if (var108){
1453 var101 = var_;
1454 } else {
1455 var109 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1456 if (varonce110) {
1457 var111 = varonce110;
1458 } else {
1459 var112 = "==";
1460 var113 = 2;
1461 var114 = string__NativeString__to_s_with_length(var112, var113);
1462 var111 = var114;
1463 varonce110 = var111;
1464 }
1465 var115 = ((short int (*)(val*, val*))(var109->class->vft[COLOR_kernel__Object___61d_61d]))(var109, var111) /* == on <var109:String>*/;
1466 var101 = var115;
1467 }
1468 var_116 = var101;
1469 if (var101){
1470 var100 = var_116;
1471 } else {
1472 var117 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1473 if (varonce118) {
1474 var119 = varonce118;
1475 } else {
1476 var120 = "!=";
1477 var121 = 2;
1478 var122 = string__NativeString__to_s_with_length(var120, var121);
1479 var119 = var122;
1480 varonce118 = var119;
1481 }
1482 var123 = ((short int (*)(val*, val*))(var117->class->vft[COLOR_kernel__Object___61d_61d]))(var117, var119) /* == on <var117:String>*/;
1483 var100 = var123;
1484 }
1485 var_consider_null = var100;
1486 var125 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_recv) /* mcasttype on <var_recv:RuntimeVariable>*/;
1487 /* <var125:MType> isa MNullableType */
1488 cltype = type_model__MNullableType.color;
1489 idtype = type_model__MNullableType.id;
1490 if(cltype >= var125->type->table_size) {
1491 var126 = 0;
1492 } else {
1493 var126 = var125->type->type_table[cltype] == idtype;
1494 }
1495 var_127 = var126;
1496 if (var126){
1497 var124 = var_consider_null;
1498 } else {
1499 var124 = var_127;
1500 }
1501 var_maybenull = var124;
1502 if (var_maybenull){
1503 if (varonce128) {
1504 var129 = varonce128;
1505 } else {
1506 var130 = "if (";
1507 var131 = 4;
1508 var132 = string__NativeString__to_s_with_length(var130, var131);
1509 var129 = var132;
1510 varonce128 = var129;
1511 }
1512 if (varonce133) {
1513 var134 = varonce133;
1514 } else {
1515 var135 = " == NULL) {";
1516 var136 = 11;
1517 var137 = string__NativeString__to_s_with_length(var135, var136);
1518 var134 = var137;
1519 varonce133 = var134;
1520 }
1521 var138 = NEW_array__Array(&type_array__Arraykernel__Object);
1522 { /* var138 = array_instance Array[Object] */
1523 var139 = 3;
1524 var140 = NEW_array__NativeArray(var139, &type_array__NativeArraykernel__Object);
1525 ((struct instance_array__NativeArray*)var140)->values[0] = (val*) var129;
1526 ((struct instance_array__NativeArray*)var140)->values[1] = (val*) var_recv;
1527 ((struct instance_array__NativeArray*)var140)->values[2] = (val*) var134;
1528 ((void (*)(val*, val*, long))(var138->class->vft[COLOR_array__Array__with_native]))(var138, var140, var139) /* with_native on <var138:Array[Object]>*/;
1529 CHECK_NEW_array__Array(var138);
1530 }
1531 var141 = ((val* (*)(val*))(var138->class->vft[COLOR_string__Object__to_s]))(var138) /* to_s on <var138:Array[Object]>*/;
1532 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var141) /* add on <self:SeparateCompilerVisitor>*/;
1533 var142 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1534 if (varonce143) {
1535 var144 = varonce143;
1536 } else {
1537 var145 = "==";
1538 var146 = 2;
1539 var147 = string__NativeString__to_s_with_length(var145, var146);
1540 var144 = var147;
1541 varonce143 = var144;
1542 }
1543 var148 = ((short int (*)(val*, val*))(var142->class->vft[COLOR_kernel__Object___61d_61d]))(var142, var144) /* == on <var142:String>*/;
1544 if (var148){
1545 var149 = NULL;
1546 if (var_res36 == NULL) {
1547 var150 = 0; /* is null */
1548 } else {
1549 var150 = 1; /* arg is null and recv is not */
1550 }
1551 if (!var150) {
1552 fprintf(stderr, "Runtime error: %s", "Assert failed");
1553 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1026);
1554 exit(1);
1555 }
1556 var151 = 1;
1557 var152 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var151) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1558 var_arg = var152;
1559 var153 = ((val* (*)(val*))(var_arg->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg) /* mcasttype on <var_arg:RuntimeVariable>*/;
1560 /* <var153:MType> isa MNullableType */
1561 cltype155 = type_model__MNullableType.color;
1562 idtype156 = type_model__MNullableType.id;
1563 if(cltype155 >= var153->type->table_size) {
1564 var154 = 0;
1565 } else {
1566 var154 = var153->type->type_table[cltype155] == idtype156;
1567 }
1568 if (var154){
1569 if (varonce157) {
1570 var158 = varonce157;
1571 } else {
1572 var159 = " = (";
1573 var160 = 4;
1574 var161 = string__NativeString__to_s_with_length(var159, var160);
1575 var158 = var161;
1576 varonce157 = var158;
1577 }
1578 if (varonce162) {
1579 var163 = varonce162;
1580 } else {
1581 var164 = " == NULL);";
1582 var165 = 10;
1583 var166 = string__NativeString__to_s_with_length(var164, var165);
1584 var163 = var166;
1585 varonce162 = var163;
1586 }
1587 var167 = NEW_array__Array(&type_array__Arraykernel__Object);
1588 { /* var167 = array_instance Array[Object] */
1589 var168 = 4;
1590 var169 = NEW_array__NativeArray(var168, &type_array__NativeArraykernel__Object);
1591 ((struct instance_array__NativeArray*)var169)->values[0] = (val*) var_res36;
1592 ((struct instance_array__NativeArray*)var169)->values[1] = (val*) var158;
1593 ((struct instance_array__NativeArray*)var169)->values[2] = (val*) var_arg;
1594 ((struct instance_array__NativeArray*)var169)->values[3] = (val*) var163;
1595 ((void (*)(val*, val*, long))(var167->class->vft[COLOR_array__Array__with_native]))(var167, var169, var168) /* with_native on <var167:Array[Object]>*/;
1596 CHECK_NEW_array__Array(var167);
1597 }
1598 var170 = ((val* (*)(val*))(var167->class->vft[COLOR_string__Object__to_s]))(var167) /* to_s on <var167:Array[Object]>*/;
1599 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var170) /* add on <self:SeparateCompilerVisitor>*/;
1600 } else {
1601 var171 = ((val* (*)(val*))(var_arg->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg) /* mcasttype on <var_arg:RuntimeVariable>*/;
1602 /* <var171:MType> isa MNullType */
1603 cltype173 = type_model__MNullType.color;
1604 idtype174 = type_model__MNullType.id;
1605 if(cltype173 >= var171->type->table_size) {
1606 var172 = 0;
1607 } else {
1608 var172 = var171->type->type_table[cltype173] == idtype174;
1609 }
1610 if (var172){
1611 if (varonce175) {
1612 var176 = varonce175;
1613 } else {
1614 var177 = " = 1; /* is null */";
1615 var178 = 19;
1616 var179 = string__NativeString__to_s_with_length(var177, var178);
1617 var176 = var179;
1618 varonce175 = var176;
1619 }
1620 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
1621 { /* var180 = array_instance Array[Object] */
1622 var181 = 2;
1623 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
1624 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var_res36;
1625 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var176;
1626 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
1627 CHECK_NEW_array__Array(var180);
1628 }
1629 var183 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
1630 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var183) /* add on <self:SeparateCompilerVisitor>*/;
1631 } else {
1632 if (varonce184) {
1633 var185 = varonce184;
1634 } else {
1635 var186 = " = 0; /* ";
1636 var187 = 9;
1637 var188 = string__NativeString__to_s_with_length(var186, var187);
1638 var185 = var188;
1639 varonce184 = var185;
1640 }
1641 var189 = ((val* (*)(val*))(var_arg->class->vft[COLOR_string__Object__inspect]))(var_arg) /* inspect on <var_arg:RuntimeVariable>*/;
1642 if (varonce190) {
1643 var191 = varonce190;
1644 } else {
1645 var192 = " cannot be null */";
1646 var193 = 18;
1647 var194 = string__NativeString__to_s_with_length(var192, var193);
1648 var191 = var194;
1649 varonce190 = var191;
1650 }
1651 var195 = NEW_array__Array(&type_array__Arraykernel__Object);
1652 { /* var195 = array_instance Array[Object] */
1653 var196 = 4;
1654 var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
1655 ((struct instance_array__NativeArray*)var197)->values[0] = (val*) var_res36;
1656 ((struct instance_array__NativeArray*)var197)->values[1] = (val*) var185;
1657 ((struct instance_array__NativeArray*)var197)->values[2] = (val*) var189;
1658 ((struct instance_array__NativeArray*)var197)->values[3] = (val*) var191;
1659 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
1660 CHECK_NEW_array__Array(var195);
1661 }
1662 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
1663 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var198) /* add on <self:SeparateCompilerVisitor>*/;
1664 }
1665 }
1666 } else {
1667 var199 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1668 if (varonce200) {
1669 var201 = varonce200;
1670 } else {
1671 var202 = "!=";
1672 var203 = 2;
1673 var204 = string__NativeString__to_s_with_length(var202, var203);
1674 var201 = var204;
1675 varonce200 = var201;
1676 }
1677 var205 = ((short int (*)(val*, val*))(var199->class->vft[COLOR_kernel__Object___61d_61d]))(var199, var201) /* == on <var199:String>*/;
1678 if (var205){
1679 var206 = NULL;
1680 if (var_res36 == NULL) {
1681 var207 = 0; /* is null */
1682 } else {
1683 var207 = 1; /* arg is null and recv is not */
1684 }
1685 if (!var207) {
1686 fprintf(stderr, "Runtime error: %s", "Assert failed");
1687 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1036);
1688 exit(1);
1689 }
1690 var208 = 1;
1691 var209 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var208) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1692 var_arg210 = var209;
1693 var211 = ((val* (*)(val*))(var_arg210->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg210) /* mcasttype on <var_arg210:RuntimeVariable>*/;
1694 /* <var211:MType> isa MNullableType */
1695 cltype213 = type_model__MNullableType.color;
1696 idtype214 = type_model__MNullableType.id;
1697 if(cltype213 >= var211->type->table_size) {
1698 var212 = 0;
1699 } else {
1700 var212 = var211->type->type_table[cltype213] == idtype214;
1701 }
1702 if (var212){
1703 if (varonce215) {
1704 var216 = varonce215;
1705 } else {
1706 var217 = " = (";
1707 var218 = 4;
1708 var219 = string__NativeString__to_s_with_length(var217, var218);
1709 var216 = var219;
1710 varonce215 = var216;
1711 }
1712 if (varonce220) {
1713 var221 = varonce220;
1714 } else {
1715 var222 = " != NULL);";
1716 var223 = 10;
1717 var224 = string__NativeString__to_s_with_length(var222, var223);
1718 var221 = var224;
1719 varonce220 = var221;
1720 }
1721 var225 = NEW_array__Array(&type_array__Arraykernel__Object);
1722 { /* var225 = array_instance Array[Object] */
1723 var226 = 4;
1724 var227 = NEW_array__NativeArray(var226, &type_array__NativeArraykernel__Object);
1725 ((struct instance_array__NativeArray*)var227)->values[0] = (val*) var_res36;
1726 ((struct instance_array__NativeArray*)var227)->values[1] = (val*) var216;
1727 ((struct instance_array__NativeArray*)var227)->values[2] = (val*) var_arg210;
1728 ((struct instance_array__NativeArray*)var227)->values[3] = (val*) var221;
1729 ((void (*)(val*, val*, long))(var225->class->vft[COLOR_array__Array__with_native]))(var225, var227, var226) /* with_native on <var225:Array[Object]>*/;
1730 CHECK_NEW_array__Array(var225);
1731 }
1732 var228 = ((val* (*)(val*))(var225->class->vft[COLOR_string__Object__to_s]))(var225) /* to_s on <var225:Array[Object]>*/;
1733 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var228) /* add on <self:SeparateCompilerVisitor>*/;
1734 } else {
1735 var229 = ((val* (*)(val*))(var_arg210->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg210) /* mcasttype on <var_arg210:RuntimeVariable>*/;
1736 /* <var229:MType> isa MNullType */
1737 cltype231 = type_model__MNullType.color;
1738 idtype232 = type_model__MNullType.id;
1739 if(cltype231 >= var229->type->table_size) {
1740 var230 = 0;
1741 } else {
1742 var230 = var229->type->type_table[cltype231] == idtype232;
1743 }
1744 if (var230){
1745 if (varonce233) {
1746 var234 = varonce233;
1747 } else {
1748 var235 = " = 0; /* is null */";
1749 var236 = 19;
1750 var237 = string__NativeString__to_s_with_length(var235, var236);
1751 var234 = var237;
1752 varonce233 = var234;
1753 }
1754 var238 = NEW_array__Array(&type_array__Arraykernel__Object);
1755 { /* var238 = array_instance Array[Object] */
1756 var239 = 2;
1757 var240 = NEW_array__NativeArray(var239, &type_array__NativeArraykernel__Object);
1758 ((struct instance_array__NativeArray*)var240)->values[0] = (val*) var_res36;
1759 ((struct instance_array__NativeArray*)var240)->values[1] = (val*) var234;
1760 ((void (*)(val*, val*, long))(var238->class->vft[COLOR_array__Array__with_native]))(var238, var240, var239) /* with_native on <var238:Array[Object]>*/;
1761 CHECK_NEW_array__Array(var238);
1762 }
1763 var241 = ((val* (*)(val*))(var238->class->vft[COLOR_string__Object__to_s]))(var238) /* to_s on <var238:Array[Object]>*/;
1764 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var241) /* add on <self:SeparateCompilerVisitor>*/;
1765 } else {
1766 if (varonce242) {
1767 var243 = varonce242;
1768 } else {
1769 var244 = " = 1; /* ";
1770 var245 = 9;
1771 var246 = string__NativeString__to_s_with_length(var244, var245);
1772 var243 = var246;
1773 varonce242 = var243;
1774 }
1775 var247 = ((val* (*)(val*))(var_arg210->class->vft[COLOR_string__Object__inspect]))(var_arg210) /* inspect on <var_arg210:RuntimeVariable>*/;
1776 if (varonce248) {
1777 var249 = varonce248;
1778 } else {
1779 var250 = " cannot be null */";
1780 var251 = 18;
1781 var252 = string__NativeString__to_s_with_length(var250, var251);
1782 var249 = var252;
1783 varonce248 = var249;
1784 }
1785 var253 = NEW_array__Array(&type_array__Arraykernel__Object);
1786 { /* var253 = array_instance Array[Object] */
1787 var254 = 4;
1788 var255 = NEW_array__NativeArray(var254, &type_array__NativeArraykernel__Object);
1789 ((struct instance_array__NativeArray*)var255)->values[0] = (val*) var_res36;
1790 ((struct instance_array__NativeArray*)var255)->values[1] = (val*) var243;
1791 ((struct instance_array__NativeArray*)var255)->values[2] = (val*) var247;
1792 ((struct instance_array__NativeArray*)var255)->values[3] = (val*) var249;
1793 ((void (*)(val*, val*, long))(var253->class->vft[COLOR_array__Array__with_native]))(var253, var255, var254) /* with_native on <var253:Array[Object]>*/;
1794 CHECK_NEW_array__Array(var253);
1795 }
1796 var256 = ((val* (*)(val*))(var253->class->vft[COLOR_string__Object__to_s]))(var253) /* to_s on <var253:Array[Object]>*/;
1797 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var256) /* add on <self:SeparateCompilerVisitor>*/;
1798 }
1799 }
1800 } else {
1801 if (varonce257) {
1802 var258 = varonce257;
1803 } else {
1804 var259 = "Reciever is null";
1805 var260 = 16;
1806 var261 = string__NativeString__to_s_with_length(var259, var260);
1807 var258 = var261;
1808 varonce257 = var258;
1809 }
1810 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var258) /* add_abort on <self:SeparateCompilerVisitor>*/;
1811 }
1812 }
1813 if (varonce262) {
1814 var263 = varonce262;
1815 } else {
1816 var264 = "} else {";
1817 var265 = 8;
1818 var266 = string__NativeString__to_s_with_length(var264, var265);
1819 var263 = var266;
1820 varonce262 = var263;
1821 }
1822 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var263) /* add on <self:SeparateCompilerVisitor>*/;
1823 } else {
1824 }
1825 var268 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
1826 var269 = ((val* (*)(val*))(var268->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var268) /* modelbuilder on <var268:AbstractCompiler(SeparateCompiler)>*/;
1827 var270 = ((val* (*)(val*))(var269->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var269) /* toolcontext on <var269:ModelBuilder>*/;
1828 var271 = ((val* (*)(val*))(var270->class->vft[COLOR_separate_compiler__ToolContext__opt_no_shortcut_equate]))(var270) /* opt_no_shortcut_equate on <var270:ToolContext>*/;
1829 var272 = ((val* (*)(val*))(var271->class->vft[COLOR_opts__Option__value]))(var271) /* value on <var271:OptionBool>*/;
1830 var273 = ((struct instance_kernel__Bool*)var272)->value; /* autounbox from nullable Object to Bool */;
1831 var274 = !var273;
1832 var_275 = var274;
1833 if (var274){
1834 var277 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1835 if (varonce278) {
1836 var279 = varonce278;
1837 } else {
1838 var280 = "==";
1839 var281 = 2;
1840 var282 = string__NativeString__to_s_with_length(var280, var281);
1841 var279 = var282;
1842 varonce278 = var279;
1843 }
1844 var283 = ((short int (*)(val*, val*))(var277->class->vft[COLOR_kernel__Object___61d_61d]))(var277, var279) /* == on <var277:String>*/;
1845 var_284 = var283;
1846 if (var283){
1847 var276 = var_284;
1848 } else {
1849 var285 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1850 if (varonce286) {
1851 var287 = varonce286;
1852 } else {
1853 var288 = "!=";
1854 var289 = 2;
1855 var290 = string__NativeString__to_s_with_length(var288, var289);
1856 var287 = var290;
1857 varonce286 = var287;
1858 }
1859 var291 = ((short int (*)(val*, val*))(var285->class->vft[COLOR_kernel__Object___61d_61d]))(var285, var287) /* == on <var285:String>*/;
1860 var276 = var291;
1861 }
1862 var267 = var276;
1863 } else {
1864 var267 = var_275;
1865 }
1866 if (var267){
1867 var292 = NULL;
1868 if (var_res36 == NULL) {
1869 var293 = 0; /* is null */
1870 } else {
1871 var293 = 1; /* arg is null and recv is not */
1872 }
1873 if (!var293) {
1874 fprintf(stderr, "Runtime error: %s", "Assert failed");
1875 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1051);
1876 exit(1);
1877 }
1878 var294 = 1;
1879 var295 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var294) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
1880 var_arg296 = var295;
1881 var297 = ((val* (*)(val*))(var_arg296->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_arg296) /* mcasttype on <var_arg296:RuntimeVariable>*/;
1882 /* <var297:MType> isa MNullType */
1883 cltype299 = type_model__MNullType.color;
1884 idtype300 = type_model__MNullType.id;
1885 if(cltype299 >= var297->type->table_size) {
1886 var298 = 0;
1887 } else {
1888 var298 = var297->type->type_table[cltype299] == idtype300;
1889 }
1890 if (var298){
1891 var301 = ((val* (*)(val*))(var_mmethod->class->vft[COLOR_model__MProperty__name]))(var_mmethod) /* name on <var_mmethod:MMethod>*/;
1892 if (varonce302) {
1893 var303 = varonce302;
1894 } else {
1895 var304 = "==";
1896 var305 = 2;
1897 var306 = string__NativeString__to_s_with_length(var304, var305);
1898 var303 = var306;
1899 varonce302 = var303;
1900 }
1901 var307 = ((short int (*)(val*, val*))(var301->class->vft[COLOR_kernel__Object___61d_61d]))(var301, var303) /* == on <var301:String>*/;
1902 if (var307){
1903 if (varonce308) {
1904 var309 = varonce308;
1905 } else {
1906 var310 = " = 0; /* arg is null but recv is not */";
1907 var311 = 39;
1908 var312 = string__NativeString__to_s_with_length(var310, var311);
1909 var309 = var312;
1910 varonce308 = var309;
1911 }
1912 var313 = NEW_array__Array(&type_array__Arraykernel__Object);
1913 { /* var313 = array_instance Array[Object] */
1914 var314 = 2;
1915 var315 = NEW_array__NativeArray(var314, &type_array__NativeArraykernel__Object);
1916 ((struct instance_array__NativeArray*)var315)->values[0] = (val*) var_res36;
1917 ((struct instance_array__NativeArray*)var315)->values[1] = (val*) var309;
1918 ((void (*)(val*, val*, long))(var313->class->vft[COLOR_array__Array__with_native]))(var313, var315, var314) /* with_native on <var313:Array[Object]>*/;
1919 CHECK_NEW_array__Array(var313);
1920 }
1921 var316 = ((val* (*)(val*))(var313->class->vft[COLOR_string__Object__to_s]))(var313) /* to_s on <var313:Array[Object]>*/;
1922 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var316) /* add on <self:SeparateCompilerVisitor>*/;
1923 } else {
1924 if (varonce317) {
1925 var318 = varonce317;
1926 } else {
1927 var319 = " = 1; /* arg is null and recv is not */";
1928 var320 = 39;
1929 var321 = string__NativeString__to_s_with_length(var319, var320);
1930 var318 = var321;
1931 varonce317 = var318;
1932 }
1933 var322 = NEW_array__Array(&type_array__Arraykernel__Object);
1934 { /* var322 = array_instance Array[Object] */
1935 var323 = 2;
1936 var324 = NEW_array__NativeArray(var323, &type_array__NativeArraykernel__Object);
1937 ((struct instance_array__NativeArray*)var324)->values[0] = (val*) var_res36;
1938 ((struct instance_array__NativeArray*)var324)->values[1] = (val*) var318;
1939 ((void (*)(val*, val*, long))(var322->class->vft[COLOR_array__Array__with_native]))(var322, var324, var323) /* with_native on <var322:Array[Object]>*/;
1940 CHECK_NEW_array__Array(var322);
1941 }
1942 var325 = ((val* (*)(val*))(var322->class->vft[COLOR_string__Object__to_s]))(var322) /* to_s on <var322:Array[Object]>*/;
1943 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var325) /* add on <self:SeparateCompilerVisitor>*/;
1944 }
1945 if (var_maybenull){
1946 if (varonce326) {
1947 var327 = varonce326;
1948 } else {
1949 var328 = "}";
1950 var329 = 1;
1951 var330 = string__NativeString__to_s_with_length(var328, var329);
1952 var327 = var330;
1953 varonce326 = var327;
1954 }
1955 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var327) /* add on <self:SeparateCompilerVisitor>*/;
1956 } else {
1957 }
1958 var = var_res36;
1959 goto RET_LABEL;
1960 } else {
1961 }
1962 } else {
1963 }
1964 var331 = NULL;
1965 if (var_ret == NULL) {
1966 var332 = 1; /* is null */
1967 } else {
1968 var332 = 0; /* arg is null but recv is not */
1969 }
1970 if (var332){
1971 if (varonce333) {
1972 var334 = varonce333;
1973 } else {
1974 var335 = "void";
1975 var336 = 4;
1976 var337 = string__NativeString__to_s_with_length(var335, var336);
1977 var334 = var337;
1978 varonce333 = var334;
1979 }
1980 var_r = var334;
1981 } else {
1982 var338 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
1983 var_r = var338;
1984 }
1985 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var_const_color) /* require_declaration on <self:SeparateCompilerVisitor>*/;
1986 var339 = NEW_array__Array(&type_array__Arraykernel__Object);
1987 var340 = 15;
1988 ((void (*)(val*, long))(var339->class->vft[COLOR_array__Array__with_capacity]))(var339, var340) /* with_capacity on <var339:Array[Object]>*/;
1989 CHECK_NEW_array__Array(var339);
1990 var_341 = var339;
1991 if (varonce342) {
1992 var343 = varonce342;
1993 } else {
1994 var344 = "((";
1995 var345 = 2;
1996 var346 = string__NativeString__to_s_with_length(var344, var345);
1997 var343 = var346;
1998 varonce342 = var343;
1999 }
2000 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var343) /* add on <var_341:Array[Object]>*/;
2001 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var_r) /* add on <var_341:Array[Object]>*/;
2002 if (varonce347) {
2003 var348 = varonce347;
2004 } else {
2005 var349 = " (*)(";
2006 var350 = 5;
2007 var351 = string__NativeString__to_s_with_length(var349, var350);
2008 var348 = var351;
2009 varonce347 = var348;
2010 }
2011 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var348) /* add on <var_341:Array[Object]>*/;
2012 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var_s) /* add on <var_341:Array[Object]>*/;
2013 if (varonce352) {
2014 var353 = varonce352;
2015 } else {
2016 var354 = "))(";
2017 var355 = 3;
2018 var356 = string__NativeString__to_s_with_length(var354, var355);
2019 var353 = var356;
2020 varonce352 = var353;
2021 }
2022 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var353) /* add on <var_341:Array[Object]>*/;
2023 var357 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
2024 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var357) /* add on <var_341:Array[Object]>*/;
2025 if (varonce358) {
2026 var359 = varonce358;
2027 } else {
2028 var360 = "->class->vft[";
2029 var361 = 13;
2030 var362 = string__NativeString__to_s_with_length(var360, var361);
2031 var359 = var362;
2032 varonce358 = var359;
2033 }
2034 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var359) /* add on <var_341:Array[Object]>*/;
2035 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var_const_color) /* add on <var_341:Array[Object]>*/;
2036 if (varonce363) {
2037 var364 = varonce363;
2038 } else {
2039 var365 = "]))(";
2040 var366 = 4;
2041 var367 = string__NativeString__to_s_with_length(var365, var366);
2042 var364 = var367;
2043 varonce363 = var364;
2044 }
2045 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var364) /* add on <var_341:Array[Object]>*/;
2046 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var_ss) /* add on <var_341:Array[Object]>*/;
2047 if (varonce368) {
2048 var369 = varonce368;
2049 } else {
2050 var370 = ") /* ";
2051 var371 = 5;
2052 var372 = string__NativeString__to_s_with_length(var370, var371);
2053 var369 = var372;
2054 varonce368 = var369;
2055 }
2056 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var369) /* add on <var_341:Array[Object]>*/;
2057 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var_mmethod) /* add on <var_341:Array[Object]>*/;
2058 if (varonce373) {
2059 var374 = varonce373;
2060 } else {
2061 var375 = " on ";
2062 var376 = 4;
2063 var377 = string__NativeString__to_s_with_length(var375, var376);
2064 var374 = var377;
2065 varonce373 = var374;
2066 }
2067 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var374) /* add on <var_341:Array[Object]>*/;
2068 var378 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
2069 var379 = ((val* (*)(val*))(var378->class->vft[COLOR_string__Object__inspect]))(var378) /* inspect on <var378:nullable Object(RuntimeVariable)>*/;
2070 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var379) /* add on <var_341:Array[Object]>*/;
2071 if (varonce380) {
2072 var381 = varonce380;
2073 } else {
2074 var382 = "*/";
2075 var383 = 2;
2076 var384 = string__NativeString__to_s_with_length(var382, var383);
2077 var381 = var384;
2078 varonce380 = var381;
2079 }
2080 ((void (*)(val*, val*))(var_341->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_341, var381) /* add on <var_341:Array[Object]>*/;
2081 var385 = ((val* (*)(val*))(var_341->class->vft[COLOR_string__Object__to_s]))(var_341) /* to_s on <var_341:Array[Object]>*/;
2082 var_call = var385;
2083 var386 = NULL;
2084 if (var_res36 == NULL) {
2085 var387 = 0; /* is null */
2086 } else {
2087 var387 = 1; /* arg is null and recv is not */
2088 }
2089 if (var387){
2090 if (varonce388) {
2091 var389 = varonce388;
2092 } else {
2093 var390 = " = ";
2094 var391 = 3;
2095 var392 = string__NativeString__to_s_with_length(var390, var391);
2096 var389 = var392;
2097 varonce388 = var389;
2098 }
2099 if (varonce393) {
2100 var394 = varonce393;
2101 } else {
2102 var395 = ";";
2103 var396 = 1;
2104 var397 = string__NativeString__to_s_with_length(var395, var396);
2105 var394 = var397;
2106 varonce393 = var394;
2107 }
2108 var398 = NEW_array__Array(&type_array__Arraykernel__Object);
2109 { /* var398 = array_instance Array[Object] */
2110 var399 = 4;
2111 var400 = NEW_array__NativeArray(var399, &type_array__NativeArraykernel__Object);
2112 ((struct instance_array__NativeArray*)var400)->values[0] = (val*) var_res36;
2113 ((struct instance_array__NativeArray*)var400)->values[1] = (val*) var389;
2114 ((struct instance_array__NativeArray*)var400)->values[2] = (val*) var_call;
2115 ((struct instance_array__NativeArray*)var400)->values[3] = (val*) var394;
2116 ((void (*)(val*, val*, long))(var398->class->vft[COLOR_array__Array__with_native]))(var398, var400, var399) /* with_native on <var398:Array[Object]>*/;
2117 CHECK_NEW_array__Array(var398);
2118 }
2119 var401 = ((val* (*)(val*))(var398->class->vft[COLOR_string__Object__to_s]))(var398) /* to_s on <var398:Array[Object]>*/;
2120 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var401) /* add on <self:SeparateCompilerVisitor>*/;
2121 } else {
2122 if (varonce402) {
2123 var403 = varonce402;
2124 } else {
2125 var404 = ";";
2126 var405 = 1;
2127 var406 = string__NativeString__to_s_with_length(var404, var405);
2128 var403 = var406;
2129 varonce402 = var403;
2130 }
2131 var407 = NEW_array__Array(&type_array__Arraykernel__Object);
2132 { /* var407 = array_instance Array[Object] */
2133 var408 = 2;
2134 var409 = NEW_array__NativeArray(var408, &type_array__NativeArraykernel__Object);
2135 ((struct instance_array__NativeArray*)var409)->values[0] = (val*) var_call;
2136 ((struct instance_array__NativeArray*)var409)->values[1] = (val*) var403;
2137 ((void (*)(val*, val*, long))(var407->class->vft[COLOR_array__Array__with_native]))(var407, var409, var408) /* with_native on <var407:Array[Object]>*/;
2138 CHECK_NEW_array__Array(var407);
2139 }
2140 var410 = ((val* (*)(val*))(var407->class->vft[COLOR_string__Object__to_s]))(var407) /* to_s on <var407:Array[Object]>*/;
2141 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var410) /* add on <self:SeparateCompilerVisitor>*/;
2142 }
2143 if (var_maybenull){
2144 if (varonce411) {
2145 var412 = varonce411;
2146 } else {
2147 var413 = "}";
2148 var414 = 1;
2149 var415 = string__NativeString__to_s_with_length(var413, var414);
2150 var412 = var415;
2151 varonce411 = var412;
2152 }
2153 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var412) /* add on <self:SeparateCompilerVisitor>*/;
2154 } else {
2155 }
2156 var = var_res36;
2157 goto RET_LABEL;
2158 RET_LABEL:;
2159 return var;
2160 }
2161 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: Object, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
2162 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
2163 val* var /* : nullable RuntimeVariable */;
2164 val* var1 /* : nullable RuntimeVariable */;
2165 var1 = separate_compiler__SeparateCompilerVisitor__table_send(self, p0, p1, p2);
2166 var = var1;
2167 RET_LABEL:;
2168 return var;
2169 }
2170 /* method separate_compiler#SeparateCompilerVisitor#call for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
2171 val* separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
2172 val* var /* : nullable RuntimeVariable */;
2173 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
2174 val* var_recvtype /* var recvtype: MClassType */;
2175 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2176 val* var1 /* : nullable MSignature */;
2177 val* var2 /* : nullable MType */;
2178 val* var_ret /* var ret: nullable MType */;
2179 val* var3 /* : MProperty */;
2180 short int var4 /* : Bool */;
2181 val* var5 /* : nullable Object */;
2182 val* var6 /* : MType */;
2183 val* var7 /* : RuntimeVariable */;
2184 val* var_res /* var res: nullable RuntimeVariable */;
2185 val* var8 /* : null */;
2186 short int var9 /* : Bool */;
2187 val* var10 /* : null */;
2188 val* var11 /* : MClassDef */;
2189 val* var12 /* : MClassType */;
2190 val* var13 /* : MClassDef */;
2191 val* var14 /* : MClassType */;
2192 val* var15 /* : MClassDef */;
2193 val* var16 /* : MModule */;
2194 short int var17 /* : Bool */;
2195 val* var18 /* : MType */;
2196 val* var19 /* : RuntimeVariable */;
2197 short int var20 /* : Bool */;
2198 short int var21 /* : Bool */;
2199 val* var22 /* : AbstractCompiler */;
2200 val* var23 /* : ModelBuilder */;
2201 val* var24 /* : HashMap[MPropDef, APropdef] */;
2202 short int var25 /* : Bool */;
2203 short int var_ /* var : Bool */;
2204 val* var26 /* : AbstractCompiler */;
2205 val* var27 /* : ModelBuilder */;
2206 val* var28 /* : HashMap[MPropDef, APropdef] */;
2207 val* var29 /* : nullable Object */;
2208 short int var30 /* : Bool */;
2209 int cltype;
2210 int idtype;
2211 short int var_31 /* var : Bool */;
2212 val* var32 /* : AbstractCompiler */;
2213 val* var33 /* : ModelBuilder */;
2214 val* var34 /* : ToolContext */;
2215 val* var35 /* : OptionBool */;
2216 val* var36 /* : nullable Object */;
2217 short int var37 /* : Bool */;
2218 short int var38 /* : Bool */;
2219 val* var39 /* : Frame */;
2220 val* var_frame /* var frame: Frame */;
2221 static val* varonce;
2222 val* var40 /* : String */;
2223 char* var41 /* : NativeString */;
2224 long var42 /* : Int */;
2225 val* var43 /* : String */;
2226 val* var44 /* : String */;
2227 val* var45 /* : nullable Frame */;
2228 val* var_old_frame /* var old_frame: nullable Frame */;
2229 static val* varonce46;
2230 val* var47 /* : String */;
2231 char* var48 /* : NativeString */;
2232 long var49 /* : Int */;
2233 val* var50 /* : String */;
2234 static val* varonce51;
2235 val* var52 /* : String */;
2236 char* var53 /* : NativeString */;
2237 long var54 /* : Int */;
2238 val* var55 /* : String */;
2239 static val* varonce56;
2240 val* var57 /* : String */;
2241 char* var58 /* : NativeString */;
2242 long var59 /* : Int */;
2243 val* var60 /* : String */;
2244 val* var61 /* : String */;
2245 static val* varonce62;
2246 val* var63 /* : String */;
2247 char* var64 /* : NativeString */;
2248 long var65 /* : Int */;
2249 val* var66 /* : String */;
2250 val* var67 /* : Array[Object] */;
2251 long var68 /* : Int */;
2252 val* var69 /* : NativeArray[Object] */;
2253 val* var70 /* : String */;
2254 val* var71 /* : nullable RuntimeVariable */;
2255 val* var72 /* : nullable String */;
2256 static val* varonce73;
2257 val* var74 /* : String */;
2258 char* var75 /* : NativeString */;
2259 long var76 /* : Int */;
2260 val* var77 /* : String */;
2261 val* var78 /* : Array[Object] */;
2262 long var79 /* : Int */;
2263 val* var80 /* : NativeArray[Object] */;
2264 val* var81 /* : String */;
2265 static val* varonce82;
2266 val* var83 /* : String */;
2267 char* var84 /* : NativeString */;
2268 long var85 /* : Int */;
2269 val* var86 /* : String */;
2270 val* var87 /* : String */;
2271 val* var88 /* : null */;
2272 short int var89 /* : Bool */;
2273 val* var90 /* : String */;
2274 static val* varonce91;
2275 val* var92 /* : String */;
2276 char* var93 /* : NativeString */;
2277 long var94 /* : Int */;
2278 val* var95 /* : String */;
2279 static val* varonce96;
2280 val* var97 /* : String */;
2281 char* var98 /* : NativeString */;
2282 long var99 /* : Int */;
2283 val* var100 /* : String */;
2284 val* var101 /* : String */;
2285 static val* varonce102;
2286 val* var103 /* : String */;
2287 char* var104 /* : NativeString */;
2288 long var105 /* : Int */;
2289 val* var106 /* : String */;
2290 val* var107 /* : Array[Object] */;
2291 long var108 /* : Int */;
2292 val* var109 /* : NativeArray[Object] */;
2293 val* var110 /* : String */;
2294 val* var111 /* : null */;
2295 static val* varonce112;
2296 val* var113 /* : String */;
2297 char* var114 /* : NativeString */;
2298 long var115 /* : Int */;
2299 val* var116 /* : String */;
2300 val* var117 /* : String */;
2301 static val* varonce118;
2302 val* var119 /* : String */;
2303 char* var120 /* : NativeString */;
2304 long var121 /* : Int */;
2305 val* var122 /* : String */;
2306 static val* varonce123;
2307 val* var124 /* : String */;
2308 char* var125 /* : NativeString */;
2309 long var126 /* : Int */;
2310 val* var127 /* : String */;
2311 val* var128 /* : String */;
2312 static val* varonce129;
2313 val* var130 /* : String */;
2314 char* var131 /* : NativeString */;
2315 long var132 /* : Int */;
2316 val* var133 /* : String */;
2317 val* var134 /* : Array[Object] */;
2318 long var135 /* : Int */;
2319 val* var136 /* : NativeArray[Object] */;
2320 val* var137 /* : String */;
2321 var_mmethoddef = p0;
2322 var_recvtype = p1;
2323 var_arguments = p2;
2324 var1 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
2325 if (var1 == NULL) {
2326 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2327 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1088);
2328 exit(1);
2329 } else {
2330 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MSignature__return_mtype]))(var1) /* return_mtype on <var1:nullable MSignature>*/;
2331 }
2332 var_ret = var2;
2333 var3 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
2334 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_model__MMethod__is_new]))(var3) /* is_new on <var3:MProperty(MMethod)>*/;
2335 if (var4){
2336 var5 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
2337 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var5) /* mtype on <var5:nullable Object(RuntimeVariable)>*/;
2338 var_ret = var6;
2339 var7 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
2340 var_res = var7;
2341 } else {
2342 var8 = NULL;
2343 if (var_ret == NULL) {
2344 var9 = 1; /* is null */
2345 } else {
2346 var9 = 0; /* arg is null but recv is not */
2347 }
2348 if (var9){
2349 var10 = NULL;
2350 var_res = var10;
2351 } else {
2352 var11 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2353 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MClassDef__bound_mtype]))(var11) /* bound_mtype on <var11:MClassDef>*/;
2354 var13 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2355 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClassDef__bound_mtype]))(var13) /* bound_mtype on <var13:MClassDef>*/;
2356 var15 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2357 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
2358 var17 = 1;
2359 var18 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var12, var14, var16, var17) /* resolve_for on <var_ret:nullable MType(MType)>*/;
2360 var_ret = var18;
2361 var19 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
2362 var_res = var19;
2363 }
2364 }
2365 var22 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2366 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var22) /* modelbuilder on <var22:AbstractCompiler(SeparateCompiler)>*/;
2367 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var23) /* mpropdef2npropdef on <var23:ModelBuilder>*/;
2368 var25 = ((short int (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var24, var_mmethoddef) /* has_key on <var24:HashMap[MPropDef, APropdef]>*/;
2369 var_ = var25;
2370 if (var25){
2371 var26 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2372 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var26) /* modelbuilder on <var26:AbstractCompiler(SeparateCompiler)>*/;
2373 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var27) /* mpropdef2npropdef on <var27:ModelBuilder>*/;
2374 var29 = ((val* (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var28, var_mmethoddef) /* [] on <var28:HashMap[MPropDef, APropdef]>*/;
2375 /* <var29:nullable Object(APropdef)> isa AInternMethPropdef */
2376 cltype = type_parser_nodes__AInternMethPropdef.color;
2377 idtype = type_parser_nodes__AInternMethPropdef.id;
2378 if(cltype >= var29->type->table_size) {
2379 var30 = 0;
2380 } else {
2381 var30 = var29->type->type_table[cltype] == idtype;
2382 }
2383 var21 = var30;
2384 } else {
2385 var21 = var_;
2386 }
2387 var_31 = var21;
2388 if (var21){
2389 var32 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2390 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var32) /* modelbuilder on <var32:AbstractCompiler(SeparateCompiler)>*/;
2391 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var33) /* toolcontext on <var33:ModelBuilder>*/;
2392 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_separate_compiler__ToolContext__opt_no_inline_intern]))(var34) /* opt_no_inline_intern on <var34:ToolContext>*/;
2393 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_opts__Option__value]))(var35) /* value on <var35:OptionBool>*/;
2394 var37 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
2395 var38 = !var37;
2396 var20 = var38;
2397 } else {
2398 var20 = var_31;
2399 }
2400 if (var20){
2401 var39 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
2402 ((void (*)(val*, val*, val*, val*, val*))(var39->class->vft[COLOR_abstract_compiler__Frame__init]))(var39, self, var_mmethoddef, var_recvtype, var_arguments) /* init on <var39:Frame>*/;
2403 CHECK_NEW_abstract_compiler__Frame(var39);
2404 var_frame = var39;
2405 if (varonce) {
2406 var40 = varonce;
2407 } else {
2408 var41 = "RET_LABEL";
2409 var42 = 9;
2410 var43 = string__NativeString__to_s_with_length(var41, var42);
2411 var40 = var43;
2412 varonce = var40;
2413 }
2414 var44 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var40) /* get_name on <self:SeparateCompilerVisitor>*/;
2415 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var44) /* returnlabel= on <var_frame:Frame>*/;
2416 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var_res) /* returnvar= on <var_frame:Frame>*/;
2417 var45 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
2418 var_old_frame = var45;
2419 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2420 if (varonce46) {
2421 var47 = varonce46;
2422 } else {
2423 var48 = "{ /* Inline ";
2424 var49 = 12;
2425 var50 = string__NativeString__to_s_with_length(var48, var49);
2426 var47 = var50;
2427 varonce46 = var47;
2428 }
2429 if (varonce51) {
2430 var52 = varonce51;
2431 } else {
2432 var53 = " (";
2433 var54 = 2;
2434 var55 = string__NativeString__to_s_with_length(var53, var54);
2435 var52 = var55;
2436 varonce51 = var52;
2437 }
2438 if (varonce56) {
2439 var57 = varonce56;
2440 } else {
2441 var58 = ",";
2442 var59 = 1;
2443 var60 = string__NativeString__to_s_with_length(var58, var59);
2444 var57 = var60;
2445 varonce56 = var57;
2446 }
2447 var61 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var57) /* join on <var_arguments:Array[RuntimeVariable]>*/;
2448 if (varonce62) {
2449 var63 = varonce62;
2450 } else {
2451 var64 = ") */";
2452 var65 = 4;
2453 var66 = string__NativeString__to_s_with_length(var64, var65);
2454 var63 = var66;
2455 varonce62 = var63;
2456 }
2457 var67 = NEW_array__Array(&type_array__Arraykernel__Object);
2458 { /* var67 = array_instance Array[Object] */
2459 var68 = 5;
2460 var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
2461 ((struct instance_array__NativeArray*)var69)->values[0] = (val*) var47;
2462 ((struct instance_array__NativeArray*)var69)->values[1] = (val*) var_mmethoddef;
2463 ((struct instance_array__NativeArray*)var69)->values[2] = (val*) var52;
2464 ((struct instance_array__NativeArray*)var69)->values[3] = (val*) var61;
2465 ((struct instance_array__NativeArray*)var69)->values[4] = (val*) var63;
2466 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
2467 CHECK_NEW_array__Array(var67);
2468 }
2469 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
2470 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var70) /* add on <self:SeparateCompilerVisitor>*/;
2471 var71 = ((val* (*)(val*, val*, val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MMethodDef__compile_inside_to_c]))(var_mmethoddef, self, var_arguments) /* compile_inside_to_c on <var_mmethoddef:MMethodDef>*/;
2472 var71;
2473 var72 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
2474 if (var72 == NULL) {
2475 fprintf(stderr, "Runtime error: %s", "Cast failed");
2476 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1109);
2477 exit(1);
2478 }
2479 if (varonce73) {
2480 var74 = varonce73;
2481 } else {
2482 var75 = ":(void)0;";
2483 var76 = 9;
2484 var77 = string__NativeString__to_s_with_length(var75, var76);
2485 var74 = var77;
2486 varonce73 = var74;
2487 }
2488 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
2489 { /* var78 = array_instance Array[Object] */
2490 var79 = 2;
2491 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
2492 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var72;
2493 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var74;
2494 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
2495 CHECK_NEW_array__Array(var78);
2496 }
2497 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
2498 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var81) /* add on <self:SeparateCompilerVisitor>*/;
2499 if (varonce82) {
2500 var83 = varonce82;
2501 } else {
2502 var84 = "}";
2503 var85 = 1;
2504 var86 = string__NativeString__to_s_with_length(var84, var85);
2505 var83 = var86;
2506 varonce82 = var83;
2507 }
2508 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var83) /* add on <self:SeparateCompilerVisitor>*/;
2509 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_old_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2510 var = var_res;
2511 goto RET_LABEL;
2512 } else {
2513 }
2514 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__adapt_signature]))(self, var_mmethoddef, var_arguments) /* adapt_signature on <self:SeparateCompilerVisitor>*/;
2515 var87 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
2516 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var87) /* require_declaration on <self:SeparateCompilerVisitor>*/;
2517 var88 = NULL;
2518 if (var_res == NULL) {
2519 var89 = 1; /* is null */
2520 } else {
2521 var89 = 0; /* arg is null but recv is not */
2522 }
2523 if (var89){
2524 var90 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
2525 if (varonce91) {
2526 var92 = varonce91;
2527 } else {
2528 var93 = "(";
2529 var94 = 1;
2530 var95 = string__NativeString__to_s_with_length(var93, var94);
2531 var92 = var95;
2532 varonce91 = var92;
2533 }
2534 if (varonce96) {
2535 var97 = varonce96;
2536 } else {
2537 var98 = ", ";
2538 var99 = 2;
2539 var100 = string__NativeString__to_s_with_length(var98, var99);
2540 var97 = var100;
2541 varonce96 = var97;
2542 }
2543 var101 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var97) /* join on <var_arguments:Array[RuntimeVariable]>*/;
2544 if (varonce102) {
2545 var103 = varonce102;
2546 } else {
2547 var104 = ");";
2548 var105 = 2;
2549 var106 = string__NativeString__to_s_with_length(var104, var105);
2550 var103 = var106;
2551 varonce102 = var103;
2552 }
2553 var107 = NEW_array__Array(&type_array__Arraykernel__Object);
2554 { /* var107 = array_instance Array[Object] */
2555 var108 = 4;
2556 var109 = NEW_array__NativeArray(var108, &type_array__NativeArraykernel__Object);
2557 ((struct instance_array__NativeArray*)var109)->values[0] = (val*) var90;
2558 ((struct instance_array__NativeArray*)var109)->values[1] = (val*) var92;
2559 ((struct instance_array__NativeArray*)var109)->values[2] = (val*) var101;
2560 ((struct instance_array__NativeArray*)var109)->values[3] = (val*) var103;
2561 ((void (*)(val*, val*, long))(var107->class->vft[COLOR_array__Array__with_native]))(var107, var109, var108) /* with_native on <var107:Array[Object]>*/;
2562 CHECK_NEW_array__Array(var107);
2563 }
2564 var110 = ((val* (*)(val*))(var107->class->vft[COLOR_string__Object__to_s]))(var107) /* to_s on <var107:Array[Object]>*/;
2565 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var110) /* add on <self:SeparateCompilerVisitor>*/;
2566 var111 = NULL;
2567 var = var111;
2568 goto RET_LABEL;
2569 } else {
2570 if (varonce112) {
2571 var113 = varonce112;
2572 } else {
2573 var114 = " = ";
2574 var115 = 3;
2575 var116 = string__NativeString__to_s_with_length(var114, var115);
2576 var113 = var116;
2577 varonce112 = var113;
2578 }
2579 var117 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var_mmethoddef) /* c_name on <var_mmethoddef:MMethodDef>*/;
2580 if (varonce118) {
2581 var119 = varonce118;
2582 } else {
2583 var120 = "(";
2584 var121 = 1;
2585 var122 = string__NativeString__to_s_with_length(var120, var121);
2586 var119 = var122;
2587 varonce118 = var119;
2588 }
2589 if (varonce123) {
2590 var124 = varonce123;
2591 } else {
2592 var125 = ", ";
2593 var126 = 2;
2594 var127 = string__NativeString__to_s_with_length(var125, var126);
2595 var124 = var127;
2596 varonce123 = var124;
2597 }
2598 var128 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var124) /* join on <var_arguments:Array[RuntimeVariable]>*/;
2599 if (varonce129) {
2600 var130 = varonce129;
2601 } else {
2602 var131 = ");";
2603 var132 = 2;
2604 var133 = string__NativeString__to_s_with_length(var131, var132);
2605 var130 = var133;
2606 varonce129 = var130;
2607 }
2608 var134 = NEW_array__Array(&type_array__Arraykernel__Object);
2609 { /* var134 = array_instance Array[Object] */
2610 var135 = 6;
2611 var136 = NEW_array__NativeArray(var135, &type_array__NativeArraykernel__Object);
2612 ((struct instance_array__NativeArray*)var136)->values[0] = (val*) var_res;
2613 ((struct instance_array__NativeArray*)var136)->values[1] = (val*) var113;
2614 ((struct instance_array__NativeArray*)var136)->values[2] = (val*) var117;
2615 ((struct instance_array__NativeArray*)var136)->values[3] = (val*) var119;
2616 ((struct instance_array__NativeArray*)var136)->values[4] = (val*) var128;
2617 ((struct instance_array__NativeArray*)var136)->values[5] = (val*) var130;
2618 ((void (*)(val*, val*, long))(var134->class->vft[COLOR_array__Array__with_native]))(var134, var136, var135) /* with_native on <var134:Array[Object]>*/;
2619 CHECK_NEW_array__Array(var134);
2620 }
2621 var137 = ((val* (*)(val*))(var134->class->vft[COLOR_string__Object__to_s]))(var134) /* to_s on <var134:Array[Object]>*/;
2622 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var137) /* add on <self:SeparateCompilerVisitor>*/;
2623 }
2624 var = var_res;
2625 goto RET_LABEL;
2626 RET_LABEL:;
2627 return var;
2628 }
2629 /* method separate_compiler#SeparateCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
2630 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
2631 val* var /* : nullable RuntimeVariable */;
2632 val* var1 /* : nullable RuntimeVariable */;
2633 var1 = separate_compiler__SeparateCompilerVisitor__call(self, p0, p1, p2);
2634 var = var1;
2635 RET_LABEL:;
2636 return var;
2637 }
2638 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
2639 val* separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
2640 val* var /* : nullable RuntimeVariable */;
2641 val* var_m /* var m: MMethodDef */;
2642 val* var_recvtype /* var recvtype: MClassType */;
2643 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2644 val* var1 /* : MProperty */;
2645 val* var2 /* : String */;
2646 val* var3 /* : nullable RuntimeVariable */;
2647 var_m = p0;
2648 var_recvtype = p1;
2649 var_arguments = p2;
2650 var1 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mproperty]))(var_m) /* mproperty on <var_m:MMethodDef>*/;
2651 var2 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:MMethodDef>*/;
2652 var3 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__table_send]))(self, var1, var_arguments, var2) /* table_send on <self:SeparateCompilerVisitor>*/;
2653 var = var3;
2654 goto RET_LABEL;
2655 RET_LABEL:;
2656 return var;
2657 }
2658 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
2659 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
2660 val* var /* : nullable RuntimeVariable */;
2661 val* var1 /* : nullable RuntimeVariable */;
2662 var1 = separate_compiler__SeparateCompilerVisitor__supercall(self, p0, p1, p2);
2663 var = var1;
2664 RET_LABEL:;
2665 return var;
2666 }
2667 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: SeparateCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
2668 val* separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
2669 val* var /* : RuntimeVariable */;
2670 val* var_mpropdef /* var mpropdef: MPropDef */;
2671 val* var_recv /* var recv: RuntimeVariable */;
2672 val* var_varargs /* var varargs: Array[RuntimeVariable] */;
2673 val* var_elttype /* var elttype: MType */;
2674 val* var1 /* : nullable Frame */;
2675 val* var_old_frame /* var old_frame: nullable Frame */;
2676 val* var2 /* : Frame */;
2677 val* var3 /* : MClassDef */;
2678 val* var4 /* : MClassType */;
2679 val* var5 /* : Array[RuntimeVariable] */;
2680 long var6 /* : Int */;
2681 val* var_ /* var : Array[RuntimeVariable] */;
2682 val* var_frame /* var frame: Frame */;
2683 val* var7 /* : RuntimeVariable */;
2684 val* var_res /* var res: RuntimeVariable */;
2685 var_mpropdef = p0;
2686 var_recv = p1;
2687 var_varargs = p2;
2688 var_elttype = p3;
2689 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
2690 var_old_frame = var1;
2691 var2 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
2692 var3 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
2693 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
2694 var5 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
2695 var6 = 1;
2696 ((void (*)(val*, long))(var5->class->vft[COLOR_array__Array__with_capacity]))(var5, var6) /* with_capacity on <var5:Array[RuntimeVariable]>*/;
2697 CHECK_NEW_array__Array(var5);
2698 var_ = var5;
2699 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var_recv) /* push on <var_:Array[RuntimeVariable]>*/;
2700 ((void (*)(val*, val*, val*, val*, val*))(var2->class->vft[COLOR_abstract_compiler__Frame__init]))(var2, self, var_mpropdef, var4, var_) /* init on <var2:Frame>*/;
2701 CHECK_NEW_abstract_compiler__Frame(var2);
2702 var_frame = var2;
2703 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2704 var7 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__array_instance]))(self, var_varargs, var_elttype) /* array_instance on <self:SeparateCompilerVisitor>*/;
2705 var_res = var7;
2706 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(self, var_old_frame) /* frame= on <self:SeparateCompilerVisitor>*/;
2707 var = var_res;
2708 goto RET_LABEL;
2709 RET_LABEL:;
2710 return var;
2711 }
2712 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: Object, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
2713 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
2714 val* var /* : RuntimeVariable */;
2715 val* var1 /* : RuntimeVariable */;
2716 var1 = separate_compiler__SeparateCompilerVisitor__vararg_instance(self, p0, p1, p2, p3);
2717 var = var1;
2718 RET_LABEL:;
2719 return var;
2720 }
2721 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
2722 val* separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
2723 val* var /* : RuntimeVariable */;
2724 val* var_a /* var a: MAttribute */;
2725 val* var_recv /* var recv: RuntimeVariable */;
2726 val* var1 /* : MClassType */;
2727 val* var2 /* : RuntimeVariable */;
2728 val* var_res /* var res: RuntimeVariable */;
2729 val* var3 /* : MPropDef */;
2730 val* var4 /* : nullable MType */;
2731 val* var_mtype /* var mtype: MType */;
2732 val* var5 /* : MPropDef */;
2733 val* var6 /* : MClassDef */;
2734 val* var_intromclassdef /* var intromclassdef: MClassDef */;
2735 val* var7 /* : MClassType */;
2736 val* var8 /* : MClassType */;
2737 val* var9 /* : MModule */;
2738 short int var10 /* : Bool */;
2739 val* var11 /* : MType */;
2740 short int var12 /* : Bool */;
2741 int cltype;
2742 int idtype;
2743 static val* varonce;
2744 val* var13 /* : String */;
2745 char* var14 /* : NativeString */;
2746 long var15 /* : Int */;
2747 val* var16 /* : String */;
2748 static val* varonce17;
2749 val* var18 /* : String */;
2750 char* var19 /* : NativeString */;
2751 long var20 /* : Int */;
2752 val* var21 /* : String */;
2753 val* var22 /* : String */;
2754 static val* varonce23;
2755 val* var24 /* : String */;
2756 char* var25 /* : NativeString */;
2757 long var26 /* : Int */;
2758 val* var27 /* : String */;
2759 val* var28 /* : Array[Object] */;
2760 long var29 /* : Int */;
2761 val* var30 /* : NativeArray[Object] */;
2762 val* var31 /* : String */;
2763 val* var32 /* : String */;
2764 val* var33 /* : AbstractCompiler */;
2765 val* var34 /* : ModelBuilder */;
2766 val* var35 /* : ToolContext */;
2767 val* var36 /* : OptionBool */;
2768 val* var37 /* : nullable Object */;
2769 short int var38 /* : Bool */;
2770 static val* varonce39;
2771 val* var40 /* : String */;
2772 char* var41 /* : NativeString */;
2773 long var42 /* : Int */;
2774 val* var43 /* : String */;
2775 static val* varonce44;
2776 val* var45 /* : String */;
2777 char* var46 /* : NativeString */;
2778 long var47 /* : Int */;
2779 val* var48 /* : String */;
2780 val* var49 /* : String */;
2781 static val* varonce50;
2782 val* var51 /* : String */;
2783 char* var52 /* : NativeString */;
2784 long var53 /* : Int */;
2785 val* var54 /* : String */;
2786 static val* varonce55;
2787 val* var56 /* : String */;
2788 char* var57 /* : NativeString */;
2789 long var58 /* : Int */;
2790 val* var59 /* : String */;
2791 val* var60 /* : String */;
2792 static val* varonce61;
2793 val* var62 /* : String */;
2794 char* var63 /* : NativeString */;
2795 long var64 /* : Int */;
2796 val* var65 /* : String */;
2797 val* var66 /* : Array[Object] */;
2798 long var67 /* : Int */;
2799 val* var68 /* : NativeArray[Object] */;
2800 val* var69 /* : String */;
2801 val* var70 /* : String */;
2802 static val* varonce71;
2803 val* var72 /* : String */;
2804 char* var73 /* : NativeString */;
2805 long var74 /* : Int */;
2806 val* var75 /* : String */;
2807 short int var76 /* : Bool */;
2808 static val* varonce77;
2809 val* var78 /* : String */;
2810 char* var79 /* : NativeString */;
2811 long var80 /* : Int */;
2812 val* var81 /* : String */;
2813 static val* varonce82;
2814 val* var83 /* : String */;
2815 char* var84 /* : NativeString */;
2816 long var85 /* : Int */;
2817 val* var86 /* : String */;
2818 val* var87 /* : String */;
2819 static val* varonce88;
2820 val* var89 /* : String */;
2821 char* var90 /* : NativeString */;
2822 long var91 /* : Int */;
2823 val* var92 /* : String */;
2824 static val* varonce93;
2825 val* var94 /* : String */;
2826 char* var95 /* : NativeString */;
2827 long var96 /* : Int */;
2828 val* var97 /* : String */;
2829 val* var98 /* : String */;
2830 static val* varonce99;
2831 val* var100 /* : String */;
2832 char* var101 /* : NativeString */;
2833 long var102 /* : Int */;
2834 val* var103 /* : String */;
2835 val* var104 /* : Array[Object] */;
2836 long var105 /* : Int */;
2837 val* var106 /* : NativeArray[Object] */;
2838 val* var107 /* : String */;
2839 static val* varonce108;
2840 val* var109 /* : String */;
2841 char* var110 /* : NativeString */;
2842 long var111 /* : Int */;
2843 val* var112 /* : String */;
2844 static val* varonce113;
2845 val* var114 /* : String */;
2846 char* var115 /* : NativeString */;
2847 long var116 /* : Int */;
2848 val* var117 /* : String */;
2849 val* var118 /* : String */;
2850 static val* varonce119;
2851 val* var120 /* : String */;
2852 char* var121 /* : NativeString */;
2853 long var122 /* : Int */;
2854 val* var123 /* : String */;
2855 val* var124 /* : Array[Object] */;
2856 long var125 /* : Int */;
2857 val* var126 /* : NativeArray[Object] */;
2858 val* var127 /* : String */;
2859 var_a = p0;
2860 var_recv = p1;
2861 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
2862 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
2863 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
2864 var_res = var2;
2865 var3 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2866 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var3) /* static_mtype on <var3:MPropDef(MAttributeDef)>*/;
2867 if (var4 == NULL) {
2868 fprintf(stderr, "Runtime error: %s", "Cast failed");
2869 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1159);
2870 exit(1);
2871 }
2872 var_mtype = var4;
2873 var5 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
2874 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MPropDef__mclassdef]))(var5) /* mclassdef on <var5:MPropDef(MAttributeDef)>*/;
2875 var_intromclassdef = var6;
2876 var7 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2877 var8 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2878 var9 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
2879 var10 = 1;
2880 var11 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var7, var8, var9, var10) /* resolve_for on <var_mtype:MType>*/;
2881 var_mtype = var11;
2882 /* <var_mtype:MType> isa MNullableType */
2883 cltype = type_model__MNullableType.color;
2884 idtype = type_model__MNullableType.id;
2885 if(cltype >= var_mtype->type->table_size) {
2886 var12 = 0;
2887 } else {
2888 var12 = var_mtype->type->type_table[cltype] == idtype;
2889 }
2890 if (var12){
2891 if (varonce) {
2892 var13 = varonce;
2893 } else {
2894 var14 = " = 1; /* easy isset: ";
2895 var15 = 21;
2896 var16 = string__NativeString__to_s_with_length(var14, var15);
2897 var13 = var16;
2898 varonce = var13;
2899 }
2900 if (varonce17) {
2901 var18 = varonce17;
2902 } else {
2903 var19 = " on ";
2904 var20 = 4;
2905 var21 = string__NativeString__to_s_with_length(var19, var20);
2906 var18 = var21;
2907 varonce17 = var18;
2908 }
2909 var22 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2910 if (varonce23) {
2911 var24 = varonce23;
2912 } else {
2913 var25 = " */";
2914 var26 = 3;
2915 var27 = string__NativeString__to_s_with_length(var25, var26);
2916 var24 = var27;
2917 varonce23 = var24;
2918 }
2919 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
2920 { /* var28 = array_instance Array[Object] */
2921 var29 = 6;
2922 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
2923 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var_res;
2924 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var13;
2925 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var_a;
2926 ((struct instance_array__NativeArray*)var30)->values[3] = (val*) var18;
2927 ((struct instance_array__NativeArray*)var30)->values[4] = (val*) var22;
2928 ((struct instance_array__NativeArray*)var30)->values[5] = (val*) var24;
2929 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
2930 CHECK_NEW_array__Array(var28);
2931 }
2932 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
2933 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var31) /* add on <self:SeparateCompilerVisitor>*/;
2934 var = var_res;
2935 goto RET_LABEL;
2936 } else {
2937 }
2938 var32 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2939 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var32) /* require_declaration on <self:SeparateCompilerVisitor>*/;
2940 var33 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
2941 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var33) /* modelbuilder on <var33:AbstractCompiler(SeparateCompiler)>*/;
2942 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var34) /* toolcontext on <var34:ModelBuilder>*/;
2943 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var35) /* opt_no_union_attribute on <var35:ToolContext>*/;
2944 var37 = ((val* (*)(val*))(var36->class->vft[COLOR_opts__Option__value]))(var36) /* value on <var36:OptionBool>*/;
2945 var38 = ((struct instance_kernel__Bool*)var37)->value; /* autounbox from nullable Object to Bool */;
2946 if (var38){
2947 if (varonce39) {
2948 var40 = varonce39;
2949 } else {
2950 var41 = " = ";
2951 var42 = 3;
2952 var43 = string__NativeString__to_s_with_length(var41, var42);
2953 var40 = var43;
2954 varonce39 = var40;
2955 }
2956 if (varonce44) {
2957 var45 = varonce44;
2958 } else {
2959 var46 = "->attrs[";
2960 var47 = 8;
2961 var48 = string__NativeString__to_s_with_length(var46, var47);
2962 var45 = var48;
2963 varonce44 = var45;
2964 }
2965 var49 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
2966 if (varonce50) {
2967 var51 = varonce50;
2968 } else {
2969 var52 = "] != NULL; /* ";
2970 var53 = 14;
2971 var54 = string__NativeString__to_s_with_length(var52, var53);
2972 var51 = var54;
2973 varonce50 = var51;
2974 }
2975 if (varonce55) {
2976 var56 = varonce55;
2977 } else {
2978 var57 = " on ";
2979 var58 = 4;
2980 var59 = string__NativeString__to_s_with_length(var57, var58);
2981 var56 = var59;
2982 varonce55 = var56;
2983 }
2984 var60 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
2985 if (varonce61) {
2986 var62 = varonce61;
2987 } else {
2988 var63 = "*/";
2989 var64 = 2;
2990 var65 = string__NativeString__to_s_with_length(var63, var64);
2991 var62 = var65;
2992 varonce61 = var62;
2993 }
2994 var66 = NEW_array__Array(&type_array__Arraykernel__Object);
2995 { /* var66 = array_instance Array[Object] */
2996 var67 = 10;
2997 var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object);
2998 ((struct instance_array__NativeArray*)var68)->values[0] = (val*) var_res;
2999 ((struct instance_array__NativeArray*)var68)->values[1] = (val*) var40;
3000 ((struct instance_array__NativeArray*)var68)->values[2] = (val*) var_recv;
3001 ((struct instance_array__NativeArray*)var68)->values[3] = (val*) var45;
3002 ((struct instance_array__NativeArray*)var68)->values[4] = (val*) var49;
3003 ((struct instance_array__NativeArray*)var68)->values[5] = (val*) var51;
3004 ((struct instance_array__NativeArray*)var68)->values[6] = (val*) var_a;
3005 ((struct instance_array__NativeArray*)var68)->values[7] = (val*) var56;
3006 ((struct instance_array__NativeArray*)var68)->values[8] = (val*) var60;
3007 ((struct instance_array__NativeArray*)var68)->values[9] = (val*) var62;
3008 ((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on <var66:Array[Object]>*/;
3009 CHECK_NEW_array__Array(var66);
3010 }
3011 var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on <var66:Array[Object]>*/;
3012 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var69) /* add on <self:SeparateCompilerVisitor>*/;
3013 } else {
3014 var70 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
3015 if (varonce71) {
3016 var72 = varonce71;
3017 } else {
3018 var73 = "val*";
3019 var74 = 4;
3020 var75 = string__NativeString__to_s_with_length(var73, var74);
3021 var72 = var75;
3022 varonce71 = var72;
3023 }
3024 var76 = ((short int (*)(val*, val*))(var70->class->vft[COLOR_kernel__Object___61d_61d]))(var70, var72) /* == on <var70:String>*/;
3025 if (var76){
3026 if (varonce77) {
3027 var78 = varonce77;
3028 } else {
3029 var79 = " = ";
3030 var80 = 3;
3031 var81 = string__NativeString__to_s_with_length(var79, var80);
3032 var78 = var81;
3033 varonce77 = var78;
3034 }
3035 if (varonce82) {
3036 var83 = varonce82;
3037 } else {
3038 var84 = "->attrs[";
3039 var85 = 8;
3040 var86 = string__NativeString__to_s_with_length(var84, var85);
3041 var83 = var86;
3042 varonce82 = var83;
3043 }
3044 var87 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3045 if (varonce88) {
3046 var89 = varonce88;
3047 } else {
3048 var90 = "].val != NULL; /* ";
3049 var91 = 18;
3050 var92 = string__NativeString__to_s_with_length(var90, var91);
3051 var89 = var92;
3052 varonce88 = var89;
3053 }
3054 if (varonce93) {
3055 var94 = varonce93;
3056 } else {
3057 var95 = " on ";
3058 var96 = 4;
3059 var97 = string__NativeString__to_s_with_length(var95, var96);
3060 var94 = var97;
3061 varonce93 = var94;
3062 }
3063 var98 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3064 if (varonce99) {
3065 var100 = varonce99;
3066 } else {
3067 var101 = " */";
3068 var102 = 3;
3069 var103 = string__NativeString__to_s_with_length(var101, var102);
3070 var100 = var103;
3071 varonce99 = var100;
3072 }
3073 var104 = NEW_array__Array(&type_array__Arraykernel__Object);
3074 { /* var104 = array_instance Array[Object] */
3075 var105 = 10;
3076 var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
3077 ((struct instance_array__NativeArray*)var106)->values[0] = (val*) var_res;
3078 ((struct instance_array__NativeArray*)var106)->values[1] = (val*) var78;
3079 ((struct instance_array__NativeArray*)var106)->values[2] = (val*) var_recv;
3080 ((struct instance_array__NativeArray*)var106)->values[3] = (val*) var83;
3081 ((struct instance_array__NativeArray*)var106)->values[4] = (val*) var87;
3082 ((struct instance_array__NativeArray*)var106)->values[5] = (val*) var89;
3083 ((struct instance_array__NativeArray*)var106)->values[6] = (val*) var_a;
3084 ((struct instance_array__NativeArray*)var106)->values[7] = (val*) var94;
3085 ((struct instance_array__NativeArray*)var106)->values[8] = (val*) var98;
3086 ((struct instance_array__NativeArray*)var106)->values[9] = (val*) var100;
3087 ((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
3088 CHECK_NEW_array__Array(var104);
3089 }
3090 var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
3091 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var107) /* add on <self:SeparateCompilerVisitor>*/;
3092 } else {
3093 if (varonce108) {
3094 var109 = varonce108;
3095 } else {
3096 var110 = " = 1; /* NOT YET IMPLEMENTED: isset of primitives: ";
3097 var111 = 51;
3098 var112 = string__NativeString__to_s_with_length(var110, var111);
3099 var109 = var112;
3100 varonce108 = var109;
3101 }
3102 if (varonce113) {
3103 var114 = varonce113;
3104 } else {
3105 var115 = " on ";
3106 var116 = 4;
3107 var117 = string__NativeString__to_s_with_length(var115, var116);
3108 var114 = var117;
3109 varonce113 = var114;
3110 }
3111 var118 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3112 if (varonce119) {
3113 var120 = varonce119;
3114 } else {
3115 var121 = " */";
3116 var122 = 3;
3117 var123 = string__NativeString__to_s_with_length(var121, var122);
3118 var120 = var123;
3119 varonce119 = var120;
3120 }
3121 var124 = NEW_array__Array(&type_array__Arraykernel__Object);
3122 { /* var124 = array_instance Array[Object] */
3123 var125 = 6;
3124 var126 = NEW_array__NativeArray(var125, &type_array__NativeArraykernel__Object);
3125 ((struct instance_array__NativeArray*)var126)->values[0] = (val*) var_res;
3126 ((struct instance_array__NativeArray*)var126)->values[1] = (val*) var109;
3127 ((struct instance_array__NativeArray*)var126)->values[2] = (val*) var_a;
3128 ((struct instance_array__NativeArray*)var126)->values[3] = (val*) var114;
3129 ((struct instance_array__NativeArray*)var126)->values[4] = (val*) var118;
3130 ((struct instance_array__NativeArray*)var126)->values[5] = (val*) var120;
3131 ((void (*)(val*, val*, long))(var124->class->vft[COLOR_array__Array__with_native]))(var124, var126, var125) /* with_native on <var124:Array[Object]>*/;
3132 CHECK_NEW_array__Array(var124);
3133 }
3134 var127 = ((val* (*)(val*))(var124->class->vft[COLOR_string__Object__to_s]))(var124) /* to_s on <var124:Array[Object]>*/;
3135 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var127) /* add on <self:SeparateCompilerVisitor>*/;
3136 }
3137 }
3138 var = var_res;
3139 goto RET_LABEL;
3140 RET_LABEL:;
3141 return var;
3142 }
3143 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
3144 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
3145 val* var /* : RuntimeVariable */;
3146 val* var1 /* : RuntimeVariable */;
3147 var1 = separate_compiler__SeparateCompilerVisitor__isset_attribute(self, p0, p1);
3148 var = var1;
3149 RET_LABEL:;
3150 return var;
3151 }
3152 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
3153 val* separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
3154 val* var /* : RuntimeVariable */;
3155 val* var_a /* var a: MAttribute */;
3156 val* var_recv /* var recv: RuntimeVariable */;
3157 val* var1 /* : MPropDef */;
3158 val* var2 /* : nullable MType */;
3159 val* var_ret /* var ret: MType */;
3160 val* var3 /* : MPropDef */;
3161 val* var4 /* : MClassDef */;
3162 val* var_intromclassdef /* var intromclassdef: MClassDef */;
3163 val* var5 /* : MClassType */;
3164 val* var6 /* : MClassType */;
3165 val* var7 /* : MModule */;
3166 short int var8 /* : Bool */;
3167 val* var9 /* : MType */;
3168 val* var10 /* : String */;
3169 val* var11 /* : AbstractCompiler */;
3170 val* var12 /* : ModelBuilder */;
3171 val* var13 /* : ToolContext */;
3172 val* var14 /* : OptionBool */;
3173 val* var15 /* : nullable Object */;
3174 short int var16 /* : Bool */;
3175 val* var17 /* : MClassType */;
3176 val* var18 /* : MType */;
3177 val* var_cret /* var cret: MType */;
3178 val* var19 /* : RuntimeVariable */;
3179 val* var_res /* var res: RuntimeVariable */;
3180 static val* varonce;
3181 val* var20 /* : String */;
3182 char* var21 /* : NativeString */;
3183 long var22 /* : Int */;
3184 val* var23 /* : String */;
3185 static val* varonce24;
3186 val* var25 /* : String */;
3187 char* var26 /* : NativeString */;
3188 long var27 /* : Int */;
3189 val* var28 /* : String */;
3190 val* var29 /* : String */;
3191 static val* varonce30;
3192 val* var31 /* : String */;
3193 char* var32 /* : NativeString */;
3194 long var33 /* : Int */;
3195 val* var34 /* : String */;
3196 static val* varonce35;
3197 val* var36 /* : String */;
3198 char* var37 /* : NativeString */;
3199 long var38 /* : Int */;
3200 val* var39 /* : String */;
3201 val* var40 /* : String */;
3202 static val* varonce41;
3203 val* var42 /* : String */;
3204 char* var43 /* : NativeString */;
3205 long var44 /* : Int */;
3206 val* var45 /* : String */;
3207 val* var46 /* : Array[Object] */;
3208 long var47 /* : Int */;
3209 val* var48 /* : NativeArray[Object] */;
3210 val* var49 /* : String */;
3211 short int var50 /* : Bool */;
3212 short int var51 /* : Bool */;
3213 int cltype;
3214 int idtype;
3215 short int var52 /* : Bool */;
3216 short int var_ /* var : Bool */;
3217 val* var53 /* : AbstractCompiler */;
3218 val* var54 /* : ModelBuilder */;
3219 val* var55 /* : ToolContext */;
3220 val* var56 /* : OptionBool */;
3221 val* var57 /* : nullable Object */;
3222 short int var58 /* : Bool */;
3223 short int var59 /* : Bool */;
3224 static val* varonce60;
3225 val* var61 /* : String */;
3226 char* var62 /* : NativeString */;
3227 long var63 /* : Int */;
3228 val* var64 /* : String */;
3229 static val* varonce65;
3230 val* var66 /* : String */;
3231 char* var67 /* : NativeString */;
3232 long var68 /* : Int */;
3233 val* var69 /* : String */;
3234 val* var70 /* : Array[Object] */;
3235 long var71 /* : Int */;
3236 val* var72 /* : NativeArray[Object] */;
3237 val* var73 /* : String */;
3238 static val* varonce74;
3239 val* var75 /* : String */;
3240 char* var76 /* : NativeString */;
3241 long var77 /* : Int */;
3242 val* var78 /* : String */;
3243 val* var79 /* : String */;
3244 val* var80 /* : Array[Object] */;
3245 long var81 /* : Int */;
3246 val* var82 /* : NativeArray[Object] */;
3247 val* var83 /* : String */;
3248 static val* varonce84;
3249 val* var85 /* : String */;
3250 char* var86 /* : NativeString */;
3251 long var87 /* : Int */;
3252 val* var88 /* : String */;
3253 val* var89 /* : RuntimeVariable */;
3254 val* var90 /* : RuntimeVariable */;
3255 val* var_res91 /* var res: RuntimeVariable */;
3256 static val* varonce92;
3257 val* var93 /* : String */;
3258 char* var94 /* : NativeString */;
3259 long var95 /* : Int */;
3260 val* var96 /* : String */;
3261 static val* varonce97;
3262 val* var98 /* : String */;
3263 char* var99 /* : NativeString */;
3264 long var100 /* : Int */;
3265 val* var101 /* : String */;
3266 val* var102 /* : String */;
3267 static val* varonce103;
3268 val* var104 /* : String */;
3269 char* var105 /* : NativeString */;
3270 long var106 /* : Int */;
3271 val* var107 /* : String */;
3272 val* var108 /* : String */;
3273 static val* varonce109;
3274 val* var110 /* : String */;
3275 char* var111 /* : NativeString */;
3276 long var112 /* : Int */;
3277 val* var113 /* : String */;
3278 static val* varonce114;
3279 val* var115 /* : String */;
3280 char* var116 /* : NativeString */;
3281 long var117 /* : Int */;
3282 val* var118 /* : String */;
3283 val* var119 /* : String */;
3284 static val* varonce120;
3285 val* var121 /* : String */;
3286 char* var122 /* : NativeString */;
3287 long var123 /* : Int */;
3288 val* var124 /* : String */;
3289 val* var125 /* : Array[Object] */;
3290 long var126 /* : Int */;
3291 val* var127 /* : NativeArray[Object] */;
3292 val* var128 /* : String */;
3293 short int var129 /* : Bool */;
3294 short int var130 /* : Bool */;
3295 val* var131 /* : String */;
3296 static val* varonce132;
3297 val* var133 /* : String */;
3298 char* var134 /* : NativeString */;
3299 long var135 /* : Int */;
3300 val* var136 /* : String */;
3301 short int var137 /* : Bool */;
3302 short int var_138 /* var : Bool */;
3303 short int var139 /* : Bool */;
3304 int cltype140;
3305 int idtype141;
3306 short int var142 /* : Bool */;
3307 short int var_143 /* var : Bool */;
3308 val* var144 /* : AbstractCompiler */;
3309 val* var145 /* : ModelBuilder */;
3310 val* var146 /* : ToolContext */;
3311 val* var147 /* : OptionBool */;
3312 val* var148 /* : nullable Object */;
3313 short int var149 /* : Bool */;
3314 short int var150 /* : Bool */;
3315 static val* varonce151;
3316 val* var152 /* : String */;
3317 char* var153 /* : NativeString */;
3318 long var154 /* : Int */;
3319 val* var155 /* : String */;
3320 static val* varonce156;
3321 val* var157 /* : String */;
3322 char* var158 /* : NativeString */;
3323 long var159 /* : Int */;
3324 val* var160 /* : String */;
3325 val* var161 /* : Array[Object] */;
3326 long var162 /* : Int */;
3327 val* var163 /* : NativeArray[Object] */;
3328 val* var164 /* : String */;
3329 static val* varonce165;
3330 val* var166 /* : String */;
3331 char* var167 /* : NativeString */;
3332 long var168 /* : Int */;
3333 val* var169 /* : String */;
3334 val* var170 /* : String */;
3335 val* var171 /* : Array[Object] */;
3336 long var172 /* : Int */;
3337 val* var173 /* : NativeArray[Object] */;
3338 val* var174 /* : String */;
3339 static val* varonce175;
3340 val* var176 /* : String */;
3341 char* var177 /* : NativeString */;
3342 long var178 /* : Int */;
3343 val* var179 /* : String */;
3344 var_a = p0;
3345 var_recv = p1;
3346 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
3347 var1 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3348 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var1) /* static_mtype on <var1:MPropDef(MAttributeDef)>*/;
3349 if (var2 == NULL) {
3350 fprintf(stderr, "Runtime error: %s", "Cast failed");
3351 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1187);
3352 exit(1);
3353 }
3354 var_ret = var2;
3355 var3 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3356 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MPropDef__mclassdef]))(var3) /* mclassdef on <var3:MPropDef(MAttributeDef)>*/;
3357 var_intromclassdef = var4;
3358 var5 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3359 var6 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3360 var7 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
3361 var8 = 1;
3362 var9 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var5, var6, var7, var8) /* resolve_for on <var_ret:MType>*/;
3363 var_ret = var9;
3364 var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3365 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
3366 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3367 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var11) /* modelbuilder on <var11:AbstractCompiler(SeparateCompiler)>*/;
3368 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
3369 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var13) /* opt_no_union_attribute on <var13:ToolContext>*/;
3370 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
3371 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
3372 if (var16){
3373 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
3374 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MType__as_nullable]))(var17) /* as_nullable on <var17:MClassType>*/;
3375 var_cret = var18;
3376 var19 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_cret) /* new_var on <self:SeparateCompilerVisitor>*/;
3377 var_res = var19;
3378 ((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype_61d]))(var_res, var_ret) /* mcasttype= on <var_res:RuntimeVariable>*/;
3379 if (varonce) {
3380 var20 = varonce;
3381 } else {
3382 var21 = " = ";
3383 var22 = 3;
3384 var23 = string__NativeString__to_s_with_length(var21, var22);
3385 var20 = var23;
3386 varonce = var20;
3387 }
3388 if (varonce24) {
3389 var25 = varonce24;
3390 } else {
3391 var26 = "->attrs[";
3392 var27 = 8;
3393 var28 = string__NativeString__to_s_with_length(var26, var27);
3394 var25 = var28;
3395 varonce24 = var25;
3396 }
3397 var29 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3398 if (varonce30) {
3399 var31 = varonce30;
3400 } else {
3401 var32 = "]; /* ";
3402 var33 = 6;
3403 var34 = string__NativeString__to_s_with_length(var32, var33);
3404 var31 = var34;
3405 varonce30 = var31;
3406 }
3407 if (varonce35) {
3408 var36 = varonce35;
3409 } else {
3410 var37 = " on ";
3411 var38 = 4;
3412 var39 = string__NativeString__to_s_with_length(var37, var38);
3413 var36 = var39;
3414 varonce35 = var36;
3415 }
3416 var40 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3417 if (varonce41) {
3418 var42 = varonce41;
3419 } else {
3420 var43 = " */";
3421 var44 = 3;
3422 var45 = string__NativeString__to_s_with_length(var43, var44);
3423 var42 = var45;
3424 varonce41 = var42;
3425 }
3426 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
3427 { /* var46 = array_instance Array[Object] */
3428 var47 = 10;
3429 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
3430 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_res;
3431 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var20;
3432 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var_recv;
3433 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var25;
3434 ((struct instance_array__NativeArray*)var48)->values[4] = (val*) var29;
3435 ((struct instance_array__NativeArray*)var48)->values[5] = (val*) var31;
3436 ((struct instance_array__NativeArray*)var48)->values[6] = (val*) var_a;
3437 ((struct instance_array__NativeArray*)var48)->values[7] = (val*) var36;
3438 ((struct instance_array__NativeArray*)var48)->values[8] = (val*) var40;
3439 ((struct instance_array__NativeArray*)var48)->values[9] = (val*) var42;
3440 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
3441 CHECK_NEW_array__Array(var46);
3442 }
3443 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
3444 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var49) /* add on <self:SeparateCompilerVisitor>*/;
3445 /* <var_ret:MType> isa MNullableType */
3446 cltype = type_model__MNullableType.color;
3447 idtype = type_model__MNullableType.id;
3448 if(cltype >= var_ret->type->table_size) {
3449 var51 = 0;
3450 } else {
3451 var51 = var_ret->type->type_table[cltype] == idtype;
3452 }
3453 var52 = !var51;
3454 var_ = var52;
3455 if (var52){
3456 var53 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3457 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var53) /* modelbuilder on <var53:AbstractCompiler(SeparateCompiler)>*/;
3458 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var54) /* toolcontext on <var54:ModelBuilder>*/;
3459 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var55) /* opt_no_check_initialization on <var55:ToolContext>*/;
3460 var57 = ((val* (*)(val*))(var56->class->vft[COLOR_opts__Option__value]))(var56) /* value on <var56:OptionBool>*/;
3461 var58 = ((struct instance_kernel__Bool*)var57)->value; /* autounbox from nullable Object to Bool */;
3462 var59 = !var58;
3463 var50 = var59;
3464 } else {
3465 var50 = var_;
3466 }
3467 if (var50){
3468 if (varonce60) {
3469 var61 = varonce60;
3470 } else {
3471 var62 = "if (";
3472 var63 = 4;
3473 var64 = string__NativeString__to_s_with_length(var62, var63);
3474 var61 = var64;
3475 varonce60 = var61;
3476 }
3477 if (varonce65) {
3478 var66 = varonce65;
3479 } else {
3480 var67 = " == NULL) {";
3481 var68 = 11;
3482 var69 = string__NativeString__to_s_with_length(var67, var68);
3483 var66 = var69;
3484 varonce65 = var66;
3485 }
3486 var70 = NEW_array__Array(&type_array__Arraykernel__Object);
3487 { /* var70 = array_instance Array[Object] */
3488 var71 = 3;
3489 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraykernel__Object);
3490 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var61;
3491 ((struct instance_array__NativeArray*)var72)->values[1] = (val*) var_res;
3492 ((struct instance_array__NativeArray*)var72)->values[2] = (val*) var66;
3493 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[Object]>*/;
3494 CHECK_NEW_array__Array(var70);
3495 }
3496 var73 = ((val* (*)(val*))(var70->class->vft[COLOR_string__Object__to_s]))(var70) /* to_s on <var70:Array[Object]>*/;
3497 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var73) /* add on <self:SeparateCompilerVisitor>*/;
3498 if (varonce74) {
3499 var75 = varonce74;
3500 } else {
3501 var76 = "Uninitialized attribute ";
3502 var77 = 24;
3503 var78 = string__NativeString__to_s_with_length(var76, var77);
3504 var75 = var78;
3505 varonce74 = var75;
3506 }
3507 var79 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__name]))(var_a) /* name on <var_a:MAttribute>*/;
3508 var80 = NEW_array__Array(&type_array__Arraykernel__Object);
3509 { /* var80 = array_instance Array[Object] */
3510 var81 = 2;
3511 var82 = NEW_array__NativeArray(var81, &type_array__NativeArraykernel__Object);
3512 ((struct instance_array__NativeArray*)var82)->values[0] = (val*) var75;
3513 ((struct instance_array__NativeArray*)var82)->values[1] = (val*) var79;
3514 ((void (*)(val*, val*, long))(var80->class->vft[COLOR_array__Array__with_native]))(var80, var82, var81) /* with_native on <var80:Array[Object]>*/;
3515 CHECK_NEW_array__Array(var80);
3516 }
3517 var83 = ((val* (*)(val*))(var80->class->vft[COLOR_string__Object__to_s]))(var80) /* to_s on <var80:Array[Object]>*/;
3518 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var83) /* add_abort on <self:SeparateCompilerVisitor>*/;
3519 if (varonce84) {
3520 var85 = varonce84;
3521 } else {
3522 var86 = "}";
3523 var87 = 1;
3524 var88 = string__NativeString__to_s_with_length(var86, var87);
3525 var85 = var88;
3526 varonce84 = var85;
3527 }
3528 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var85) /* add on <self:SeparateCompilerVisitor>*/;
3529 } else {
3530 }
3531 var89 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_res, var_ret) /* autobox on <self:SeparateCompilerVisitor>*/;
3532 var = var89;
3533 goto RET_LABEL;
3534 } else {
3535 var90 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_ret) /* new_var on <self:SeparateCompilerVisitor>*/;
3536 var_res91 = var90;
3537 if (varonce92) {
3538 var93 = varonce92;
3539 } else {
3540 var94 = " = ";
3541 var95 = 3;
3542 var96 = string__NativeString__to_s_with_length(var94, var95);
3543 var93 = var96;
3544 varonce92 = var93;
3545 }
3546 if (varonce97) {
3547 var98 = varonce97;
3548 } else {
3549 var99 = "->attrs[";
3550 var100 = 8;
3551 var101 = string__NativeString__to_s_with_length(var99, var100);
3552 var98 = var101;
3553 varonce97 = var98;
3554 }
3555 var102 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3556 if (varonce103) {
3557 var104 = varonce103;
3558 } else {
3559 var105 = "].";
3560 var106 = 2;
3561 var107 = string__NativeString__to_s_with_length(var105, var106);
3562 var104 = var107;
3563 varonce103 = var104;
3564 }
3565 var108 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_ret) /* ctypename on <var_ret:MType>*/;
3566 if (varonce109) {
3567 var110 = varonce109;
3568 } else {
3569 var111 = "; /* ";
3570 var112 = 5;
3571 var113 = string__NativeString__to_s_with_length(var111, var112);
3572 var110 = var113;
3573 varonce109 = var110;
3574 }
3575 if (varonce114) {
3576 var115 = varonce114;
3577 } else {
3578 var116 = " on ";
3579 var117 = 4;
3580 var118 = string__NativeString__to_s_with_length(var116, var117);
3581 var115 = var118;
3582 varonce114 = var115;
3583 }
3584 var119 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
3585 if (varonce120) {
3586 var121 = varonce120;
3587 } else {
3588 var122 = " */";
3589 var123 = 3;
3590 var124 = string__NativeString__to_s_with_length(var122, var123);
3591 var121 = var124;
3592 varonce120 = var121;
3593 }
3594 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
3595 { /* var125 = array_instance Array[Object] */
3596 var126 = 12;
3597 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
3598 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var_res91;
3599 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var93;
3600 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var_recv;
3601 ((struct instance_array__NativeArray*)var127)->values[3] = (val*) var98;
3602 ((struct instance_array__NativeArray*)var127)->values[4] = (val*) var102;
3603 ((struct instance_array__NativeArray*)var127)->values[5] = (val*) var104;
3604 ((struct instance_array__NativeArray*)var127)->values[6] = (val*) var108;
3605 ((struct instance_array__NativeArray*)var127)->values[7] = (val*) var110;
3606 ((struct instance_array__NativeArray*)var127)->values[8] = (val*) var_a;
3607 ((struct instance_array__NativeArray*)var127)->values[9] = (val*) var115;
3608 ((struct instance_array__NativeArray*)var127)->values[10] = (val*) var119;
3609 ((struct instance_array__NativeArray*)var127)->values[11] = (val*) var121;
3610 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
3611 CHECK_NEW_array__Array(var125);
3612 }
3613 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
3614 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var128) /* add on <self:SeparateCompilerVisitor>*/;
3615 var131 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:MType>*/;
3616 if (varonce132) {
3617 var133 = varonce132;
3618 } else {
3619 var134 = "val*";
3620 var135 = 4;
3621 var136 = string__NativeString__to_s_with_length(var134, var135);
3622 var133 = var136;
3623 varonce132 = var133;
3624 }
3625 var137 = ((short int (*)(val*, val*))(var131->class->vft[COLOR_kernel__Object___61d_61d]))(var131, var133) /* == on <var131:String>*/;
3626 var_138 = var137;
3627 if (var137){
3628 /* <var_ret:MType> isa MNullableType */
3629 cltype140 = type_model__MNullableType.color;
3630 idtype141 = type_model__MNullableType.id;
3631 if(cltype140 >= var_ret->type->table_size) {
3632 var139 = 0;
3633 } else {
3634 var139 = var_ret->type->type_table[cltype140] == idtype141;
3635 }
3636 var142 = !var139;
3637 var130 = var142;
3638 } else {
3639 var130 = var_138;
3640 }
3641 var_143 = var130;
3642 if (var130){
3643 var144 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3644 var145 = ((val* (*)(val*))(var144->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var144) /* modelbuilder on <var144:AbstractCompiler(SeparateCompiler)>*/;
3645 var146 = ((val* (*)(val*))(var145->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var145) /* toolcontext on <var145:ModelBuilder>*/;
3646 var147 = ((val* (*)(val*))(var146->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var146) /* opt_no_check_initialization on <var146:ToolContext>*/;
3647 var148 = ((val* (*)(val*))(var147->class->vft[COLOR_opts__Option__value]))(var147) /* value on <var147:OptionBool>*/;
3648 var149 = ((struct instance_kernel__Bool*)var148)->value; /* autounbox from nullable Object to Bool */;
3649 var150 = !var149;
3650 var129 = var150;
3651 } else {
3652 var129 = var_143;
3653 }
3654 if (var129){
3655 if (varonce151) {
3656 var152 = varonce151;
3657 } else {
3658 var153 = "if (";
3659 var154 = 4;
3660 var155 = string__NativeString__to_s_with_length(var153, var154);
3661 var152 = var155;
3662 varonce151 = var152;
3663 }
3664 if (varonce156) {
3665 var157 = varonce156;
3666 } else {
3667 var158 = " == NULL) {";
3668 var159 = 11;
3669 var160 = string__NativeString__to_s_with_length(var158, var159);
3670 var157 = var160;
3671 varonce156 = var157;
3672 }
3673 var161 = NEW_array__Array(&type_array__Arraykernel__Object);
3674 { /* var161 = array_instance Array[Object] */
3675 var162 = 3;
3676 var163 = NEW_array__NativeArray(var162, &type_array__NativeArraykernel__Object);
3677 ((struct instance_array__NativeArray*)var163)->values[0] = (val*) var152;
3678 ((struct instance_array__NativeArray*)var163)->values[1] = (val*) var_res91;
3679 ((struct instance_array__NativeArray*)var163)->values[2] = (val*) var157;
3680 ((void (*)(val*, val*, long))(var161->class->vft[COLOR_array__Array__with_native]))(var161, var163, var162) /* with_native on <var161:Array[Object]>*/;
3681 CHECK_NEW_array__Array(var161);
3682 }
3683 var164 = ((val* (*)(val*))(var161->class->vft[COLOR_string__Object__to_s]))(var161) /* to_s on <var161:Array[Object]>*/;
3684 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var164) /* add on <self:SeparateCompilerVisitor>*/;
3685 if (varonce165) {
3686 var166 = varonce165;
3687 } else {
3688 var167 = "Uninitialized attribute ";
3689 var168 = 24;
3690 var169 = string__NativeString__to_s_with_length(var167, var168);
3691 var166 = var169;
3692 varonce165 = var166;
3693 }
3694 var170 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__name]))(var_a) /* name on <var_a:MAttribute>*/;
3695 var171 = NEW_array__Array(&type_array__Arraykernel__Object);
3696 { /* var171 = array_instance Array[Object] */
3697 var172 = 2;
3698 var173 = NEW_array__NativeArray(var172, &type_array__NativeArraykernel__Object);
3699 ((struct instance_array__NativeArray*)var173)->values[0] = (val*) var166;
3700 ((struct instance_array__NativeArray*)var173)->values[1] = (val*) var170;
3701 ((void (*)(val*, val*, long))(var171->class->vft[COLOR_array__Array__with_native]))(var171, var173, var172) /* with_native on <var171:Array[Object]>*/;
3702 CHECK_NEW_array__Array(var171);
3703 }
3704 var174 = ((val* (*)(val*))(var171->class->vft[COLOR_string__Object__to_s]))(var171) /* to_s on <var171:Array[Object]>*/;
3705 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(self, var174) /* add_abort on <self:SeparateCompilerVisitor>*/;
3706 if (varonce175) {
3707 var176 = varonce175;
3708 } else {
3709 var177 = "}";
3710 var178 = 1;
3711 var179 = string__NativeString__to_s_with_length(var177, var178);
3712 var176 = var179;
3713 varonce175 = var176;
3714 }
3715 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var176) /* add on <self:SeparateCompilerVisitor>*/;
3716 } else {
3717 }
3718 var = var_res91;
3719 goto RET_LABEL;
3720 }
3721 RET_LABEL:;
3722 return var;
3723 }
3724 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
3725 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
3726 val* var /* : RuntimeVariable */;
3727 val* var1 /* : RuntimeVariable */;
3728 var1 = separate_compiler__SeparateCompilerVisitor__read_attribute(self, p0, p1);
3729 var = var1;
3730 RET_LABEL:;
3731 return var;
3732 }
3733 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
3734 void separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
3735 val* var_a /* var a: MAttribute */;
3736 val* var_recv /* var recv: RuntimeVariable */;
3737 val* var_value /* var value: RuntimeVariable */;
3738 val* var /* : MPropDef */;
3739 val* var1 /* : nullable MType */;
3740 val* var_mtype /* var mtype: MType */;
3741 val* var2 /* : MPropDef */;
3742 val* var3 /* : MClassDef */;
3743 val* var_intromclassdef /* var intromclassdef: MClassDef */;
3744 val* var4 /* : MClassType */;
3745 val* var5 /* : MClassType */;
3746 val* var6 /* : MModule */;
3747 short int var7 /* : Bool */;
3748 val* var8 /* : MType */;
3749 val* var9 /* : RuntimeVariable */;
3750 val* var10 /* : String */;
3751 val* var11 /* : AbstractCompiler */;
3752 val* var12 /* : ModelBuilder */;
3753 val* var13 /* : ToolContext */;
3754 val* var14 /* : OptionBool */;
3755 val* var15 /* : nullable Object */;
3756 short int var16 /* : Bool */;
3757 val* var17 /* : Array[Object] */;
3758 long var18 /* : Int */;
3759 val* var_ /* var : Array[Object] */;
3760 static val* varonce;
3761 val* var19 /* : String */;
3762 char* var20 /* : NativeString */;
3763 long var21 /* : Int */;
3764 val* var22 /* : String */;
3765 static val* varonce23;
3766 val* var24 /* : String */;
3767 char* var25 /* : NativeString */;
3768 long var26 /* : Int */;
3769 val* var27 /* : String */;
3770 val* var28 /* : String */;
3771 static val* varonce29;
3772 val* var30 /* : String */;
3773 char* var31 /* : NativeString */;
3774 long var32 /* : Int */;
3775 val* var33 /* : String */;
3776 val* var34 /* : String */;
3777 val* var_attr /* var attr: String */;
3778 val* var35 /* : String */;
3779 static val* varonce36;
3780 val* var37 /* : String */;
3781 char* var38 /* : NativeString */;
3782 long var39 /* : Int */;
3783 val* var40 /* : String */;
3784 short int var41 /* : Bool */;
3785 short int var42 /* : Bool */;
3786 int cltype;
3787 int idtype;
3788 static val* varonce43;
3789 val* var44 /* : String */;
3790 char* var45 /* : NativeString */;
3791 long var46 /* : Int */;
3792 val* var47 /* : String */;
3793 static val* varonce48;
3794 val* var49 /* : String */;
3795 char* var50 /* : NativeString */;
3796 long var51 /* : Int */;
3797 val* var52 /* : String */;
3798 val* var53 /* : Array[Object] */;
3799 long var54 /* : Int */;
3800 val* var55 /* : NativeArray[Object] */;
3801 val* var56 /* : String */;
3802 static val* varonce57;
3803 val* var58 /* : String */;
3804 char* var59 /* : NativeString */;
3805 long var60 /* : Int */;
3806 val* var61 /* : String */;
3807 val* var62 /* : String */;
3808 static val* varonce63;
3809 val* var64 /* : String */;
3810 char* var65 /* : NativeString */;
3811 long var66 /* : Int */;
3812 val* var67 /* : String */;
3813 static val* varonce68;
3814 val* var69 /* : String */;
3815 char* var70 /* : NativeString */;
3816 long var71 /* : Int */;
3817 val* var72 /* : String */;
3818 static val* varonce73;
3819 val* var74 /* : String */;
3820 char* var75 /* : NativeString */;
3821 long var76 /* : Int */;
3822 val* var77 /* : String */;
3823 static val* varonce78;
3824 val* var79 /* : String */;
3825 char* var80 /* : NativeString */;
3826 long var81 /* : Int */;
3827 val* var82 /* : String */;
3828 val* var83 /* : String */;
3829 static val* varonce84;
3830 val* var85 /* : String */;
3831 char* var86 /* : NativeString */;
3832 long var87 /* : Int */;
3833 val* var88 /* : String */;
3834 val* var89 /* : Array[Object] */;
3835 long var90 /* : Int */;
3836 val* var91 /* : NativeArray[Object] */;
3837 val* var92 /* : String */;
3838 static val* varonce93;
3839 val* var94 /* : String */;
3840 char* var95 /* : NativeString */;
3841 long var96 /* : Int */;
3842 val* var97 /* : String */;
3843 val* var98 /* : MClassType */;
3844 val* var99 /* : MType */;
3845 val* var100 /* : RuntimeVariable */;
3846 static val* varonce101;
3847 val* var102 /* : String */;
3848 char* var103 /* : NativeString */;
3849 long var104 /* : Int */;
3850 val* var105 /* : String */;
3851 static val* varonce106;
3852 val* var107 /* : String */;
3853 char* var108 /* : NativeString */;
3854 long var109 /* : Int */;
3855 val* var110 /* : String */;
3856 static val* varonce111;
3857 val* var112 /* : String */;
3858 char* var113 /* : NativeString */;
3859 long var114 /* : Int */;
3860 val* var115 /* : String */;
3861 val* var116 /* : String */;
3862 static val* varonce117;
3863 val* var118 /* : String */;
3864 char* var119 /* : NativeString */;
3865 long var120 /* : Int */;
3866 val* var121 /* : String */;
3867 val* var122 /* : Array[Object] */;
3868 long var123 /* : Int */;
3869 val* var124 /* : NativeArray[Object] */;
3870 val* var125 /* : String */;
3871 static val* varonce126;
3872 val* var127 /* : String */;
3873 char* var128 /* : NativeString */;
3874 long var129 /* : Int */;
3875 val* var130 /* : String */;
3876 static val* varonce131;
3877 val* var132 /* : String */;
3878 char* var133 /* : NativeString */;
3879 long var134 /* : Int */;
3880 val* var135 /* : String */;
3881 static val* varonce136;
3882 val* var137 /* : String */;
3883 char* var138 /* : NativeString */;
3884 long var139 /* : Int */;
3885 val* var140 /* : String */;
3886 static val* varonce141;
3887 val* var142 /* : String */;
3888 char* var143 /* : NativeString */;
3889 long var144 /* : Int */;
3890 val* var145 /* : String */;
3891 val* var146 /* : String */;
3892 static val* varonce147;
3893 val* var148 /* : String */;
3894 char* var149 /* : NativeString */;
3895 long var150 /* : Int */;
3896 val* var151 /* : String */;
3897 val* var152 /* : Array[Object] */;
3898 long var153 /* : Int */;
3899 val* var154 /* : NativeArray[Object] */;
3900 val* var155 /* : String */;
3901 static val* varonce156;
3902 val* var157 /* : String */;
3903 char* var158 /* : NativeString */;
3904 long var159 /* : Int */;
3905 val* var160 /* : String */;
3906 val* var161 /* : String */;
3907 static val* varonce162;
3908 val* var163 /* : String */;
3909 char* var164 /* : NativeString */;
3910 long var165 /* : Int */;
3911 val* var166 /* : String */;
3912 val* var167 /* : String */;
3913 static val* varonce168;
3914 val* var169 /* : String */;
3915 char* var170 /* : NativeString */;
3916 long var171 /* : Int */;
3917 val* var172 /* : String */;
3918 static val* varonce173;
3919 val* var174 /* : String */;
3920 char* var175 /* : NativeString */;
3921 long var176 /* : Int */;
3922 val* var177 /* : String */;
3923 static val* varonce178;
3924 val* var179 /* : String */;
3925 char* var180 /* : NativeString */;
3926 long var181 /* : Int */;
3927 val* var182 /* : String */;
3928 val* var183 /* : String */;
3929 static val* varonce184;
3930 val* var185 /* : String */;
3931 char* var186 /* : NativeString */;
3932 long var187 /* : Int */;
3933 val* var188 /* : String */;
3934 val* var189 /* : Array[Object] */;
3935 long var190 /* : Int */;
3936 val* var191 /* : NativeArray[Object] */;
3937 val* var192 /* : String */;
3938 var_a = p0;
3939 var_recv = p1;
3940 var_value = p2;
3941 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_recv_notnull]))(self, var_recv) /* check_recv_notnull on <self:SeparateCompilerVisitor>*/;
3942 var = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3943 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var) /* static_mtype on <var:MPropDef(MAttributeDef)>*/;
3944 if (var1 == NULL) {
3945 fprintf(stderr, "Runtime error: %s", "Cast failed");
3946 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1230);
3947 exit(1);
3948 }
3949 var_mtype = var1;
3950 var2 = ((val* (*)(val*))(var_a->class->vft[COLOR_model__MProperty__intro]))(var_a) /* intro on <var_a:MAttribute>*/;
3951 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MPropDef(MAttributeDef)>*/;
3952 var_intromclassdef = var3;
3953 var4 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3954 var5 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
3955 var6 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
3956 var7 = 1;
3957 var8 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var4, var5, var6, var7) /* resolve_for on <var_mtype:MType>*/;
3958 var_mtype = var8;
3959 var9 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value, var_mtype) /* autobox on <self:SeparateCompilerVisitor>*/;
3960 var_value = var9;
3961 var10 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3962 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
3963 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
3964 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var11) /* modelbuilder on <var11:AbstractCompiler(SeparateCompiler)>*/;
3965 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
3966 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var13) /* opt_no_union_attribute on <var13:ToolContext>*/;
3967 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
3968 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
3969 if (var16){
3970 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
3971 var18 = 5;
3972 ((void (*)(val*, long))(var17->class->vft[COLOR_array__Array__with_capacity]))(var17, var18) /* with_capacity on <var17:Array[Object]>*/;
3973 CHECK_NEW_array__Array(var17);
3974 var_ = var17;
3975 if (varonce) {
3976 var19 = varonce;
3977 } else {
3978 var20 = "";
3979 var21 = 0;
3980 var22 = string__NativeString__to_s_with_length(var20, var21);
3981 var19 = var22;
3982 varonce = var19;
3983 }
3984 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
3985 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_recv) /* add on <var_:Array[Object]>*/;
3986 if (varonce23) {
3987 var24 = varonce23;
3988 } else {
3989 var25 = "->attrs[";
3990 var26 = 8;
3991 var27 = string__NativeString__to_s_with_length(var25, var26);
3992 var24 = var27;
3993 varonce23 = var24;
3994 }
3995 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var24) /* add on <var_:Array[Object]>*/;
3996 var28 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
3997 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var28) /* add on <var_:Array[Object]>*/;
3998 if (varonce29) {
3999 var30 = varonce29;
4000 } else {
4001 var31 = "]";
4002 var32 = 1;
4003 var33 = string__NativeString__to_s_with_length(var31, var32);
4004 var30 = var33;
4005 varonce29 = var30;
4006 }
4007 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var30) /* add on <var_:Array[Object]>*/;
4008 var34 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
4009 var_attr = var34;
4010 var35 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
4011 if (varonce36) {
4012 var37 = varonce36;
4013 } else {
4014 var38 = "val*";
4015 var39 = 4;
4016 var40 = string__NativeString__to_s_with_length(var38, var39);
4017 var37 = var40;
4018 varonce36 = var37;
4019 }
4020 var41 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_kernel__Object___33d_61d]))(var35, var37) /* != on <var35:String>*/;
4021 if (var41){
4022 /* <var_mtype:MType> isa MClassType */
4023 cltype = type_model__MClassType.color;
4024 idtype = type_model__MClassType.id;
4025 if(cltype >= var_mtype->type->table_size) {
4026 var42 = 0;
4027 } else {
4028 var42 = var_mtype->type->type_table[cltype] == idtype;
4029 }
4030 if (!var42) {
4031 fprintf(stderr, "Runtime error: %s", "Assert failed");
4032 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1241);
4033 exit(1);
4034 }
4035 if (varonce43) {
4036 var44 = varonce43;
4037 } else {
4038 var45 = "if (";
4039 var46 = 4;
4040 var47 = string__NativeString__to_s_with_length(var45, var46);
4041 var44 = var47;
4042 varonce43 = var44;
4043 }
4044 if (varonce48) {
4045 var49 = varonce48;
4046 } else {
4047 var50 = " != NULL) {";
4048 var51 = 11;
4049 var52 = string__NativeString__to_s_with_length(var50, var51);
4050 var49 = var52;
4051 varonce48 = var49;
4052 }
4053 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
4054 { /* var53 = array_instance Array[Object] */
4055 var54 = 3;
4056 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
4057 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var44;
4058 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_attr;
4059 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var49;
4060 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
4061 CHECK_NEW_array__Array(var53);
4062 }
4063 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
4064 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var56) /* add on <self:SeparateCompilerVisitor>*/;
4065 if (varonce57) {
4066 var58 = varonce57;
4067 } else {
4068 var59 = "((struct instance_";
4069 var60 = 18;
4070 var61 = string__NativeString__to_s_with_length(var59, var60);
4071 var58 = var61;
4072 varonce57 = var58;
4073 }
4074 var62 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
4075 if (varonce63) {
4076 var64 = varonce63;
4077 } else {
4078 var65 = "*)";
4079 var66 = 2;
4080 var67 = string__NativeString__to_s_with_length(var65, var66);
4081 var64 = var67;
4082 varonce63 = var64;
4083 }
4084 if (varonce68) {
4085 var69 = varonce68;
4086 } else {
4087 var70 = ")->value = ";
4088 var71 = 11;
4089 var72 = string__NativeString__to_s_with_length(var70, var71);
4090 var69 = var72;
4091 varonce68 = var69;
4092 }
4093 if (varonce73) {
4094 var74 = varonce73;
4095 } else {
4096 var75 = "; /* ";
4097 var76 = 5;
4098 var77 = string__NativeString__to_s_with_length(var75, var76);
4099 var74 = var77;
4100 varonce73 = var74;
4101 }
4102 if (varonce78) {
4103 var79 = varonce78;
4104 } else {
4105 var80 = " on ";
4106 var81 = 4;
4107 var82 = string__NativeString__to_s_with_length(var80, var81);
4108 var79 = var82;
4109 varonce78 = var79;
4110 }
4111 var83 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
4112 if (varonce84) {
4113 var85 = varonce84;
4114 } else {
4115 var86 = " */";
4116 var87 = 3;
4117 var88 = string__NativeString__to_s_with_length(var86, var87);
4118 var85 = var88;
4119 varonce84 = var85;
4120 }
4121 var89 = NEW_array__Array(&type_array__Arraykernel__Object);
4122 { /* var89 = array_instance Array[Object] */
4123 var90 = 11;
4124 var91 = NEW_array__NativeArray(var90, &type_array__NativeArraykernel__Object);
4125 ((struct instance_array__NativeArray*)var91)->values[0] = (val*) var58;
4126 ((struct instance_array__NativeArray*)var91)->values[1] = (val*) var62;
4127 ((struct instance_array__NativeArray*)var91)->values[2] = (val*) var64;
4128 ((struct instance_array__NativeArray*)var91)->values[3] = (val*) var_attr;
4129 ((struct instance_array__NativeArray*)var91)->values[4] = (val*) var69;
4130 ((struct instance_array__NativeArray*)var91)->values[5] = (val*) var_value;
4131 ((struct instance_array__NativeArray*)var91)->values[6] = (val*) var74;
4132 ((struct instance_array__NativeArray*)var91)->values[7] = (val*) var_a;
4133 ((struct instance_array__NativeArray*)var91)->values[8] = (val*) var79;
4134 ((struct instance_array__NativeArray*)var91)->values[9] = (val*) var83;
4135 ((struct instance_array__NativeArray*)var91)->values[10] = (val*) var85;
4136 ((void (*)(val*, val*, long))(var89->class->vft[COLOR_array__Array__with_native]))(var89, var91, var90) /* with_native on <var89:Array[Object]>*/;
4137 CHECK_NEW_array__Array(var89);
4138 }
4139 var92 = ((val* (*)(val*))(var89->class->vft[COLOR_string__Object__to_s]))(var89) /* to_s on <var89:Array[Object]>*/;
4140 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var92) /* add on <self:SeparateCompilerVisitor>*/;
4141 if (varonce93) {
4142 var94 = varonce93;
4143 } else {
4144 var95 = "} else {";
4145 var96 = 8;
4146 var97 = string__NativeString__to_s_with_length(var95, var96);
4147 var94 = var97;
4148 varonce93 = var94;
4149 }
4150 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var94) /* add on <self:SeparateCompilerVisitor>*/;
4151 var98 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
4152 var99 = ((val* (*)(val*))(var98->class->vft[COLOR_model__MType__as_nullable]))(var98) /* as_nullable on <var98:MClassType>*/;
4153 var100 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value, var99) /* autobox on <self:SeparateCompilerVisitor>*/;
4154 var_value = var100;
4155 if (varonce101) {
4156 var102 = varonce101;
4157 } else {
4158 var103 = " = ";
4159 var104 = 3;
4160 var105 = string__NativeString__to_s_with_length(var103, var104);
4161 var102 = var105;
4162 varonce101 = var102;
4163 }
4164 if (varonce106) {
4165 var107 = varonce106;
4166 } else {
4167 var108 = "; /* ";
4168 var109 = 5;
4169 var110 = string__NativeString__to_s_with_length(var108, var109);
4170 var107 = var110;
4171 varonce106 = var107;
4172 }
4173 if (varonce111) {
4174 var112 = varonce111;
4175 } else {
4176 var113 = " on ";
4177 var114 = 4;
4178 var115 = string__NativeString__to_s_with_length(var113, var114);
4179 var112 = var115;
4180 varonce111 = var112;
4181 }
4182 var116 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
4183 if (varonce117) {
4184 var118 = varonce117;
4185 } else {
4186 var119 = " */";
4187 var120 = 3;
4188 var121 = string__NativeString__to_s_with_length(var119, var120);
4189 var118 = var121;
4190 varonce117 = var118;
4191 }
4192 var122 = NEW_array__Array(&type_array__Arraykernel__Object);
4193 { /* var122 = array_instance Array[Object] */
4194 var123 = 8;
4195 var124 = NEW_array__NativeArray(var123, &type_array__NativeArraykernel__Object);
4196 ((struct instance_array__NativeArray*)var124)->values[0] = (val*) var_attr;
4197 ((struct instance_array__NativeArray*)var124)->values[1] = (val*) var102;
4198 ((struct instance_array__NativeArray*)var124)->values[2] = (val*) var_value;
4199 ((struct instance_array__NativeArray*)var124)->values[3] = (val*) var107;
4200 ((struct instance_array__NativeArray*)var124)->values[4] = (val*) var_a;
4201 ((struct instance_array__NativeArray*)var124)->values[5] = (val*) var112;
4202 ((struct instance_array__NativeArray*)var124)->values[6] = (val*) var116;
4203 ((struct instance_array__NativeArray*)var124)->values[7] = (val*) var118;
4204 ((void (*)(val*, val*, long))(var122->class->vft[COLOR_array__Array__with_native]))(var122, var124, var123) /* with_native on <var122:Array[Object]>*/;
4205 CHECK_NEW_array__Array(var122);
4206 }
4207 var125 = ((val* (*)(val*))(var122->class->vft[COLOR_string__Object__to_s]))(var122) /* to_s on <var122:Array[Object]>*/;
4208 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var125) /* add on <self:SeparateCompilerVisitor>*/;
4209 if (varonce126) {
4210 var127 = varonce126;
4211 } else {
4212 var128 = "}";
4213 var129 = 1;
4214 var130 = string__NativeString__to_s_with_length(var128, var129);
4215 var127 = var130;
4216 varonce126 = var127;
4217 }
4218 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var127) /* add on <self:SeparateCompilerVisitor>*/;
4219 } else {
4220 if (varonce131) {
4221 var132 = varonce131;
4222 } else {
4223 var133 = " = ";
4224 var134 = 3;
4225 var135 = string__NativeString__to_s_with_length(var133, var134);
4226 var132 = var135;
4227 varonce131 = var132;
4228 }
4229 if (varonce136) {
4230 var137 = varonce136;
4231 } else {
4232 var138 = "; /* ";
4233 var139 = 5;
4234 var140 = string__NativeString__to_s_with_length(var138, var139);
4235 var137 = var140;
4236 varonce136 = var137;
4237 }
4238 if (varonce141) {
4239 var142 = varonce141;
4240 } else {
4241 var143 = " on ";
4242 var144 = 4;
4243 var145 = string__NativeString__to_s_with_length(var143, var144);
4244 var142 = var145;
4245 varonce141 = var142;
4246 }
4247 var146 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
4248 if (varonce147) {
4249 var148 = varonce147;
4250 } else {
4251 var149 = " */";
4252 var150 = 3;
4253 var151 = string__NativeString__to_s_with_length(var149, var150);
4254 var148 = var151;
4255 varonce147 = var148;
4256 }
4257 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
4258 { /* var152 = array_instance Array[Object] */
4259 var153 = 8;
4260 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
4261 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var_attr;
4262 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var132;
4263 ((struct instance_array__NativeArray*)var154)->values[2] = (val*) var_value;
4264 ((struct instance_array__NativeArray*)var154)->values[3] = (val*) var137;
4265 ((struct instance_array__NativeArray*)var154)->values[4] = (val*) var_a;
4266 ((struct instance_array__NativeArray*)var154)->values[5] = (val*) var142;
4267 ((struct instance_array__NativeArray*)var154)->values[6] = (val*) var146;
4268 ((struct instance_array__NativeArray*)var154)->values[7] = (val*) var148;
4269 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
4270 CHECK_NEW_array__Array(var152);
4271 }
4272 var155 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
4273 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var155) /* add on <self:SeparateCompilerVisitor>*/;
4274 }
4275 } else {
4276 if (varonce156) {
4277 var157 = varonce156;
4278 } else {
4279 var158 = "->attrs[";
4280 var159 = 8;
4281 var160 = string__NativeString__to_s_with_length(var158, var159);
4282 var157 = var160;
4283 varonce156 = var157;
4284 }
4285 var161 = ((val* (*)(val*))(var_a->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_a) /* const_color on <var_a:MAttribute>*/;
4286 if (varonce162) {
4287 var163 = varonce162;
4288 } else {
4289 var164 = "].";
4290 var165 = 2;
4291 var166 = string__NativeString__to_s_with_length(var164, var165);
4292 var163 = var166;
4293 varonce162 = var163;
4294 }
4295 var167 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_mtype) /* ctypename on <var_mtype:MType>*/;
4296 if (varonce168) {
4297 var169 = varonce168;
4298 } else {
4299 var170 = " = ";
4300 var171 = 3;
4301 var172 = string__NativeString__to_s_with_length(var170, var171);
4302 var169 = var172;
4303 varonce168 = var169;
4304 }
4305 if (varonce173) {
4306 var174 = varonce173;
4307 } else {
4308 var175 = "; /* ";
4309 var176 = 5;
4310 var177 = string__NativeString__to_s_with_length(var175, var176);
4311 var174 = var177;
4312 varonce173 = var174;
4313 }
4314 if (varonce178) {
4315 var179 = varonce178;
4316 } else {
4317 var180 = " on ";
4318 var181 = 4;
4319 var182 = string__NativeString__to_s_with_length(var180, var181);
4320 var179 = var182;
4321 varonce178 = var179;
4322 }
4323 var183 = ((val* (*)(val*))(var_recv->class->vft[COLOR_string__Object__inspect]))(var_recv) /* inspect on <var_recv:RuntimeVariable>*/;
4324 if (varonce184) {
4325 var185 = varonce184;
4326 } else {
4327 var186 = " */";
4328 var187 = 3;
4329 var188 = string__NativeString__to_s_with_length(var186, var187);
4330 var185 = var188;
4331 varonce184 = var185;
4332 }
4333 var189 = NEW_array__Array(&type_array__Arraykernel__Object);
4334 { /* var189 = array_instance Array[Object] */
4335 var190 = 12;
4336 var191 = NEW_array__NativeArray(var190, &type_array__NativeArraykernel__Object);
4337 ((struct instance_array__NativeArray*)var191)->values[0] = (val*) var_recv;
4338 ((struct instance_array__NativeArray*)var191)->values[1] = (val*) var157;
4339 ((struct instance_array__NativeArray*)var191)->values[2] = (val*) var161;
4340 ((struct instance_array__NativeArray*)var191)->values[3] = (val*) var163;
4341 ((struct instance_array__NativeArray*)var191)->values[4] = (val*) var167;
4342 ((struct instance_array__NativeArray*)var191)->values[5] = (val*) var169;
4343 ((struct instance_array__NativeArray*)var191)->values[6] = (val*) var_value;
4344 ((struct instance_array__NativeArray*)var191)->values[7] = (val*) var174;
4345 ((struct instance_array__NativeArray*)var191)->values[8] = (val*) var_a;
4346 ((struct instance_array__NativeArray*)var191)->values[9] = (val*) var179;
4347 ((struct instance_array__NativeArray*)var191)->values[10] = (val*) var183;
4348 ((struct instance_array__NativeArray*)var191)->values[11] = (val*) var185;
4349 ((void (*)(val*, val*, long))(var189->class->vft[COLOR_array__Array__with_native]))(var189, var191, var190) /* with_native on <var189:Array[Object]>*/;
4350 CHECK_NEW_array__Array(var189);
4351 }
4352 var192 = ((val* (*)(val*))(var189->class->vft[COLOR_string__Object__to_s]))(var189) /* to_s on <var189:Array[Object]>*/;
4353 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var192) /* add on <self:SeparateCompilerVisitor>*/;
4354 }
4355 RET_LABEL:;
4356 }
4357 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */
4358 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
4359 separate_compiler__SeparateCompilerVisitor__write_attribute(self, p0, p1, p2);
4360 RET_LABEL:;
4361 }
4362 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: SeparateCompilerVisitor, MClassType): RuntimeVariable */
4363 val* separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
4364 val* var /* : RuntimeVariable */;
4365 val* var_mtype /* var mtype: MClassType */;
4366 static val* varonce;
4367 val* var1 /* : String */;
4368 char* var2 /* : NativeString */;
4369 long var3 /* : Int */;
4370 val* var4 /* : String */;
4371 val* var5 /* : MClass */;
4372 val* var6 /* : String */;
4373 val* var7 /* : Array[Object] */;
4374 long var8 /* : Int */;
4375 val* var9 /* : NativeArray[Object] */;
4376 val* var10 /* : String */;
4377 val* var11 /* : AbstractCompiler */;
4378 val* var_compiler /* var compiler: SeparateCompiler */;
4379 short int var12 /* : Bool */;
4380 short int var13 /* : Bool */;
4381 int cltype;
4382 int idtype;
4383 short int var_ /* var : Bool */;
4384 short int var14 /* : Bool */;
4385 val* var15 /* : nullable Frame */;
4386 val* var16 /* : MPropDef */;
4387 val* var17 /* : MClassDef */;
4388 val* var18 /* : nullable Frame */;
4389 val* var19 /* : Array[RuntimeVariable] */;
4390 val* var20 /* : nullable Object */;
4391 val* var_recv /* var recv: RuntimeVariable */;
4392 val* var21 /* : String */;
4393 val* var_recv_type_info /* var recv_type_info: String */;
4394 val* var22 /* : String */;
4395 short int var23 /* : Bool */;
4396 val* var24 /* : ModelBuilder */;
4397 val* var25 /* : ToolContext */;
4398 val* var26 /* : OptionBool */;
4399 val* var27 /* : nullable Object */;
4400 short int var28 /* : Bool */;
4401 short int var_29 /* var : Bool */;
4402 val* var30 /* : ModelBuilder */;
4403 val* var31 /* : ToolContext */;
4404 val* var32 /* : OptionBool */;
4405 val* var33 /* : nullable Object */;
4406 short int var34 /* : Bool */;
4407 static val* varonce35;
4408 val* var36 /* : String */;
4409 char* var37 /* : NativeString */;
4410 long var38 /* : Int */;
4411 val* var39 /* : String */;
4412 val* var40 /* : MClass */;
4413 val* var41 /* : String */;
4414 static val* varonce42;
4415 val* var43 /* : String */;
4416 char* var44 /* : NativeString */;
4417 long var45 /* : Int */;
4418 val* var46 /* : String */;
4419 static val* varonce47;
4420 val* var48 /* : String */;
4421 char* var49 /* : NativeString */;
4422 long var50 /* : Int */;
4423 val* var51 /* : String */;
4424 static val* varonce52;
4425 val* var53 /* : String */;
4426 char* var54 /* : NativeString */;
4427 long var55 /* : Int */;
4428 val* var56 /* : String */;
4429 val* var57 /* : String */;
4430 static val* varonce58;
4431 val* var59 /* : String */;
4432 char* var60 /* : NativeString */;
4433 long var61 /* : Int */;
4434 val* var62 /* : String */;
4435 val* var63 /* : Array[Object] */;
4436 long var64 /* : Int */;
4437 val* var65 /* : NativeArray[Object] */;
4438 val* var66 /* : String */;
4439 val* var67 /* : RuntimeVariable */;
4440 static val* varonce68;
4441 val* var69 /* : String */;
4442 char* var70 /* : NativeString */;
4443 long var71 /* : Int */;
4444 val* var72 /* : String */;
4445 val* var73 /* : MClass */;
4446 val* var74 /* : String */;
4447 static val* varonce75;
4448 val* var76 /* : String */;
4449 char* var77 /* : NativeString */;
4450 long var78 /* : Int */;
4451 val* var79 /* : String */;
4452 static val* varonce80;
4453 val* var81 /* : String */;
4454 char* var82 /* : NativeString */;
4455 long var83 /* : Int */;
4456 val* var84 /* : String */;
4457 val* var85 /* : String */;
4458 static val* varonce86;
4459 val* var87 /* : String */;
4460 char* var88 /* : NativeString */;
4461 long var89 /* : Int */;
4462 val* var90 /* : String */;
4463 val* var91 /* : Array[Object] */;
4464 long var92 /* : Int */;
4465 val* var93 /* : NativeArray[Object] */;
4466 val* var94 /* : String */;
4467 val* var95 /* : RuntimeVariable */;
4468 val* var96 /* : Set[MType] */;
4469 static val* varonce97;
4470 val* var98 /* : String */;
4471 char* var99 /* : NativeString */;
4472 long var100 /* : Int */;
4473 val* var101 /* : String */;
4474 val* var102 /* : String */;
4475 val* var103 /* : Array[Object] */;
4476 long var104 /* : Int */;
4477 val* var105 /* : NativeArray[Object] */;
4478 val* var106 /* : String */;
4479 static val* varonce107;
4480 val* var108 /* : String */;
4481 char* var109 /* : NativeString */;
4482 long var110 /* : Int */;
4483 val* var111 /* : String */;
4484 val* var112 /* : MClass */;
4485 val* var113 /* : String */;
4486 static val* varonce114;
4487 val* var115 /* : String */;
4488 char* var116 /* : NativeString */;
4489 long var117 /* : Int */;
4490 val* var118 /* : String */;
4491 val* var119 /* : String */;
4492 static val* varonce120;
4493 val* var121 /* : String */;
4494 char* var122 /* : NativeString */;
4495 long var123 /* : Int */;
4496 val* var124 /* : String */;
4497 val* var125 /* : Array[Object] */;
4498 long var126 /* : Int */;
4499 val* var127 /* : NativeArray[Object] */;
4500 val* var128 /* : String */;
4501 val* var129 /* : RuntimeVariable */;
4502 var_mtype = p0;
4503 if (varonce) {
4504 var1 = varonce;
4505 } else {
4506 var2 = "NEW_";
4507 var3 = 4;
4508 var4 = string__NativeString__to_s_with_length(var2, var3);
4509 var1 = var4;
4510 varonce = var1;
4511 }
4512 var5 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
4513 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var5) /* c_name on <var5:MClass>*/;
4514 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
4515 { /* var7 = array_instance Array[Object] */
4516 var8 = 2;
4517 var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
4518 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var1;
4519 ((struct instance_array__NativeArray*)var9)->values[1] = (val*) var6;
4520 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
4521 CHECK_NEW_array__Array(var7);
4522 }
4523 var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
4524 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var10) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4525 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
4526 var_compiler = var11;
4527 /* <var_mtype:MClassType> isa MGenericType */
4528 cltype = type_model__MGenericType.color;
4529 idtype = type_model__MGenericType.id;
4530 if(cltype >= var_mtype->type->table_size) {
4531 var13 = 0;
4532 } else {
4533 var13 = var_mtype->type->type_table[cltype] == idtype;
4534 }
4535 var_ = var13;
4536 if (var13){
4537 var14 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType(MGenericType)>*/;
4538 var12 = var14;
4539 } else {
4540 var12 = var_;
4541 }
4542 if (var12){
4543 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4544 if (var15 == NULL) {
4545 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4546 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1264);
4547 exit(1);
4548 } else {
4549 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var15) /* mpropdef on <var15:nullable Frame>*/;
4550 }
4551 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mclassdef]))(var16) /* mclassdef on <var16:MPropDef>*/;
4552 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var17, var_mtype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
4553 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
4554 if (var18 == NULL) {
4555 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4556 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1265);
4557 exit(1);
4558 } else {
4559 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var18) /* arguments on <var18:nullable Frame>*/;
4560 }
4561 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__first]))(var19) /* first on <var19:Array[RuntimeVariable]>*/;
4562 var_recv = var20;
4563 var21 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
4564 var_recv_type_info = var21;
4565 var22 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
4566 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var22) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4567 var24 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
4568 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var24) /* toolcontext on <var24:ModelBuilder>*/;
4569 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var25) /* opt_phmod_typing on <var25:ToolContext>*/;
4570 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_opts__Option__value]))(var26) /* value on <var26:OptionBool>*/;
4571 var28 = ((struct instance_kernel__Bool*)var27)->value; /* autounbox from nullable Object to Bool */;
4572 var_29 = var28;
4573 if (var28){
4574 var23 = var_29;
4575 } else {
4576 var30 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
4577 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var30) /* toolcontext on <var30:ModelBuilder>*/;
4578 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var31) /* opt_phand_typing on <var31:ToolContext>*/;
4579 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_opts__Option__value]))(var32) /* value on <var32:OptionBool>*/;
4580 var34 = ((struct instance_kernel__Bool*)var33)->value; /* autounbox from nullable Object to Bool */;
4581 var23 = var34;
4582 }
4583 if (var23){
4584 if (varonce35) {
4585 var36 = varonce35;
4586 } else {
4587 var37 = "NEW_";
4588 var38 = 4;
4589 var39 = string__NativeString__to_s_with_length(var37, var38);
4590 var36 = var39;
4591 varonce35 = var36;
4592 }
4593 var40 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
4594 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var40) /* c_name on <var40:MClass>*/;
4595 if (varonce42) {
4596 var43 = varonce42;
4597 } else {
4598 var44 = "(";
4599 var45 = 1;
4600 var46 = string__NativeString__to_s_with_length(var44, var45);
4601 var43 = var46;
4602 varonce42 = var43;
4603 }
4604 if (varonce47) {
4605 var48 = varonce47;
4606 } else {
4607 var49 = "->resolution_table->types[HASH(";
4608 var50 = 31;
4609 var51 = string__NativeString__to_s_with_length(var49, var50);
4610 var48 = var51;
4611 varonce47 = var48;
4612 }
4613 if (varonce52) {
4614 var53 = varonce52;
4615 } else {
4616 var54 = "->resolution_table->mask, ";
4617 var55 = 26;
4618 var56 = string__NativeString__to_s_with_length(var54, var55);
4619 var53 = var56;
4620 varonce52 = var53;
4621 }
4622 var57 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
4623 if (varonce58) {
4624 var59 = varonce58;
4625 } else {
4626 var60 = ")])";
4627 var61 = 3;
4628 var62 = string__NativeString__to_s_with_length(var60, var61);
4629 var59 = var62;
4630 varonce58 = var59;
4631 }
4632 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
4633 { /* var63 = array_instance Array[Object] */
4634 var64 = 9;
4635 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
4636 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var36;
4637 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var41;
4638 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var43;
4639 ((struct instance_array__NativeArray*)var65)->values[3] = (val*) var_recv_type_info;
4640 ((struct instance_array__NativeArray*)var65)->values[4] = (val*) var48;
4641 ((struct instance_array__NativeArray*)var65)->values[5] = (val*) var_recv_type_info;
4642 ((struct instance_array__NativeArray*)var65)->values[6] = (val*) var53;
4643 ((struct instance_array__NativeArray*)var65)->values[7] = (val*) var57;
4644 ((struct instance_array__NativeArray*)var65)->values[8] = (val*) var59;
4645 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
4646 CHECK_NEW_array__Array(var63);
4647 }
4648 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
4649 var67 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var66, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
4650 var = var67;
4651 goto RET_LABEL;
4652 } else {
4653 if (varonce68) {
4654 var69 = varonce68;
4655 } else {
4656 var70 = "NEW_";
4657 var71 = 4;
4658 var72 = string__NativeString__to_s_with_length(var70, var71);
4659 var69 = var72;
4660 varonce68 = var69;
4661 }
4662 var73 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
4663 var74 = ((val* (*)(val*))(var73->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var73) /* c_name on <var73:MClass>*/;
4664 if (varonce75) {
4665 var76 = varonce75;
4666 } else {
4667 var77 = "(";
4668 var78 = 1;
4669 var79 = string__NativeString__to_s_with_length(var77, var78);
4670 var76 = var79;
4671 varonce75 = var76;
4672 }
4673 if (varonce80) {
4674 var81 = varonce80;
4675 } else {
4676 var82 = "->resolution_table->types[";
4677 var83 = 26;
4678 var84 = string__NativeString__to_s_with_length(var82, var83);
4679 var81 = var84;
4680 varonce80 = var81;
4681 }
4682 var85 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
4683 if (varonce86) {
4684 var87 = varonce86;
4685 } else {
4686 var88 = "])";
4687 var89 = 2;
4688 var90 = string__NativeString__to_s_with_length(var88, var89);
4689 var87 = var90;
4690 varonce86 = var87;
4691 }
4692 var91 = NEW_array__Array(&type_array__Arraykernel__Object);
4693 { /* var91 = array_instance Array[Object] */
4694 var92 = 7;
4695 var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
4696 ((struct instance_array__NativeArray*)var93)->values[0] = (val*) var69;
4697 ((struct instance_array__NativeArray*)var93)->values[1] = (val*) var74;
4698 ((struct instance_array__NativeArray*)var93)->values[2] = (val*) var76;
4699 ((struct instance_array__NativeArray*)var93)->values[3] = (val*) var_recv_type_info;
4700 ((struct instance_array__NativeArray*)var93)->values[4] = (val*) var81;
4701 ((struct instance_array__NativeArray*)var93)->values[5] = (val*) var85;
4702 ((struct instance_array__NativeArray*)var93)->values[6] = (val*) var87;
4703 ((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
4704 CHECK_NEW_array__Array(var91);
4705 }
4706 var94 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
4707 var95 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var94, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
4708 var = var95;
4709 goto RET_LABEL;
4710 }
4711 } else {
4712 }
4713 var96 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
4714 ((void (*)(val*, val*))(var96->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var96, var_mtype) /* add on <var96:Set[MType]>*/;
4715 if (varonce97) {
4716 var98 = varonce97;
4717 } else {
4718 var99 = "type_";
4719 var100 = 5;
4720 var101 = string__NativeString__to_s_with_length(var99, var100);
4721 var98 = var101;
4722 varonce97 = var98;
4723 }
4724 var102 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
4725 var103 = NEW_array__Array(&type_array__Arraykernel__Object);
4726 { /* var103 = array_instance Array[Object] */
4727 var104 = 2;
4728 var105 = NEW_array__NativeArray(var104, &type_array__NativeArraykernel__Object);
4729 ((struct instance_array__NativeArray*)var105)->values[0] = (val*) var98;
4730 ((struct instance_array__NativeArray*)var105)->values[1] = (val*) var102;
4731 ((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[Object]>*/;
4732 CHECK_NEW_array__Array(var103);
4733 }
4734 var106 = ((val* (*)(val*))(var103->class->vft[COLOR_string__Object__to_s]))(var103) /* to_s on <var103:Array[Object]>*/;
4735 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var106) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4736 if (varonce107) {
4737 var108 = varonce107;
4738 } else {
4739 var109 = "NEW_";
4740 var110 = 4;
4741 var111 = string__NativeString__to_s_with_length(var109, var110);
4742 var108 = var111;
4743 varonce107 = var108;
4744 }
4745 var112 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
4746 var113 = ((val* (*)(val*))(var112->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var112) /* c_name on <var112:MClass>*/;
4747 if (varonce114) {
4748 var115 = varonce114;
4749 } else {
4750 var116 = "(&type_";
4751 var117 = 7;
4752 var118 = string__NativeString__to_s_with_length(var116, var117);
4753 var115 = var118;
4754 varonce114 = var115;
4755 }
4756 var119 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
4757 if (varonce120) {
4758 var121 = varonce120;
4759 } else {
4760 var122 = ")";
4761 var123 = 1;
4762 var124 = string__NativeString__to_s_with_length(var122, var123);
4763 var121 = var124;
4764 varonce120 = var121;
4765 }
4766 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
4767 { /* var125 = array_instance Array[Object] */
4768 var126 = 5;
4769 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
4770 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var108;
4771 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var113;
4772 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var115;
4773 ((struct instance_array__NativeArray*)var127)->values[3] = (val*) var119;
4774 ((struct instance_array__NativeArray*)var127)->values[4] = (val*) var121;
4775 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
4776 CHECK_NEW_array__Array(var125);
4777 }
4778 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
4779 var129 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var128, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
4780 var = var129;
4781 goto RET_LABEL;
4782 RET_LABEL:;
4783 return var;
4784 }
4785 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
4786 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
4787 val* var /* : RuntimeVariable */;
4788 val* var1 /* : RuntimeVariable */;
4789 var1 = separate_compiler__SeparateCompilerVisitor__init_instance(self, p0);
4790 var = var1;
4791 RET_LABEL:;
4792 return var;
4793 }
4794 /* method separate_compiler#SeparateCompilerVisitor#check_init_instance for (self: SeparateCompilerVisitor, RuntimeVariable, MClassType) */
4795 void separate_compiler__SeparateCompilerVisitor__check_init_instance(val* self, val* p0, val* p1) {
4796 val* var_value /* var value: RuntimeVariable */;
4797 val* var_mtype /* var mtype: MClassType */;
4798 val* var /* : AbstractCompiler */;
4799 val* var1 /* : ModelBuilder */;
4800 val* var2 /* : ToolContext */;
4801 val* var3 /* : OptionBool */;
4802 val* var4 /* : nullable Object */;
4803 short int var5 /* : Bool */;
4804 static val* varonce;
4805 val* var6 /* : String */;
4806 char* var7 /* : NativeString */;
4807 long var8 /* : Int */;
4808 val* var9 /* : String */;
4809 val* var10 /* : MClass */;
4810 val* var11 /* : String */;
4811 val* var12 /* : Array[Object] */;
4812 long var13 /* : Int */;
4813 val* var14 /* : NativeArray[Object] */;
4814 val* var15 /* : String */;
4815 static val* varonce16;
4816 val* var17 /* : String */;
4817 char* var18 /* : NativeString */;
4818 long var19 /* : Int */;
4819 val* var20 /* : String */;
4820 val* var21 /* : MClass */;
4821 val* var22 /* : String */;
4822 static val* varonce23;
4823 val* var24 /* : String */;
4824 char* var25 /* : NativeString */;
4825 long var26 /* : Int */;
4826 val* var27 /* : String */;
4827 static val* varonce28;
4828 val* var29 /* : String */;
4829 char* var30 /* : NativeString */;
4830 long var31 /* : Int */;
4831 val* var32 /* : String */;
4832 val* var33 /* : Array[Object] */;
4833 long var34 /* : Int */;
4834 val* var35 /* : NativeArray[Object] */;
4835 val* var36 /* : String */;
4836 var_value = p0;
4837 var_mtype = p1;
4838 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
4839 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler(SeparateCompiler)>*/;
4840 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
4841 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var2) /* opt_no_check_initialization on <var2:ToolContext>*/;
4842 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
4843 var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
4844 if (var5){
4845 goto RET_LABEL;
4846 } else {
4847 }
4848 if (varonce) {
4849 var6 = varonce;
4850 } else {
4851 var7 = "CHECK_NEW_";
4852 var8 = 10;
4853 var9 = string__NativeString__to_s_with_length(var7, var8);
4854 var6 = var9;
4855 varonce = var6;
4856 }
4857 var10 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
4858 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var10) /* c_name on <var10:MClass>*/;
4859 var12 = NEW_array__Array(&type_array__Arraykernel__Object);
4860 { /* var12 = array_instance Array[Object] */
4861 var13 = 2;
4862 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
4863 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var6;
4864 ((struct instance_array__NativeArray*)var14)->values[1] = (val*) var11;
4865 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
4866 CHECK_NEW_array__Array(var12);
4867 }
4868 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
4869 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var15) /* require_declaration on <self:SeparateCompilerVisitor>*/;
4870 if (varonce16) {
4871 var17 = varonce16;
4872 } else {
4873 var18 = "CHECK_NEW_";
4874 var19 = 10;
4875 var20 = string__NativeString__to_s_with_length(var18, var19);
4876 var17 = var20;
4877 varonce16 = var17;
4878 }
4879 var21 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
4880 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var21) /* c_name on <var21:MClass>*/;
4881 if (varonce23) {
4882 var24 = varonce23;
4883 } else {
4884 var25 = "(";
4885 var26 = 1;
4886 var27 = string__NativeString__to_s_with_length(var25, var26);
4887 var24 = var27;
4888 varonce23 = var24;
4889 }
4890 if (varonce28) {
4891 var29 = varonce28;
4892 } else {
4893 var30 = ");";
4894 var31 = 2;
4895 var32 = string__NativeString__to_s_with_length(var30, var31);
4896 var29 = var32;
4897 varonce28 = var29;
4898 }
4899 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
4900 { /* var33 = array_instance Array[Object] */
4901 var34 = 5;
4902 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
4903 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var17;
4904 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var22;
4905 ((struct instance_array__NativeArray*)var35)->values[2] = (val*) var24;
4906 ((struct instance_array__NativeArray*)var35)->values[3] = (val*) var_value;
4907 ((struct instance_array__NativeArray*)var35)->values[4] = (val*) var29;
4908 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
4909 CHECK_NEW_array__Array(var33);
4910 }
4911 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
4912 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var36) /* add on <self:SeparateCompilerVisitor>*/;
4913 RET_LABEL:;
4914 }
4915 /* method separate_compiler#SeparateCompilerVisitor#check_init_instance for (self: Object, RuntimeVariable, MClassType) */
4916 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__check_init_instance(val* self, val* p0, val* p1) {
4917 separate_compiler__SeparateCompilerVisitor__check_init_instance(self, p0, p1);
4918 RET_LABEL:;
4919 }
4920 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: SeparateCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
4921 val* separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
4922 val* var /* : RuntimeVariable */;
4923 val* var_value /* var value: RuntimeVariable */;
4924 val* var_mtype /* var mtype: MType */;
4925 val* var_tag /* var tag: String */;
4926 static val* varonce;
4927 val* var1 /* : String */;
4928 char* var2 /* : NativeString */;
4929 long var3 /* : Int */;
4930 val* var4 /* : String */;
4931 val* var5 /* : String */;
4932 static val* varonce6;
4933 val* var7 /* : String */;
4934 char* var8 /* : NativeString */;
4935 long var9 /* : Int */;
4936 val* var10 /* : String */;
4937 static val* varonce11;
4938 val* var12 /* : String */;
4939 char* var13 /* : NativeString */;
4940 long var14 /* : Int */;
4941 val* var15 /* : String */;
4942 val* var16 /* : Array[Object] */;
4943 long var17 /* : Int */;
4944 val* var18 /* : NativeArray[Object] */;
4945 val* var19 /* : String */;
4946 val* var20 /* : AbstractCompiler */;
4947 val* var_compiler /* var compiler: SeparateCompiler */;
4948 val* var21 /* : nullable Frame */;
4949 val* var22 /* : Array[RuntimeVariable] */;
4950 val* var23 /* : nullable Object */;
4951 val* var_recv /* var recv: RuntimeVariable */;
4952 val* var24 /* : String */;
4953 val* var_recv_type_info /* var recv_type_info: String */;
4954 val* var25 /* : MClassType */;
4955 val* var26 /* : RuntimeVariable */;
4956 val* var_res /* var res: RuntimeVariable */;
4957 static val* varonce27;
4958 val* var28 /* : String */;
4959 char* var29 /* : NativeString */;
4960 long var30 /* : Int */;
4961 val* var31 /* : String */;
4962 val* var32 /* : String */;
4963 val* var_cltype /* var cltype: String */;
4964 static val* varonce33;
4965 val* var34 /* : String */;
4966 char* var35 /* : NativeString */;
4967 long var36 /* : Int */;
4968 val* var37 /* : String */;
4969 static val* varonce38;
4970 val* var39 /* : String */;
4971 char* var40 /* : NativeString */;
4972 long var41 /* : Int */;
4973 val* var42 /* : String */;
4974 val* var43 /* : Array[Object] */;
4975 long var44 /* : Int */;
4976 val* var45 /* : NativeArray[Object] */;
4977 val* var46 /* : String */;
4978 static val* varonce47;
4979 val* var48 /* : String */;
4980 char* var49 /* : NativeString */;
4981 long var50 /* : Int */;
4982 val* var51 /* : String */;
4983 val* var52 /* : String */;
4984 val* var_idtype /* var idtype: String */;
4985 static val* varonce53;
4986 val* var54 /* : String */;
4987 char* var55 /* : NativeString */;
4988 long var56 /* : Int */;
4989 val* var57 /* : String */;
4990 static val* varonce58;
4991 val* var59 /* : String */;
4992 char* var60 /* : NativeString */;
4993 long var61 /* : Int */;
4994 val* var62 /* : String */;
4995 val* var63 /* : Array[Object] */;
4996 long var64 /* : Int */;
4997 val* var65 /* : NativeArray[Object] */;
4998 val* var66 /* : String */;
4999 short int var67 /* : Bool */;
5000 short int var_maybe_null /* var maybe_null: Bool */;
5001 static val* varonce68;
5002 val* var69 /* : String */;
5003 char* var70 /* : NativeString */;
5004 long var71 /* : Int */;
5005 val* var72 /* : String */;
5006 val* var_accept_null /* var accept_null: String */;
5007 val* var_ntype /* var ntype: MType */;
5008 short int var73 /* : Bool */;
5009 int cltype;
5010 int idtype;
5011 val* var74 /* : MType */;
5012 static val* varonce75;
5013 val* var76 /* : String */;
5014 char* var77 /* : NativeString */;
5015 long var78 /* : Int */;
5016 val* var79 /* : String */;
5017 val* var80 /* : MType */;
5018 val* var81 /* : nullable Frame */;
5019 val* var82 /* : MPropDef */;
5020 val* var83 /* : MClassDef */;
5021 val* var84 /* : MModule */;
5022 val* var85 /* : nullable Frame */;
5023 val* var86 /* : MPropDef */;
5024 val* var87 /* : MClassDef */;
5025 val* var88 /* : MClassType */;
5026 short int var89 /* : Bool */;
5027 static val* varonce90;
5028 val* var91 /* : String */;
5029 char* var92 /* : NativeString */;
5030 long var93 /* : Int */;
5031 val* var94 /* : String */;
5032 val* var95 /* : String */;
5033 static val* varonce96;
5034 val* var97 /* : String */;
5035 char* var98 /* : NativeString */;
5036 long var99 /* : Int */;
5037 val* var100 /* : String */;
5038 static val* varonce101;
5039 val* var102 /* : String */;
5040 char* var103 /* : NativeString */;
5041 long var104 /* : Int */;
5042 val* var105 /* : String */;
5043 val* var106 /* : Array[Object] */;
5044 long var107 /* : Int */;
5045 val* var108 /* : NativeArray[Object] */;
5046 val* var109 /* : String */;
5047 val* var110 /* : ModelBuilder */;
5048 val* var111 /* : ToolContext */;
5049 val* var112 /* : OptionBool */;
5050 val* var113 /* : nullable Object */;
5051 short int var114 /* : Bool */;
5052 val* var115 /* : AbstractCompiler */;
5053 val* var116 /* : HashMap[String, Int] */;
5054 val* var_ /* var : HashMap[String, Int] */;
5055 val* var_117 /* var : String */;
5056 val* var118 /* : nullable Object */;
5057 long var119 /* : Int */;
5058 long var120 /* : Int */;
5059 long var122 /* : Int */;
5060 long var123 /* : Int */;
5061 val* var124 /* : nullable Object */;
5062 static val* varonce125;
5063 val* var126 /* : String */;
5064 char* var127 /* : NativeString */;
5065 long var128 /* : Int */;
5066 val* var129 /* : String */;
5067 static val* varonce130;
5068 val* var131 /* : String */;
5069 char* var132 /* : NativeString */;
5070 long var133 /* : Int */;
5071 val* var134 /* : String */;
5072 val* var135 /* : Array[Object] */;
5073 long var136 /* : Int */;
5074 val* var137 /* : NativeArray[Object] */;
5075 val* var138 /* : String */;
5076 short int var139 /* : Bool */;
5077 static val* varonce140;
5078 val* var141 /* : String */;
5079 char* var142 /* : NativeString */;
5080 long var143 /* : Int */;
5081 val* var144 /* : String */;
5082 val* var145 /* : String */;
5083 val* var_type_struct /* var type_struct: String */;
5084 static val* varonce146;
5085 val* var147 /* : String */;
5086 char* var148 /* : NativeString */;
5087 long var149 /* : Int */;
5088 val* var150 /* : String */;
5089 static val* varonce151;
5090 val* var152 /* : String */;
5091 char* var153 /* : NativeString */;
5092 long var154 /* : Int */;
5093 val* var155 /* : String */;
5094 val* var156 /* : Array[Object] */;
5095 long var157 /* : Int */;
5096 val* var158 /* : NativeArray[Object] */;
5097 val* var159 /* : String */;
5098 val* var160 /* : nullable Frame */;
5099 val* var161 /* : MPropDef */;
5100 val* var162 /* : MClassDef */;
5101 val* var163 /* : String */;
5102 short int var164 /* : Bool */;
5103 val* var165 /* : ModelBuilder */;
5104 val* var166 /* : ToolContext */;
5105 val* var167 /* : OptionBool */;
5106 val* var168 /* : nullable Object */;
5107 short int var169 /* : Bool */;
5108 short int var_170 /* var : Bool */;
5109 val* var171 /* : ModelBuilder */;
5110 val* var172 /* : ToolContext */;
5111 val* var173 /* : OptionBool */;
5112 val* var174 /* : nullable Object */;
5113 short int var175 /* : Bool */;
5114 static val* varonce176;
5115 val* var177 /* : String */;
5116 char* var178 /* : NativeString */;
5117 long var179 /* : Int */;
5118 val* var180 /* : String */;
5119 static val* varonce181;
5120 val* var182 /* : String */;
5121 char* var183 /* : NativeString */;
5122 long var184 /* : Int */;
5123 val* var185 /* : String */;
5124 static val* varonce186;
5125 val* var187 /* : String */;
5126 char* var188 /* : NativeString */;
5127 long var189 /* : Int */;
5128 val* var190 /* : String */;
5129 val* var191 /* : String */;
5130 static val* varonce192;
5131 val* var193 /* : String */;
5132 char* var194 /* : NativeString */;
5133 long var195 /* : Int */;
5134 val* var196 /* : String */;
5135 val* var197 /* : Array[Object] */;
5136 long var198 /* : Int */;
5137 val* var199 /* : NativeArray[Object] */;
5138 val* var200 /* : String */;
5139 static val* varonce201;
5140 val* var202 /* : String */;
5141 char* var203 /* : NativeString */;
5142 long var204 /* : Int */;
5143 val* var205 /* : String */;
5144 static val* varonce206;
5145 val* var207 /* : String */;
5146 char* var208 /* : NativeString */;
5147 long var209 /* : Int */;
5148 val* var210 /* : String */;
5149 val* var211 /* : String */;
5150 static val* varonce212;
5151 val* var213 /* : String */;
5152 char* var214 /* : NativeString */;
5153 long var215 /* : Int */;
5154 val* var216 /* : String */;
5155 val* var217 /* : Array[Object] */;
5156 long var218 /* : Int */;
5157 val* var219 /* : NativeArray[Object] */;
5158 val* var220 /* : String */;
5159 val* var221 /* : ModelBuilder */;
5160 val* var222 /* : ToolContext */;
5161 val* var223 /* : OptionBool */;
5162 val* var224 /* : nullable Object */;
5163 short int var225 /* : Bool */;
5164 val* var226 /* : AbstractCompiler */;
5165 val* var227 /* : HashMap[String, Int] */;
5166 val* var_228 /* var : HashMap[String, Int] */;
5167 val* var_229 /* var : String */;
5168 val* var230 /* : nullable Object */;
5169 long var231 /* : Int */;
5170 long var232 /* : Int */;
5171 long var234 /* : Int */;
5172 long var235 /* : Int */;
5173 val* var236 /* : nullable Object */;
5174 static val* varonce237;
5175 val* var238 /* : String */;
5176 char* var239 /* : NativeString */;
5177 long var240 /* : Int */;
5178 val* var241 /* : String */;
5179 static val* varonce242;
5180 val* var243 /* : String */;
5181 char* var244 /* : NativeString */;
5182 long var245 /* : Int */;
5183 val* var246 /* : String */;
5184 val* var247 /* : Array[Object] */;
5185 long var248 /* : Int */;
5186 val* var249 /* : NativeArray[Object] */;
5187 val* var250 /* : String */;
5188 static val* varonce251;
5189 val* var252 /* : String */;
5190 char* var253 /* : NativeString */;
5191 long var254 /* : Int */;
5192 val* var255 /* : String */;
5193 static val* varonce256;
5194 val* var257 /* : String */;
5195 char* var258 /* : NativeString */;
5196 long var259 /* : Int */;
5197 val* var260 /* : String */;
5198 val* var261 /* : Array[Object] */;
5199 long var262 /* : Int */;
5200 val* var263 /* : NativeArray[Object] */;
5201 val* var264 /* : String */;
5202 static val* varonce265;
5203 val* var266 /* : String */;
5204 char* var267 /* : NativeString */;
5205 long var268 /* : Int */;
5206 val* var269 /* : String */;
5207 static val* varonce270;
5208 val* var271 /* : String */;
5209 char* var272 /* : NativeString */;
5210 long var273 /* : Int */;
5211 val* var274 /* : String */;
5212 val* var275 /* : Array[Object] */;
5213 long var276 /* : Int */;
5214 val* var277 /* : NativeArray[Object] */;
5215 val* var278 /* : String */;
5216 short int var279 /* : Bool */;
5217 short int var_280 /* var : Bool */;
5218 static val* varonce281;
5219 val* var282 /* : String */;
5220 char* var283 /* : NativeString */;
5221 long var284 /* : Int */;
5222 val* var285 /* : String */;
5223 short int var286 /* : Bool */;
5224 static val* varonce287;
5225 val* var288 /* : String */;
5226 char* var289 /* : NativeString */;
5227 long var290 /* : Int */;
5228 val* var291 /* : String */;
5229 val* var292 /* : String */;
5230 val* var_is_nullable /* var is_nullable: String */;
5231 static val* varonce293;
5232 val* var294 /* : String */;
5233 char* var295 /* : NativeString */;
5234 long var296 /* : Int */;
5235 val* var297 /* : String */;
5236 static val* varonce298;
5237 val* var299 /* : String */;
5238 char* var300 /* : NativeString */;
5239 long var301 /* : Int */;
5240 val* var302 /* : String */;
5241 val* var303 /* : Array[Object] */;
5242 long var304 /* : Int */;
5243 val* var305 /* : NativeArray[Object] */;
5244 val* var306 /* : String */;
5245 static val* varonce307;
5246 val* var308 /* : String */;
5247 char* var309 /* : NativeString */;
5248 long var310 /* : Int */;
5249 val* var311 /* : String */;
5250 static val* varonce312;
5251 val* var313 /* : String */;
5252 char* var314 /* : NativeString */;
5253 long var315 /* : Int */;
5254 val* var316 /* : String */;
5255 val* var317 /* : Array[Object] */;
5256 long var318 /* : Int */;
5257 val* var319 /* : NativeArray[Object] */;
5258 val* var320 /* : String */;
5259 val* var321 /* : String */;
5260 short int var322 /* : Bool */;
5261 int cltype323;
5262 int idtype324;
5263 val* var325 /* : Set[MType] */;
5264 static val* varonce326;
5265 val* var327 /* : String */;
5266 char* var328 /* : NativeString */;
5267 long var329 /* : Int */;
5268 val* var330 /* : String */;
5269 val* var331 /* : String */;
5270 val* var332 /* : Array[Object] */;
5271 long var333 /* : Int */;
5272 val* var334 /* : NativeArray[Object] */;
5273 val* var335 /* : String */;
5274 static val* varonce336;
5275 val* var337 /* : String */;
5276 char* var338 /* : NativeString */;
5277 long var339 /* : Int */;
5278 val* var340 /* : String */;
5279 val* var341 /* : String */;
5280 static val* varonce342;
5281 val* var343 /* : String */;
5282 char* var344 /* : NativeString */;
5283 long var345 /* : Int */;
5284 val* var346 /* : String */;
5285 val* var347 /* : Array[Object] */;
5286 long var348 /* : Int */;
5287 val* var349 /* : NativeArray[Object] */;
5288 val* var350 /* : String */;
5289 static val* varonce351;
5290 val* var352 /* : String */;
5291 char* var353 /* : NativeString */;
5292 long var354 /* : Int */;
5293 val* var355 /* : String */;
5294 val* var356 /* : String */;
5295 static val* varonce357;
5296 val* var358 /* : String */;
5297 char* var359 /* : NativeString */;
5298 long var360 /* : Int */;
5299 val* var361 /* : String */;
5300 val* var362 /* : Array[Object] */;
5301 long var363 /* : Int */;
5302 val* var364 /* : NativeArray[Object] */;
5303 val* var365 /* : String */;
5304 val* var366 /* : ModelBuilder */;
5305 val* var367 /* : ToolContext */;
5306 val* var368 /* : OptionBool */;
5307 val* var369 /* : nullable Object */;
5308 short int var370 /* : Bool */;
5309 val* var371 /* : AbstractCompiler */;
5310 val* var372 /* : HashMap[String, Int] */;
5311 val* var_373 /* var : HashMap[String, Int] */;
5312 val* var_374 /* var : String */;
5313 val* var375 /* : nullable Object */;
5314 long var376 /* : Int */;
5315 long var377 /* : Int */;
5316 long var379 /* : Int */;
5317 long var380 /* : Int */;
5318 val* var381 /* : nullable Object */;
5319 static val* varonce382;
5320 val* var383 /* : String */;
5321 char* var384 /* : NativeString */;
5322 long var385 /* : Int */;
5323 val* var386 /* : String */;
5324 static val* varonce387;
5325 val* var388 /* : String */;
5326 char* var389 /* : NativeString */;
5327 long var390 /* : Int */;
5328 val* var391 /* : String */;
5329 val* var392 /* : Array[Object] */;
5330 long var393 /* : Int */;
5331 val* var394 /* : NativeArray[Object] */;
5332 val* var395 /* : String */;
5333 static val* varonce396;
5334 val* var397 /* : String */;
5335 char* var398 /* : NativeString */;
5336 long var399 /* : Int */;
5337 val* var400 /* : String */;
5338 static val* varonce401;
5339 val* var402 /* : String */;
5340 char* var403 /* : NativeString */;
5341 long var404 /* : Int */;
5342 val* var405 /* : String */;
5343 val* var406 /* : String */;
5344 static val* varonce407;
5345 val* var408 /* : String */;
5346 char* var409 /* : NativeString */;
5347 long var410 /* : Int */;
5348 val* var411 /* : String */;
5349 val* var412 /* : Array[Object] */;
5350 long var413 /* : Int */;
5351 val* var414 /* : NativeArray[Object] */;
5352 val* var415 /* : String */;
5353 static val* varonce416;
5354 val* var417 /* : String */;
5355 char* var418 /* : NativeString */;
5356 long var419 /* : Int */;
5357 val* var420 /* : String */;
5358 static val* varonce421;
5359 val* var422 /* : String */;
5360 char* var423 /* : NativeString */;
5361 long var424 /* : Int */;
5362 val* var425 /* : String */;
5363 val* var426 /* : Array[Object] */;
5364 long var427 /* : Int */;
5365 val* var428 /* : NativeArray[Object] */;
5366 val* var429 /* : String */;
5367 static val* varonce430;
5368 val* var431 /* : String */;
5369 char* var432 /* : NativeString */;
5370 long var433 /* : Int */;
5371 val* var434 /* : String */;
5372 static val* varonce435;
5373 val* var436 /* : String */;
5374 char* var437 /* : NativeString */;
5375 long var438 /* : Int */;
5376 val* var439 /* : String */;
5377 val* var440 /* : Array[Object] */;
5378 long var441 /* : Int */;
5379 val* var442 /* : NativeArray[Object] */;
5380 val* var443 /* : String */;
5381 static val* varonce444;
5382 val* var445 /* : String */;
5383 char* var446 /* : NativeString */;
5384 long var447 /* : Int */;
5385 val* var448 /* : String */;
5386 val* var449 /* : String */;
5387 val* var_value_type_info /* var value_type_info: String */;
5388 short int var450 /* : Bool */;
5389 val* var451 /* : ModelBuilder */;
5390 val* var452 /* : ToolContext */;
5391 val* var453 /* : OptionBool */;
5392 val* var454 /* : nullable Object */;
5393 short int var455 /* : Bool */;
5394 short int var_456 /* var : Bool */;
5395 val* var457 /* : ModelBuilder */;
5396 val* var458 /* : ToolContext */;
5397 val* var459 /* : OptionBool */;
5398 val* var460 /* : nullable Object */;
5399 short int var461 /* : Bool */;
5400 static val* varonce462;
5401 val* var463 /* : String */;
5402 char* var464 /* : NativeString */;
5403 long var465 /* : Int */;
5404 val* var466 /* : String */;
5405 static val* varonce467;
5406 val* var468 /* : String */;
5407 char* var469 /* : NativeString */;
5408 long var470 /* : Int */;
5409 val* var471 /* : String */;
5410 static val* varonce472;
5411 val* var473 /* : String */;
5412 char* var474 /* : NativeString */;
5413 long var475 /* : Int */;
5414 val* var476 /* : String */;
5415 val* var477 /* : Array[Object] */;
5416 long var478 /* : Int */;
5417 val* var479 /* : NativeArray[Object] */;
5418 val* var480 /* : String */;
5419 static val* varonce481;
5420 val* var482 /* : String */;
5421 char* var483 /* : NativeString */;
5422 long var484 /* : Int */;
5423 val* var485 /* : String */;
5424 static val* varonce486;
5425 val* var487 /* : String */;
5426 char* var488 /* : NativeString */;
5427 long var489 /* : Int */;
5428 val* var490 /* : String */;
5429 static val* varonce491;
5430 val* var492 /* : String */;
5431 char* var493 /* : NativeString */;
5432 long var494 /* : Int */;
5433 val* var495 /* : String */;
5434 val* var496 /* : Array[Object] */;
5435 long var497 /* : Int */;
5436 val* var498 /* : NativeArray[Object] */;
5437 val* var499 /* : String */;
5438 static val* varonce500;
5439 val* var501 /* : String */;
5440 char* var502 /* : NativeString */;
5441 long var503 /* : Int */;
5442 val* var504 /* : String */;
5443 val* var505 /* : Array[Object] */;
5444 long var506 /* : Int */;
5445 val* var507 /* : NativeArray[Object] */;
5446 val* var508 /* : String */;
5447 static val* varonce509;
5448 val* var510 /* : String */;
5449 char* var511 /* : NativeString */;
5450 long var512 /* : Int */;
5451 val* var513 /* : String */;
5452 static val* varonce514;
5453 val* var515 /* : String */;
5454 char* var516 /* : NativeString */;
5455 long var517 /* : Int */;
5456 val* var518 /* : String */;
5457 static val* varonce519;
5458 val* var520 /* : String */;
5459 char* var521 /* : NativeString */;
5460 long var522 /* : Int */;
5461 val* var523 /* : String */;
5462 static val* varonce524;
5463 val* var525 /* : String */;
5464 char* var526 /* : NativeString */;
5465 long var527 /* : Int */;
5466 val* var528 /* : String */;
5467 static val* varonce529;
5468 val* var530 /* : String */;
5469 char* var531 /* : NativeString */;
5470 long var532 /* : Int */;
5471 val* var533 /* : String */;
5472 val* var534 /* : Array[Object] */;
5473 long var535 /* : Int */;
5474 val* var536 /* : NativeArray[Object] */;
5475 val* var537 /* : String */;
5476 static val* varonce538;
5477 val* var539 /* : String */;
5478 char* var540 /* : NativeString */;
5479 long var541 /* : Int */;
5480 val* var542 /* : String */;
5481 static val* varonce543;
5482 val* var544 /* : String */;
5483 char* var545 /* : NativeString */;
5484 long var546 /* : Int */;
5485 val* var547 /* : String */;
5486 var_value = p0;
5487 var_mtype = p1;
5488 var_tag = p2;
5489 if (varonce) {
5490 var1 = varonce;
5491 } else {
5492 var2 = "/* ";
5493 var3 = 3;
5494 var4 = string__NativeString__to_s_with_length(var2, var3);
5495 var1 = var4;
5496 varonce = var1;
5497 }
5498 var5 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
5499 if (varonce6) {
5500 var7 = varonce6;
5501 } else {
5502 var8 = " isa ";
5503 var9 = 5;
5504 var10 = string__NativeString__to_s_with_length(var8, var9);
5505 var7 = var10;
5506 varonce6 = var7;
5507 }
5508 if (varonce11) {
5509 var12 = varonce11;
5510 } else {
5511 var13 = " */";
5512 var14 = 3;
5513 var15 = string__NativeString__to_s_with_length(var13, var14);
5514 var12 = var15;
5515 varonce11 = var12;
5516 }
5517 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
5518 { /* var16 = array_instance Array[Object] */
5519 var17 = 5;
5520 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
5521 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var1;
5522 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var5;
5523 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var7;
5524 ((struct instance_array__NativeArray*)var18)->values[3] = (val*) var_mtype;
5525 ((struct instance_array__NativeArray*)var18)->values[4] = (val*) var12;
5526 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
5527 CHECK_NEW_array__Array(var16);
5528 }
5529 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
5530 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var19) /* add on <self:SeparateCompilerVisitor>*/;
5531 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5532 var_compiler = var20;
5533 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5534 if (var21 == NULL) {
5535 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5536 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1291);
5537 exit(1);
5538 } else {
5539 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var21) /* arguments on <var21:nullable Frame>*/;
5540 }
5541 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__first]))(var22) /* first on <var22:Array[RuntimeVariable]>*/;
5542 var_recv = var23;
5543 var24 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
5544 var_recv_type_info = var24;
5545 var25 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
5546 var26 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var25) /* new_var on <self:SeparateCompilerVisitor>*/;
5547 var_res = var26;
5548 if (varonce27) {
5549 var28 = varonce27;
5550 } else {
5551 var29 = "cltype";
5552 var30 = 6;
5553 var31 = string__NativeString__to_s_with_length(var29, var30);
5554 var28 = var31;
5555 varonce27 = var28;
5556 }
5557 var32 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var28) /* get_name on <self:SeparateCompilerVisitor>*/;
5558 var_cltype = var32;
5559 if (varonce33) {
5560 var34 = varonce33;
5561 } else {
5562 var35 = "int ";
5563 var36 = 4;
5564 var37 = string__NativeString__to_s_with_length(var35, var36);
5565 var34 = var37;
5566 varonce33 = var34;
5567 }
5568 if (varonce38) {
5569 var39 = varonce38;
5570 } else {
5571 var40 = ";";
5572 var41 = 1;
5573 var42 = string__NativeString__to_s_with_length(var40, var41);
5574 var39 = var42;
5575 varonce38 = var39;
5576 }
5577 var43 = NEW_array__Array(&type_array__Arraykernel__Object);
5578 { /* var43 = array_instance Array[Object] */
5579 var44 = 3;
5580 var45 = NEW_array__NativeArray(var44, &type_array__NativeArraykernel__Object);
5581 ((struct instance_array__NativeArray*)var45)->values[0] = (val*) var34;
5582 ((struct instance_array__NativeArray*)var45)->values[1] = (val*) var_cltype;
5583 ((struct instance_array__NativeArray*)var45)->values[2] = (val*) var39;
5584 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_array__Array__with_native]))(var43, var45, var44) /* with_native on <var43:Array[Object]>*/;
5585 CHECK_NEW_array__Array(var43);
5586 }
5587 var46 = ((val* (*)(val*))(var43->class->vft[COLOR_string__Object__to_s]))(var43) /* to_s on <var43:Array[Object]>*/;
5588 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var46) /* add_decl on <self:SeparateCompilerVisitor>*/;
5589 if (varonce47) {
5590 var48 = varonce47;
5591 } else {
5592 var49 = "idtype";
5593 var50 = 6;
5594 var51 = string__NativeString__to_s_with_length(var49, var50);
5595 var48 = var51;
5596 varonce47 = var48;
5597 }
5598 var52 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var48) /* get_name on <self:SeparateCompilerVisitor>*/;
5599 var_idtype = var52;
5600 if (varonce53) {
5601 var54 = varonce53;
5602 } else {
5603 var55 = "int ";
5604 var56 = 4;
5605 var57 = string__NativeString__to_s_with_length(var55, var56);
5606 var54 = var57;
5607 varonce53 = var54;
5608 }
5609 if (varonce58) {
5610 var59 = varonce58;
5611 } else {
5612 var60 = ";";
5613 var61 = 1;
5614 var62 = string__NativeString__to_s_with_length(var60, var61);
5615 var59 = var62;
5616 varonce58 = var59;
5617 }
5618 var63 = NEW_array__Array(&type_array__Arraykernel__Object);
5619 { /* var63 = array_instance Array[Object] */
5620 var64 = 3;
5621 var65 = NEW_array__NativeArray(var64, &type_array__NativeArraykernel__Object);
5622 ((struct instance_array__NativeArray*)var65)->values[0] = (val*) var54;
5623 ((struct instance_array__NativeArray*)var65)->values[1] = (val*) var_idtype;
5624 ((struct instance_array__NativeArray*)var65)->values[2] = (val*) var59;
5625 ((void (*)(val*, val*, long))(var63->class->vft[COLOR_array__Array__with_native]))(var63, var65, var64) /* with_native on <var63:Array[Object]>*/;
5626 CHECK_NEW_array__Array(var63);
5627 }
5628 var66 = ((val* (*)(val*))(var63->class->vft[COLOR_string__Object__to_s]))(var63) /* to_s on <var63:Array[Object]>*/;
5629 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var66) /* add_decl on <self:SeparateCompilerVisitor>*/;
5630 var67 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__maybe_null]))(self, var_value) /* maybe_null on <self:SeparateCompilerVisitor>*/;
5631 var_maybe_null = var67;
5632 if (varonce68) {
5633 var69 = varonce68;
5634 } else {
5635 var70 = "0";
5636 var71 = 1;
5637 var72 = string__NativeString__to_s_with_length(var70, var71);
5638 var69 = var72;
5639 varonce68 = var69;
5640 }
5641 var_accept_null = var69;
5642 var_ntype = var_mtype;
5643 /* <var_ntype:MType> isa MNullableType */
5644 cltype = type_model__MNullableType.color;
5645 idtype = type_model__MNullableType.id;
5646 if(cltype >= var_ntype->type->table_size) {
5647 var73 = 0;
5648 } else {
5649 var73 = var_ntype->type->type_table[cltype] == idtype;
5650 }
5651 if (var73){
5652 var74 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_model__MNullableType__mtype]))(var_ntype) /* mtype on <var_ntype:MType(MNullableType)>*/;
5653 var_ntype = var74;
5654 if (varonce75) {
5655 var76 = varonce75;
5656 } else {
5657 var77 = "1";
5658 var78 = 1;
5659 var79 = string__NativeString__to_s_with_length(var77, var78);
5660 var76 = var79;
5661 varonce75 = var76;
5662 }
5663 var_accept_null = var76;
5664 } else {
5665 }
5666 var80 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
5667 var81 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5668 if (var81 == NULL) {
5669 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5670 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1309);
5671 exit(1);
5672 } else {
5673 var82 = ((val* (*)(val*))(var81->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var81) /* mpropdef on <var81:nullable Frame>*/;
5674 }
5675 var83 = ((val* (*)(val*))(var82->class->vft[COLOR_model__MPropDef__mclassdef]))(var82) /* mclassdef on <var82:MPropDef>*/;
5676 var84 = ((val* (*)(val*))(var83->class->vft[COLOR_model__MClassDef__mmodule]))(var83) /* mmodule on <var83:MClassDef>*/;
5677 var85 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5678 if (var85 == NULL) {
5679 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5680 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1309);
5681 exit(1);
5682 } else {
5683 var86 = ((val* (*)(val*))(var85->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var85) /* mpropdef on <var85:nullable Frame>*/;
5684 }
5685 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_model__MPropDef__mclassdef]))(var86) /* mclassdef on <var86:MPropDef>*/;
5686 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MClassDef__bound_mtype]))(var87) /* bound_mtype on <var87:MClassDef>*/;
5687 var89 = ((short int (*)(val*, val*, val*, val*))(var80->class->vft[COLOR_model__MType__is_subtype]))(var80, var84, var88, var_mtype) /* is_subtype on <var80:MType>*/;
5688 if (var89){
5689 if (varonce90) {
5690 var91 = varonce90;
5691 } else {
5692 var92 = " = 1; /* easy ";
5693 var93 = 14;
5694 var94 = string__NativeString__to_s_with_length(var92, var93);
5695 var91 = var94;
5696 varonce90 = var91;
5697 }
5698 var95 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
5699 if (varonce96) {
5700 var97 = varonce96;
5701 } else {
5702 var98 = " isa ";
5703 var99 = 5;
5704 var100 = string__NativeString__to_s_with_length(var98, var99);
5705 var97 = var100;
5706 varonce96 = var97;
5707 }
5708 if (varonce101) {
5709 var102 = varonce101;
5710 } else {
5711 var103 = "*/";
5712 var104 = 2;
5713 var105 = string__NativeString__to_s_with_length(var103, var104);
5714 var102 = var105;
5715 varonce101 = var102;
5716 }
5717 var106 = NEW_array__Array(&type_array__Arraykernel__Object);
5718 { /* var106 = array_instance Array[Object] */
5719 var107 = 6;
5720 var108 = NEW_array__NativeArray(var107, &type_array__NativeArraykernel__Object);
5721 ((struct instance_array__NativeArray*)var108)->values[0] = (val*) var_res;
5722 ((struct instance_array__NativeArray*)var108)->values[1] = (val*) var91;
5723 ((struct instance_array__NativeArray*)var108)->values[2] = (val*) var95;
5724 ((struct instance_array__NativeArray*)var108)->values[3] = (val*) var97;
5725 ((struct instance_array__NativeArray*)var108)->values[4] = (val*) var_mtype;
5726 ((struct instance_array__NativeArray*)var108)->values[5] = (val*) var102;
5727 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[Object]>*/;
5728 CHECK_NEW_array__Array(var106);
5729 }
5730 var109 = ((val* (*)(val*))(var106->class->vft[COLOR_string__Object__to_s]))(var106) /* to_s on <var106:Array[Object]>*/;
5731 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var109) /* add on <self:SeparateCompilerVisitor>*/;
5732 var110 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5733 var111 = ((val* (*)(val*))(var110->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var110) /* toolcontext on <var110:ModelBuilder>*/;
5734 var112 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var111) /* opt_typing_test_metrics on <var111:ToolContext>*/;
5735 var113 = ((val* (*)(val*))(var112->class->vft[COLOR_opts__Option__value]))(var112) /* value on <var112:OptionBool>*/;
5736 var114 = ((struct instance_kernel__Bool*)var113)->value; /* autounbox from nullable Object to Bool */;
5737 if (var114){
5738 var115 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5739 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped]))(var115) /* count_type_test_skipped on <var115:AbstractCompiler(SeparateCompiler)>*/;
5740 var_ = var116;
5741 var_117 = var_tag;
5742 var118 = ((val* (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_, var_117) /* [] on <var_:HashMap[String, Int]>*/;
5743 var119 = 1;
5744 { /* Inline kernel#Int#+ (var118,var119) */
5745 var122 = ((struct instance_kernel__Int*)var118)->value; /* autounbox from nullable Object to Int */;
5746 var123 = var122 + var119;
5747 var120 = var123;
5748 goto RET_LABEL121;
5749 RET_LABEL121:(void)0;
5750 }
5751 var124 = BOX_kernel__Int(var120); /* autobox from Int to nullable Object */
5752 ((void (*)(val*, val*, val*))(var_->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_, var_117, var124) /* []= on <var_:HashMap[String, Int]>*/;
5753 if (varonce125) {
5754 var126 = varonce125;
5755 } else {
5756 var127 = "count_type_test_skipped_";
5757 var128 = 24;
5758 var129 = string__NativeString__to_s_with_length(var127, var128);
5759 var126 = var129;
5760 varonce125 = var126;
5761 }
5762 if (varonce130) {
5763 var131 = varonce130;
5764 } else {
5765 var132 = "++;";
5766 var133 = 3;
5767 var134 = string__NativeString__to_s_with_length(var132, var133);
5768 var131 = var134;
5769 varonce130 = var131;
5770 }
5771 var135 = NEW_array__Array(&type_array__Arraykernel__Object);
5772 { /* var135 = array_instance Array[Object] */
5773 var136 = 3;
5774 var137 = NEW_array__NativeArray(var136, &type_array__NativeArraykernel__Object);
5775 ((struct instance_array__NativeArray*)var137)->values[0] = (val*) var126;
5776 ((struct instance_array__NativeArray*)var137)->values[1] = (val*) var_tag;
5777 ((struct instance_array__NativeArray*)var137)->values[2] = (val*) var131;
5778 ((void (*)(val*, val*, long))(var135->class->vft[COLOR_array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
5779 CHECK_NEW_array__Array(var135);
5780 }
5781 var138 = ((val* (*)(val*))(var135->class->vft[COLOR_string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
5782 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var138) /* add on <self:SeparateCompilerVisitor>*/;
5783 } else {
5784 }
5785 var = var_res;
5786 goto RET_LABEL;
5787 } else {
5788 }
5789 var139 = ((short int (*)(val*))(var_ntype->class->vft[COLOR_model__MType__need_anchor]))(var_ntype) /* need_anchor on <var_ntype:MType>*/;
5790 if (var139){
5791 if (varonce140) {
5792 var141 = varonce140;
5793 } else {
5794 var142 = "type_struct";
5795 var143 = 11;
5796 var144 = string__NativeString__to_s_with_length(var142, var143);
5797 var141 = var144;
5798 varonce140 = var141;
5799 }
5800 var145 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var141) /* get_name on <self:SeparateCompilerVisitor>*/;
5801 var_type_struct = var145;
5802 if (varonce146) {
5803 var147 = varonce146;
5804 } else {
5805 var148 = "const struct type* ";
5806 var149 = 19;
5807 var150 = string__NativeString__to_s_with_length(var148, var149);
5808 var147 = var150;
5809 varonce146 = var147;
5810 }
5811 if (varonce151) {
5812 var152 = varonce151;
5813 } else {
5814 var153 = ";";
5815 var154 = 1;
5816 var155 = string__NativeString__to_s_with_length(var153, var154);
5817 var152 = var155;
5818 varonce151 = var152;
5819 }
5820 var156 = NEW_array__Array(&type_array__Arraykernel__Object);
5821 { /* var156 = array_instance Array[Object] */
5822 var157 = 3;
5823 var158 = NEW_array__NativeArray(var157, &type_array__NativeArraykernel__Object);
5824 ((struct instance_array__NativeArray*)var158)->values[0] = (val*) var147;
5825 ((struct instance_array__NativeArray*)var158)->values[1] = (val*) var_type_struct;
5826 ((struct instance_array__NativeArray*)var158)->values[2] = (val*) var152;
5827 ((void (*)(val*, val*, long))(var156->class->vft[COLOR_array__Array__with_native]))(var156, var158, var157) /* with_native on <var156:Array[Object]>*/;
5828 CHECK_NEW_array__Array(var156);
5829 }
5830 var159 = ((val* (*)(val*))(var156->class->vft[COLOR_string__Object__to_s]))(var156) /* to_s on <var156:Array[Object]>*/;
5831 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var159) /* add_decl on <self:SeparateCompilerVisitor>*/;
5832 var160 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
5833 if (var160 == NULL) {
5834 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5835 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1323);
5836 exit(1);
5837 } else {
5838 var161 = ((val* (*)(val*))(var160->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var160) /* mpropdef on <var160:nullable Frame>*/;
5839 }
5840 var162 = ((val* (*)(val*))(var161->class->vft[COLOR_model__MPropDef__mclassdef]))(var161) /* mclassdef on <var161:MPropDef>*/;
5841 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var162, var_ntype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
5842 var163 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_ntype) /* const_color on <var_ntype:MType>*/;
5843 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var163) /* require_declaration on <self:SeparateCompilerVisitor>*/;
5844 var165 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5845 var166 = ((val* (*)(val*))(var165->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var165) /* toolcontext on <var165:ModelBuilder>*/;
5846 var167 = ((val* (*)(val*))(var166->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var166) /* opt_phmod_typing on <var166:ToolContext>*/;
5847 var168 = ((val* (*)(val*))(var167->class->vft[COLOR_opts__Option__value]))(var167) /* value on <var167:OptionBool>*/;
5848 var169 = ((struct instance_kernel__Bool*)var168)->value; /* autounbox from nullable Object to Bool */;
5849 var_170 = var169;
5850 if (var169){
5851 var164 = var_170;
5852 } else {
5853 var171 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5854 var172 = ((val* (*)(val*))(var171->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var171) /* toolcontext on <var171:ModelBuilder>*/;
5855 var173 = ((val* (*)(val*))(var172->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var172) /* opt_phand_typing on <var172:ToolContext>*/;
5856 var174 = ((val* (*)(val*))(var173->class->vft[COLOR_opts__Option__value]))(var173) /* value on <var173:OptionBool>*/;
5857 var175 = ((struct instance_kernel__Bool*)var174)->value; /* autounbox from nullable Object to Bool */;
5858 var164 = var175;
5859 }
5860 if (var164){
5861 if (varonce176) {
5862 var177 = varonce176;
5863 } else {
5864 var178 = " = ";
5865 var179 = 3;
5866 var180 = string__NativeString__to_s_with_length(var178, var179);
5867 var177 = var180;
5868 varonce176 = var177;
5869 }
5870 if (varonce181) {
5871 var182 = varonce181;
5872 } else {
5873 var183 = "->resolution_table->types[HASH(";
5874 var184 = 31;
5875 var185 = string__NativeString__to_s_with_length(var183, var184);
5876 var182 = var185;
5877 varonce181 = var182;
5878 }
5879 if (varonce186) {
5880 var187 = varonce186;
5881 } else {
5882 var188 = "->resolution_table->mask, ";
5883 var189 = 26;
5884 var190 = string__NativeString__to_s_with_length(var188, var189);
5885 var187 = var190;
5886 varonce186 = var187;
5887 }
5888 var191 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_ntype) /* const_color on <var_ntype:MType>*/;
5889 if (varonce192) {
5890 var193 = varonce192;
5891 } else {
5892 var194 = ")];";
5893 var195 = 3;
5894 var196 = string__NativeString__to_s_with_length(var194, var195);
5895 var193 = var196;
5896 varonce192 = var193;
5897 }
5898 var197 = NEW_array__Array(&type_array__Arraykernel__Object);
5899 { /* var197 = array_instance Array[Object] */
5900 var198 = 8;
5901 var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object);
5902 ((struct instance_array__NativeArray*)var199)->values[0] = (val*) var_type_struct;
5903 ((struct instance_array__NativeArray*)var199)->values[1] = (val*) var177;
5904 ((struct instance_array__NativeArray*)var199)->values[2] = (val*) var_recv_type_info;
5905 ((struct instance_array__NativeArray*)var199)->values[3] = (val*) var182;
5906 ((struct instance_array__NativeArray*)var199)->values[4] = (val*) var_recv_type_info;
5907 ((struct instance_array__NativeArray*)var199)->values[5] = (val*) var187;
5908 ((struct instance_array__NativeArray*)var199)->values[6] = (val*) var191;
5909 ((struct instance_array__NativeArray*)var199)->values[7] = (val*) var193;
5910 ((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on <var197:Array[Object]>*/;
5911 CHECK_NEW_array__Array(var197);
5912 }
5913 var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on <var197:Array[Object]>*/;
5914 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var200) /* add on <self:SeparateCompilerVisitor>*/;
5915 } else {
5916 if (varonce201) {
5917 var202 = varonce201;
5918 } else {
5919 var203 = " = ";
5920 var204 = 3;
5921 var205 = string__NativeString__to_s_with_length(var203, var204);
5922 var202 = var205;
5923 varonce201 = var202;
5924 }
5925 if (varonce206) {
5926 var207 = varonce206;
5927 } else {
5928 var208 = "->resolution_table->types[";
5929 var209 = 26;
5930 var210 = string__NativeString__to_s_with_length(var208, var209);
5931 var207 = var210;
5932 varonce206 = var207;
5933 }
5934 var211 = ((val* (*)(val*))(var_ntype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_ntype) /* const_color on <var_ntype:MType>*/;
5935 if (varonce212) {
5936 var213 = varonce212;
5937 } else {
5938 var214 = "];";
5939 var215 = 2;
5940 var216 = string__NativeString__to_s_with_length(var214, var215);
5941 var213 = var216;
5942 varonce212 = var213;
5943 }
5944 var217 = NEW_array__Array(&type_array__Arraykernel__Object);
5945 { /* var217 = array_instance Array[Object] */
5946 var218 = 6;
5947 var219 = NEW_array__NativeArray(var218, &type_array__NativeArraykernel__Object);
5948 ((struct instance_array__NativeArray*)var219)->values[0] = (val*) var_type_struct;
5949 ((struct instance_array__NativeArray*)var219)->values[1] = (val*) var202;
5950 ((struct instance_array__NativeArray*)var219)->values[2] = (val*) var_recv_type_info;
5951 ((struct instance_array__NativeArray*)var219)->values[3] = (val*) var207;
5952 ((struct instance_array__NativeArray*)var219)->values[4] = (val*) var211;
5953 ((struct instance_array__NativeArray*)var219)->values[5] = (val*) var213;
5954 ((void (*)(val*, val*, long))(var217->class->vft[COLOR_array__Array__with_native]))(var217, var219, var218) /* with_native on <var217:Array[Object]>*/;
5955 CHECK_NEW_array__Array(var217);
5956 }
5957 var220 = ((val* (*)(val*))(var217->class->vft[COLOR_string__Object__to_s]))(var217) /* to_s on <var217:Array[Object]>*/;
5958 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var220) /* add on <self:SeparateCompilerVisitor>*/;
5959 }
5960 var221 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
5961 var222 = ((val* (*)(val*))(var221->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var221) /* toolcontext on <var221:ModelBuilder>*/;
5962 var223 = ((val* (*)(val*))(var222->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var222) /* opt_typing_test_metrics on <var222:ToolContext>*/;
5963 var224 = ((val* (*)(val*))(var223->class->vft[COLOR_opts__Option__value]))(var223) /* value on <var223:OptionBool>*/;
5964 var225 = ((struct instance_kernel__Bool*)var224)->value; /* autounbox from nullable Object to Bool */;
5965 if (var225){
5966 var226 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
5967 var227 = ((val* (*)(val*))(var226->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved]))(var226) /* count_type_test_unresolved on <var226:AbstractCompiler(SeparateCompiler)>*/;
5968 var_228 = var227;
5969 var_229 = var_tag;
5970 var230 = ((val* (*)(val*, val*))(var_228->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_228, var_229) /* [] on <var_228:HashMap[String, Int]>*/;
5971 var231 = 1;
5972 { /* Inline kernel#Int#+ (var230,var231) */
5973 var234 = ((struct instance_kernel__Int*)var230)->value; /* autounbox from nullable Object to Int */;
5974 var235 = var234 + var231;
5975 var232 = var235;
5976 goto RET_LABEL233;
5977 RET_LABEL233:(void)0;
5978 }
5979 var236 = BOX_kernel__Int(var232); /* autobox from Int to nullable Object */
5980 ((void (*)(val*, val*, val*))(var_228->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_228, var_229, var236) /* []= on <var_228:HashMap[String, Int]>*/;
5981 if (varonce237) {
5982 var238 = varonce237;
5983 } else {
5984 var239 = "count_type_test_unresolved_";
5985 var240 = 27;
5986 var241 = string__NativeString__to_s_with_length(var239, var240);
5987 var238 = var241;
5988 varonce237 = var238;
5989 }
5990 if (varonce242) {
5991 var243 = varonce242;
5992 } else {
5993 var244 = "++;";
5994 var245 = 3;
5995 var246 = string__NativeString__to_s_with_length(var244, var245);
5996 var243 = var246;
5997 varonce242 = var243;
5998 }
5999 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
6000 { /* var247 = array_instance Array[Object] */
6001 var248 = 3;
6002 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
6003 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var238;
6004 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var_tag;
6005 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243;
6006 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
6007 CHECK_NEW_array__Array(var247);
6008 }
6009 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
6010 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var250) /* add on <self:SeparateCompilerVisitor>*/;
6011 } else {
6012 }
6013 if (varonce251) {
6014 var252 = varonce251;
6015 } else {
6016 var253 = " = ";
6017 var254 = 3;
6018 var255 = string__NativeString__to_s_with_length(var253, var254);
6019 var252 = var255;
6020 varonce251 = var252;
6021 }
6022 if (varonce256) {
6023 var257 = varonce256;
6024 } else {
6025 var258 = "->color;";
6026 var259 = 8;
6027 var260 = string__NativeString__to_s_with_length(var258, var259);
6028 var257 = var260;
6029 varonce256 = var257;
6030 }
6031 var261 = NEW_array__Array(&type_array__Arraykernel__Object);
6032 { /* var261 = array_instance Array[Object] */
6033 var262 = 4;
6034 var263 = NEW_array__NativeArray(var262, &type_array__NativeArraykernel__Object);
6035 ((struct instance_array__NativeArray*)var263)->values[0] = (val*) var_cltype;
6036 ((struct instance_array__NativeArray*)var263)->values[1] = (val*) var252;
6037 ((struct instance_array__NativeArray*)var263)->values[2] = (val*) var_type_struct;
6038 ((struct instance_array__NativeArray*)var263)->values[3] = (val*) var257;
6039 ((void (*)(val*, val*, long))(var261->class->vft[COLOR_array__Array__with_native]))(var261, var263, var262) /* with_native on <var261:Array[Object]>*/;
6040 CHECK_NEW_array__Array(var261);
6041 }
6042 var264 = ((val* (*)(val*))(var261->class->vft[COLOR_string__Object__to_s]))(var261) /* to_s on <var261:Array[Object]>*/;
6043 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var264) /* add on <self:SeparateCompilerVisitor>*/;
6044 if (varonce265) {
6045 var266 = varonce265;
6046 } else {
6047 var267 = " = ";
6048 var268 = 3;
6049 var269 = string__NativeString__to_s_with_length(var267, var268);
6050 var266 = var269;
6051 varonce265 = var266;
6052 }
6053 if (varonce270) {
6054 var271 = varonce270;
6055 } else {
6056 var272 = "->id;";
6057 var273 = 5;
6058 var274 = string__NativeString__to_s_with_length(var272, var273);
6059 var271 = var274;
6060 varonce270 = var271;
6061 }
6062 var275 = NEW_array__Array(&type_array__Arraykernel__Object);
6063 { /* var275 = array_instance Array[Object] */
6064 var276 = 4;
6065 var277 = NEW_array__NativeArray(var276, &type_array__NativeArraykernel__Object);
6066 ((struct instance_array__NativeArray*)var277)->values[0] = (val*) var_idtype;
6067 ((struct instance_array__NativeArray*)var277)->values[1] = (val*) var266;
6068 ((struct instance_array__NativeArray*)var277)->values[2] = (val*) var_type_struct;
6069 ((struct instance_array__NativeArray*)var277)->values[3] = (val*) var271;
6070 ((void (*)(val*, val*, long))(var275->class->vft[COLOR_array__Array__with_native]))(var275, var277, var276) /* with_native on <var275:Array[Object]>*/;
6071 CHECK_NEW_array__Array(var275);
6072 }
6073 var278 = ((val* (*)(val*))(var275->class->vft[COLOR_string__Object__to_s]))(var275) /* to_s on <var275:Array[Object]>*/;
6074 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var278) /* add on <self:SeparateCompilerVisitor>*/;
6075 var_280 = var_maybe_null;
6076 if (var_maybe_null){
6077 if (varonce281) {
6078 var282 = varonce281;
6079 } else {
6080 var283 = "0";
6081 var284 = 1;
6082 var285 = string__NativeString__to_s_with_length(var283, var284);
6083 var282 = var285;
6084 varonce281 = var282;
6085 }
6086 var286 = ((short int (*)(val*, val*))(var_accept_null->class->vft[COLOR_kernel__Object___61d_61d]))(var_accept_null, var282) /* == on <var_accept_null:String>*/;
6087 var279 = var286;
6088 } else {
6089 var279 = var_280;
6090 }
6091 if (var279){
6092 if (varonce287) {
6093 var288 = varonce287;
6094 } else {
6095 var289 = "is_nullable";
6096 var290 = 11;
6097 var291 = string__NativeString__to_s_with_length(var289, var290);
6098 var288 = var291;
6099 varonce287 = var288;
6100 }
6101 var292 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var288) /* get_name on <self:SeparateCompilerVisitor>*/;
6102 var_is_nullable = var292;
6103 if (varonce293) {
6104 var294 = varonce293;
6105 } else {
6106 var295 = "short int ";
6107 var296 = 10;
6108 var297 = string__NativeString__to_s_with_length(var295, var296);
6109 var294 = var297;
6110 varonce293 = var294;
6111 }
6112 if (varonce298) {
6113 var299 = varonce298;
6114 } else {
6115 var300 = ";";
6116 var301 = 1;
6117 var302 = string__NativeString__to_s_with_length(var300, var301);
6118 var299 = var302;
6119 varonce298 = var299;
6120 }
6121 var303 = NEW_array__Array(&type_array__Arraykernel__Object);
6122 { /* var303 = array_instance Array[Object] */
6123 var304 = 3;
6124 var305 = NEW_array__NativeArray(var304, &type_array__NativeArraykernel__Object);
6125 ((struct instance_array__NativeArray*)var305)->values[0] = (val*) var294;
6126 ((struct instance_array__NativeArray*)var305)->values[1] = (val*) var_is_nullable;
6127 ((struct instance_array__NativeArray*)var305)->values[2] = (val*) var299;
6128 ((void (*)(val*, val*, long))(var303->class->vft[COLOR_array__Array__with_native]))(var303, var305, var304) /* with_native on <var303:Array[Object]>*/;
6129 CHECK_NEW_array__Array(var303);
6130 }
6131 var306 = ((val* (*)(val*))(var303->class->vft[COLOR_string__Object__to_s]))(var303) /* to_s on <var303:Array[Object]>*/;
6132 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var306) /* add_decl on <self:SeparateCompilerVisitor>*/;
6133 if (varonce307) {
6134 var308 = varonce307;
6135 } else {
6136 var309 = " = ";
6137 var310 = 3;
6138 var311 = string__NativeString__to_s_with_length(var309, var310);
6139 var308 = var311;
6140 varonce307 = var308;
6141 }
6142 if (varonce312) {
6143 var313 = varonce312;
6144 } else {
6145 var314 = "->is_nullable;";
6146 var315 = 14;
6147 var316 = string__NativeString__to_s_with_length(var314, var315);
6148 var313 = var316;
6149 varonce312 = var313;
6150 }
6151 var317 = NEW_array__Array(&type_array__Arraykernel__Object);
6152 { /* var317 = array_instance Array[Object] */
6153 var318 = 4;
6154 var319 = NEW_array__NativeArray(var318, &type_array__NativeArraykernel__Object);
6155 ((struct instance_array__NativeArray*)var319)->values[0] = (val*) var_is_nullable;
6156 ((struct instance_array__NativeArray*)var319)->values[1] = (val*) var308;
6157 ((struct instance_array__NativeArray*)var319)->values[2] = (val*) var_type_struct;
6158 ((struct instance_array__NativeArray*)var319)->values[3] = (val*) var313;
6159 ((void (*)(val*, val*, long))(var317->class->vft[COLOR_array__Array__with_native]))(var317, var319, var318) /* with_native on <var317:Array[Object]>*/;
6160 CHECK_NEW_array__Array(var317);
6161 }
6162 var320 = ((val* (*)(val*))(var317->class->vft[COLOR_string__Object__to_s]))(var317) /* to_s on <var317:Array[Object]>*/;
6163 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var320) /* add on <self:SeparateCompilerVisitor>*/;
6164 var321 = ((val* (*)(val*))(var_is_nullable->class->vft[COLOR_string__Object__to_s]))(var_is_nullable) /* to_s on <var_is_nullable:String>*/;
6165 var_accept_null = var321;
6166 } else {
6167 }
6168 } else {
6169 /* <var_ntype:MType> isa MClassType */
6170 cltype323 = type_model__MClassType.color;
6171 idtype324 = type_model__MClassType.id;
6172 if(cltype323 >= var_ntype->type->table_size) {
6173 var322 = 0;
6174 } else {
6175 var322 = var_ntype->type->type_table[cltype323] == idtype324;
6176 }
6177 if (var322){
6178 var325 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
6179 ((void (*)(val*, val*))(var325->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var325, var_mtype) /* add on <var325:Set[MType]>*/;
6180 if (varonce326) {
6181 var327 = varonce326;
6182 } else {
6183 var328 = "type_";
6184 var329 = 5;
6185 var330 = string__NativeString__to_s_with_length(var328, var329);
6186 var327 = var330;
6187 varonce326 = var327;
6188 }
6189 var331 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
6190 var332 = NEW_array__Array(&type_array__Arraykernel__Object);
6191 { /* var332 = array_instance Array[Object] */
6192 var333 = 2;
6193 var334 = NEW_array__NativeArray(var333, &type_array__NativeArraykernel__Object);
6194 ((struct instance_array__NativeArray*)var334)->values[0] = (val*) var327;
6195 ((struct instance_array__NativeArray*)var334)->values[1] = (val*) var331;
6196 ((void (*)(val*, val*, long))(var332->class->vft[COLOR_array__Array__with_native]))(var332, var334, var333) /* with_native on <var332:Array[Object]>*/;
6197 CHECK_NEW_array__Array(var332);
6198 }
6199 var335 = ((val* (*)(val*))(var332->class->vft[COLOR_string__Object__to_s]))(var332) /* to_s on <var332:Array[Object]>*/;
6200 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var335) /* require_declaration on <self:SeparateCompilerVisitor>*/;
6201 if (varonce336) {
6202 var337 = varonce336;
6203 } else {
6204 var338 = " = type_";
6205 var339 = 8;
6206 var340 = string__NativeString__to_s_with_length(var338, var339);
6207 var337 = var340;
6208 varonce336 = var337;
6209 }
6210 var341 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
6211 if (varonce342) {
6212 var343 = varonce342;
6213 } else {
6214 var344 = ".color;";
6215 var345 = 7;
6216 var346 = string__NativeString__to_s_with_length(var344, var345);
6217 var343 = var346;
6218 varonce342 = var343;
6219 }
6220 var347 = NEW_array__Array(&type_array__Arraykernel__Object);
6221 { /* var347 = array_instance Array[Object] */
6222 var348 = 4;
6223 var349 = NEW_array__NativeArray(var348, &type_array__NativeArraykernel__Object);
6224 ((struct instance_array__NativeArray*)var349)->values[0] = (val*) var_cltype;
6225 ((struct instance_array__NativeArray*)var349)->values[1] = (val*) var337;
6226 ((struct instance_array__NativeArray*)var349)->values[2] = (val*) var341;
6227 ((struct instance_array__NativeArray*)var349)->values[3] = (val*) var343;
6228 ((void (*)(val*, val*, long))(var347->class->vft[COLOR_array__Array__with_native]))(var347, var349, var348) /* with_native on <var347:Array[Object]>*/;
6229 CHECK_NEW_array__Array(var347);
6230 }
6231 var350 = ((val* (*)(val*))(var347->class->vft[COLOR_string__Object__to_s]))(var347) /* to_s on <var347:Array[Object]>*/;
6232 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var350) /* add on <self:SeparateCompilerVisitor>*/;
6233 if (varonce351) {
6234 var352 = varonce351;
6235 } else {
6236 var353 = " = type_";
6237 var354 = 8;
6238 var355 = string__NativeString__to_s_with_length(var353, var354);
6239 var352 = var355;
6240 varonce351 = var352;
6241 }
6242 var356 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
6243 if (varonce357) {
6244 var358 = varonce357;
6245 } else {
6246 var359 = ".id;";
6247 var360 = 4;
6248 var361 = string__NativeString__to_s_with_length(var359, var360);
6249 var358 = var361;
6250 varonce357 = var358;
6251 }
6252 var362 = NEW_array__Array(&type_array__Arraykernel__Object);
6253 { /* var362 = array_instance Array[Object] */
6254 var363 = 4;
6255 var364 = NEW_array__NativeArray(var363, &type_array__NativeArraykernel__Object);
6256 ((struct instance_array__NativeArray*)var364)->values[0] = (val*) var_idtype;
6257 ((struct instance_array__NativeArray*)var364)->values[1] = (val*) var352;
6258 ((struct instance_array__NativeArray*)var364)->values[2] = (val*) var356;
6259 ((struct instance_array__NativeArray*)var364)->values[3] = (val*) var358;
6260 ((void (*)(val*, val*, long))(var362->class->vft[COLOR_array__Array__with_native]))(var362, var364, var363) /* with_native on <var362:Array[Object]>*/;
6261 CHECK_NEW_array__Array(var362);
6262 }
6263 var365 = ((val* (*)(val*))(var362->class->vft[COLOR_string__Object__to_s]))(var362) /* to_s on <var362:Array[Object]>*/;
6264 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var365) /* add on <self:SeparateCompilerVisitor>*/;
6265 var366 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
6266 var367 = ((val* (*)(val*))(var366->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var366) /* toolcontext on <var366:ModelBuilder>*/;
6267 var368 = ((val* (*)(val*))(var367->class->vft[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics]))(var367) /* opt_typing_test_metrics on <var367:ToolContext>*/;
6268 var369 = ((val* (*)(val*))(var368->class->vft[COLOR_opts__Option__value]))(var368) /* value on <var368:OptionBool>*/;
6269 var370 = ((struct instance_kernel__Bool*)var369)->value; /* autounbox from nullable Object to Bool */;
6270 if (var370){
6271 var371 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
6272 var372 = ((val* (*)(val*))(var371->class->vft[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved]))(var371) /* count_type_test_resolved on <var371:AbstractCompiler(SeparateCompiler)>*/;
6273 var_373 = var372;
6274 var_374 = var_tag;
6275 var375 = ((val* (*)(val*, val*))(var_373->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_373, var_374) /* [] on <var_373:HashMap[String, Int]>*/;
6276 var376 = 1;
6277 { /* Inline kernel#Int#+ (var375,var376) */
6278 var379 = ((struct instance_kernel__Int*)var375)->value; /* autounbox from nullable Object to Int */;
6279 var380 = var379 + var376;
6280 var377 = var380;
6281 goto RET_LABEL378;
6282 RET_LABEL378:(void)0;
6283 }
6284 var381 = BOX_kernel__Int(var377); /* autobox from Int to nullable Object */
6285 ((void (*)(val*, val*, val*))(var_373->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_373, var_374, var381) /* []= on <var_373:HashMap[String, Int]>*/;
6286 if (varonce382) {
6287 var383 = varonce382;
6288 } else {
6289 var384 = "count_type_test_resolved_";
6290 var385 = 25;
6291 var386 = string__NativeString__to_s_with_length(var384, var385);
6292 var383 = var386;
6293 varonce382 = var383;
6294 }
6295 if (varonce387) {
6296 var388 = varonce387;
6297 } else {
6298 var389 = "++;";
6299 var390 = 3;
6300 var391 = string__NativeString__to_s_with_length(var389, var390);
6301 var388 = var391;
6302 varonce387 = var388;
6303 }
6304 var392 = NEW_array__Array(&type_array__Arraykernel__Object);
6305 { /* var392 = array_instance Array[Object] */
6306 var393 = 3;
6307 var394 = NEW_array__NativeArray(var393, &type_array__NativeArraykernel__Object);
6308 ((struct instance_array__NativeArray*)var394)->values[0] = (val*) var383;
6309 ((struct instance_array__NativeArray*)var394)->values[1] = (val*) var_tag;
6310 ((struct instance_array__NativeArray*)var394)->values[2] = (val*) var388;
6311 ((void (*)(val*, val*, long))(var392->class->vft[COLOR_array__Array__with_native]))(var392, var394, var393) /* with_native on <var392:Array[Object]>*/;
6312 CHECK_NEW_array__Array(var392);
6313 }
6314 var395 = ((val* (*)(val*))(var392->class->vft[COLOR_string__Object__to_s]))(var392) /* to_s on <var392:Array[Object]>*/;
6315 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var395) /* add on <self:SeparateCompilerVisitor>*/;
6316 } else {
6317 }
6318 } else {
6319 if (varonce396) {
6320 var397 = varonce396;
6321 } else {
6322 var398 = "printf(\"NOT YET IMPLEMENTED: type_test(%s, ";
6323 var399 = 43;
6324 var400 = string__NativeString__to_s_with_length(var398, var399);
6325 var397 = var400;
6326 varonce396 = var397;
6327 }
6328 if (varonce401) {
6329 var402 = varonce401;
6330 } else {
6331 var403 = ").\\n\", \"";
6332 var404 = 8;
6333 var405 = string__NativeString__to_s_with_length(var403, var404);
6334 var402 = var405;
6335 varonce401 = var402;
6336 }
6337 var406 = ((val* (*)(val*))(var_value->class->vft[COLOR_string__Object__inspect]))(var_value) /* inspect on <var_value:RuntimeVariable>*/;
6338 if (varonce407) {
6339 var408 = varonce407;
6340 } else {
6341 var409 = "\"); exit(1);";
6342 var410 = 12;
6343 var411 = string__NativeString__to_s_with_length(var409, var410);
6344 var408 = var411;
6345 varonce407 = var408;
6346 }
6347 var412 = NEW_array__Array(&type_array__Arraykernel__Object);
6348 { /* var412 = array_instance Array[Object] */
6349 var413 = 5;
6350 var414 = NEW_array__NativeArray(var413, &type_array__NativeArraykernel__Object);
6351 ((struct instance_array__NativeArray*)var414)->values[0] = (val*) var397;
6352 ((struct instance_array__NativeArray*)var414)->values[1] = (val*) var_mtype;
6353 ((struct instance_array__NativeArray*)var414)->values[2] = (val*) var402;
6354 ((struct instance_array__NativeArray*)var414)->values[3] = (val*) var406;
6355 ((struct instance_array__NativeArray*)var414)->values[4] = (val*) var408;
6356 ((void (*)(val*, val*, long))(var412->class->vft[COLOR_array__Array__with_native]))(var412, var414, var413) /* with_native on <var412:Array[Object]>*/;
6357 CHECK_NEW_array__Array(var412);
6358 }
6359 var415 = ((val* (*)(val*))(var412->class->vft[COLOR_string__Object__to_s]))(var412) /* to_s on <var412:Array[Object]>*/;
6360 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var415) /* add on <self:SeparateCompilerVisitor>*/;
6361 }
6362 }
6363 if (var_maybe_null){
6364 if (varonce416) {
6365 var417 = varonce416;
6366 } else {
6367 var418 = "if(";
6368 var419 = 3;
6369 var420 = string__NativeString__to_s_with_length(var418, var419);
6370 var417 = var420;
6371 varonce416 = var417;
6372 }
6373 if (varonce421) {
6374 var422 = varonce421;
6375 } else {
6376 var423 = " == NULL) {";
6377 var424 = 11;
6378 var425 = string__NativeString__to_s_with_length(var423, var424);
6379 var422 = var425;
6380 varonce421 = var422;
6381 }
6382 var426 = NEW_array__Array(&type_array__Arraykernel__Object);
6383 { /* var426 = array_instance Array[Object] */
6384 var427 = 3;
6385 var428 = NEW_array__NativeArray(var427, &type_array__NativeArraykernel__Object);
6386 ((struct instance_array__NativeArray*)var428)->values[0] = (val*) var417;
6387 ((struct instance_array__NativeArray*)var428)->values[1] = (val*) var_value;
6388 ((struct instance_array__NativeArray*)var428)->values[2] = (val*) var422;
6389 ((void (*)(val*, val*, long))(var426->class->vft[COLOR_array__Array__with_native]))(var426, var428, var427) /* with_native on <var426:Array[Object]>*/;
6390 CHECK_NEW_array__Array(var426);
6391 }
6392 var429 = ((val* (*)(val*))(var426->class->vft[COLOR_string__Object__to_s]))(var426) /* to_s on <var426:Array[Object]>*/;
6393 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var429) /* add on <self:SeparateCompilerVisitor>*/;
6394 if (varonce430) {
6395 var431 = varonce430;
6396 } else {
6397 var432 = " = ";
6398 var433 = 3;
6399 var434 = string__NativeString__to_s_with_length(var432, var433);
6400 var431 = var434;
6401 varonce430 = var431;
6402 }
6403 if (varonce435) {
6404 var436 = varonce435;
6405 } else {
6406 var437 = ";";
6407 var438 = 1;
6408 var439 = string__NativeString__to_s_with_length(var437, var438);
6409 var436 = var439;
6410 varonce435 = var436;
6411 }
6412 var440 = NEW_array__Array(&type_array__Arraykernel__Object);
6413 { /* var440 = array_instance Array[Object] */
6414 var441 = 4;
6415 var442 = NEW_array__NativeArray(var441, &type_array__NativeArraykernel__Object);
6416 ((struct instance_array__NativeArray*)var442)->values[0] = (val*) var_res;
6417 ((struct instance_array__NativeArray*)var442)->values[1] = (val*) var431;
6418 ((struct instance_array__NativeArray*)var442)->values[2] = (val*) var_accept_null;
6419 ((struct instance_array__NativeArray*)var442)->values[3] = (val*) var436;
6420 ((void (*)(val*, val*, long))(var440->class->vft[COLOR_array__Array__with_native]))(var440, var442, var441) /* with_native on <var440:Array[Object]>*/;
6421 CHECK_NEW_array__Array(var440);
6422 }
6423 var443 = ((val* (*)(val*))(var440->class->vft[COLOR_string__Object__to_s]))(var440) /* to_s on <var440:Array[Object]>*/;
6424 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var443) /* add on <self:SeparateCompilerVisitor>*/;
6425 if (varonce444) {
6426 var445 = varonce444;
6427 } else {
6428 var446 = "} else {";
6429 var447 = 8;
6430 var448 = string__NativeString__to_s_with_length(var446, var447);
6431 var445 = var448;
6432 varonce444 = var445;
6433 }
6434 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var445) /* add on <self:SeparateCompilerVisitor>*/;
6435 } else {
6436 }
6437 var449 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_value) /* type_info on <self:SeparateCompilerVisitor>*/;
6438 var_value_type_info = var449;
6439 var451 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
6440 var452 = ((val* (*)(val*))(var451->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var451) /* toolcontext on <var451:ModelBuilder>*/;
6441 var453 = ((val* (*)(val*))(var452->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var452) /* opt_phmod_typing on <var452:ToolContext>*/;
6442 var454 = ((val* (*)(val*))(var453->class->vft[COLOR_opts__Option__value]))(var453) /* value on <var453:OptionBool>*/;
6443 var455 = ((struct instance_kernel__Bool*)var454)->value; /* autounbox from nullable Object to Bool */;
6444 var_456 = var455;
6445 if (var455){
6446 var450 = var_456;
6447 } else {
6448 var457 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
6449 var458 = ((val* (*)(val*))(var457->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var457) /* toolcontext on <var457:ModelBuilder>*/;
6450 var459 = ((val* (*)(val*))(var458->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var458) /* opt_phand_typing on <var458:ToolContext>*/;
6451 var460 = ((val* (*)(val*))(var459->class->vft[COLOR_opts__Option__value]))(var459) /* value on <var459:OptionBool>*/;
6452 var461 = ((struct instance_kernel__Bool*)var460)->value; /* autounbox from nullable Object to Bool */;
6453 var450 = var461;
6454 }
6455 if (var450){
6456 if (varonce462) {
6457 var463 = varonce462;
6458 } else {
6459 var464 = " = HASH(";
6460 var465 = 8;
6461 var466 = string__NativeString__to_s_with_length(var464, var465);
6462 var463 = var466;
6463 varonce462 = var463;
6464 }
6465 if (varonce467) {
6466 var468 = varonce467;
6467 } else {
6468 var469 = "->color, ";
6469 var470 = 9;
6470 var471 = string__NativeString__to_s_with_length(var469, var470);
6471 var468 = var471;
6472 varonce467 = var468;
6473 }
6474 if (varonce472) {
6475 var473 = varonce472;
6476 } else {
6477 var474 = ");";
6478 var475 = 2;
6479 var476 = string__NativeString__to_s_with_length(var474, var475);
6480 var473 = var476;
6481 varonce472 = var473;
6482 }
6483 var477 = NEW_array__Array(&type_array__Arraykernel__Object);
6484 { /* var477 = array_instance Array[Object] */
6485 var478 = 6;
6486 var479 = NEW_array__NativeArray(var478, &type_array__NativeArraykernel__Object);
6487 ((struct instance_array__NativeArray*)var479)->values[0] = (val*) var_cltype;
6488 ((struct instance_array__NativeArray*)var479)->values[1] = (val*) var463;
6489 ((struct instance_array__NativeArray*)var479)->values[2] = (val*) var_value_type_info;
6490 ((struct instance_array__NativeArray*)var479)->values[3] = (val*) var468;
6491 ((struct instance_array__NativeArray*)var479)->values[4] = (val*) var_idtype;
6492 ((struct instance_array__NativeArray*)var479)->values[5] = (val*) var473;
6493 ((void (*)(val*, val*, long))(var477->class->vft[COLOR_array__Array__with_native]))(var477, var479, var478) /* with_native on <var477:Array[Object]>*/;
6494 CHECK_NEW_array__Array(var477);
6495 }
6496 var480 = ((val* (*)(val*))(var477->class->vft[COLOR_string__Object__to_s]))(var477) /* to_s on <var477:Array[Object]>*/;
6497 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var480) /* add on <self:SeparateCompilerVisitor>*/;
6498 } else {
6499 }
6500 if (varonce481) {
6501 var482 = varonce481;
6502 } else {
6503 var483 = "if(";
6504 var484 = 3;
6505 var485 = string__NativeString__to_s_with_length(var483, var484);
6506 var482 = var485;
6507 varonce481 = var482;
6508 }
6509 if (varonce486) {
6510 var487 = varonce486;
6511 } else {
6512 var488 = " >= ";
6513 var489 = 4;
6514 var490 = string__NativeString__to_s_with_length(var488, var489);
6515 var487 = var490;
6516 varonce486 = var487;
6517 }
6518 if (varonce491) {
6519 var492 = varonce491;
6520 } else {
6521 var493 = "->table_size) {";
6522 var494 = 15;
6523 var495 = string__NativeString__to_s_with_length(var493, var494);
6524 var492 = var495;
6525 varonce491 = var492;
6526 }
6527 var496 = NEW_array__Array(&type_array__Arraykernel__Object);
6528 { /* var496 = array_instance Array[Object] */
6529 var497 = 5;
6530 var498 = NEW_array__NativeArray(var497, &type_array__NativeArraykernel__Object);
6531 ((struct instance_array__NativeArray*)var498)->values[0] = (val*) var482;
6532 ((struct instance_array__NativeArray*)var498)->values[1] = (val*) var_cltype;
6533 ((struct instance_array__NativeArray*)var498)->values[2] = (val*) var487;
6534 ((struct instance_array__NativeArray*)var498)->values[3] = (val*) var_value_type_info;
6535 ((struct instance_array__NativeArray*)var498)->values[4] = (val*) var492;
6536 ((void (*)(val*, val*, long))(var496->class->vft[COLOR_array__Array__with_native]))(var496, var498, var497) /* with_native on <var496:Array[Object]>*/;
6537 CHECK_NEW_array__Array(var496);
6538 }
6539 var499 = ((val* (*)(val*))(var496->class->vft[COLOR_string__Object__to_s]))(var496) /* to_s on <var496:Array[Object]>*/;
6540 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var499) /* add on <self:SeparateCompilerVisitor>*/;
6541 if (varonce500) {
6542 var501 = varonce500;
6543 } else {
6544 var502 = " = 0;";
6545 var503 = 5;
6546 var504 = string__NativeString__to_s_with_length(var502, var503);
6547 var501 = var504;
6548 varonce500 = var501;
6549 }
6550 var505 = NEW_array__Array(&type_array__Arraykernel__Object);
6551 { /* var505 = array_instance Array[Object] */
6552 var506 = 2;
6553 var507 = NEW_array__NativeArray(var506, &type_array__NativeArraykernel__Object);
6554 ((struct instance_array__NativeArray*)var507)->values[0] = (val*) var_res;
6555 ((struct instance_array__NativeArray*)var507)->values[1] = (val*) var501;
6556 ((void (*)(val*, val*, long))(var505->class->vft[COLOR_array__Array__with_native]))(var505, var507, var506) /* with_native on <var505:Array[Object]>*/;
6557 CHECK_NEW_array__Array(var505);
6558 }
6559 var508 = ((val* (*)(val*))(var505->class->vft[COLOR_string__Object__to_s]))(var505) /* to_s on <var505:Array[Object]>*/;
6560 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var508) /* add on <self:SeparateCompilerVisitor>*/;
6561 if (varonce509) {
6562 var510 = varonce509;
6563 } else {
6564 var511 = "} else {";
6565 var512 = 8;
6566 var513 = string__NativeString__to_s_with_length(var511, var512);
6567 var510 = var513;
6568 varonce509 = var510;
6569 }
6570 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var510) /* add on <self:SeparateCompilerVisitor>*/;
6571 if (varonce514) {
6572 var515 = varonce514;
6573 } else {
6574 var516 = " = ";
6575 var517 = 3;
6576 var518 = string__NativeString__to_s_with_length(var516, var517);
6577 var515 = var518;
6578 varonce514 = var515;
6579 }
6580 if (varonce519) {
6581 var520 = varonce519;
6582 } else {
6583 var521 = "->type_table[";
6584 var522 = 13;
6585 var523 = string__NativeString__to_s_with_length(var521, var522);
6586 var520 = var523;
6587 varonce519 = var520;
6588 }
6589 if (varonce524) {
6590 var525 = varonce524;
6591 } else {
6592 var526 = "] == ";
6593 var527 = 5;
6594 var528 = string__NativeString__to_s_with_length(var526, var527);
6595 var525 = var528;
6596 varonce524 = var525;
6597 }
6598 if (varonce529) {
6599 var530 = varonce529;
6600 } else {
6601 var531 = ";";
6602 var532 = 1;
6603 var533 = string__NativeString__to_s_with_length(var531, var532);
6604 var530 = var533;
6605 varonce529 = var530;
6606 }
6607 var534 = NEW_array__Array(&type_array__Arraykernel__Object);
6608 { /* var534 = array_instance Array[Object] */
6609 var535 = 8;
6610 var536 = NEW_array__NativeArray(var535, &type_array__NativeArraykernel__Object);
6611 ((struct instance_array__NativeArray*)var536)->values[0] = (val*) var_res;
6612 ((struct instance_array__NativeArray*)var536)->values[1] = (val*) var515;
6613 ((struct instance_array__NativeArray*)var536)->values[2] = (val*) var_value_type_info;
6614 ((struct instance_array__NativeArray*)var536)->values[3] = (val*) var520;
6615 ((struct instance_array__NativeArray*)var536)->values[4] = (val*) var_cltype;
6616 ((struct instance_array__NativeArray*)var536)->values[5] = (val*) var525;
6617 ((struct instance_array__NativeArray*)var536)->values[6] = (val*) var_idtype;
6618 ((struct instance_array__NativeArray*)var536)->values[7] = (val*) var530;
6619 ((void (*)(val*, val*, long))(var534->class->vft[COLOR_array__Array__with_native]))(var534, var536, var535) /* with_native on <var534:Array[Object]>*/;
6620 CHECK_NEW_array__Array(var534);
6621 }
6622 var537 = ((val* (*)(val*))(var534->class->vft[COLOR_string__Object__to_s]))(var534) /* to_s on <var534:Array[Object]>*/;
6623 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var537) /* add on <self:SeparateCompilerVisitor>*/;
6624 if (varonce538) {
6625 var539 = varonce538;
6626 } else {
6627 var540 = "}";
6628 var541 = 1;
6629 var542 = string__NativeString__to_s_with_length(var540, var541);
6630 var539 = var542;
6631 varonce538 = var539;
6632 }
6633 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var539) /* add on <self:SeparateCompilerVisitor>*/;
6634 if (var_maybe_null){
6635 if (varonce543) {
6636 var544 = varonce543;
6637 } else {
6638 var545 = "}";
6639 var546 = 1;
6640 var547 = string__NativeString__to_s_with_length(var545, var546);
6641 var544 = var547;
6642 varonce543 = var544;
6643 }
6644 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var544) /* add on <self:SeparateCompilerVisitor>*/;
6645 } else {
6646 }
6647 var = var_res;
6648 goto RET_LABEL;
6649 RET_LABEL:;
6650 return var;
6651 }
6652 /* method separate_compiler#SeparateCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
6653 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_test(val* self, val* p0, val* p1, val* p2) {
6654 val* var /* : RuntimeVariable */;
6655 val* var1 /* : RuntimeVariable */;
6656 var1 = separate_compiler__SeparateCompilerVisitor__type_test(self, p0, p1, p2);
6657 var = var1;
6658 RET_LABEL:;
6659 return var;
6660 }
6661 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
6662 val* separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
6663 val* var /* : RuntimeVariable */;
6664 val* var_value1 /* var value1: RuntimeVariable */;
6665 val* var_value2 /* var value2: RuntimeVariable */;
6666 val* var1 /* : MClassType */;
6667 val* var2 /* : RuntimeVariable */;
6668 val* var_res /* var res: RuntimeVariable */;
6669 short int var3 /* : Bool */;
6670 val* var4 /* : MType */;
6671 val* var5 /* : String */;
6672 static val* varonce;
6673 val* var6 /* : String */;
6674 char* var7 /* : NativeString */;
6675 long var8 /* : Int */;
6676 val* var9 /* : String */;
6677 short int var10 /* : Bool */;
6678 short int var_ /* var : Bool */;
6679 val* var11 /* : MType */;
6680 val* var12 /* : String */;
6681 static val* varonce13;
6682 val* var14 /* : String */;
6683 char* var15 /* : NativeString */;
6684 long var16 /* : Int */;
6685 val* var17 /* : String */;
6686 short int var18 /* : Bool */;
6687 val* var_tmp /* var tmp: RuntimeVariable */;
6688 val* var19 /* : MType */;
6689 val* var20 /* : String */;
6690 static val* varonce21;
6691 val* var22 /* : String */;
6692 char* var23 /* : NativeString */;
6693 long var24 /* : Int */;
6694 val* var25 /* : String */;
6695 short int var26 /* : Bool */;
6696 val* var27 /* : MType */;
6697 val* var28 /* : MType */;
6698 short int var29 /* : Bool */;
6699 static val* varonce30;
6700 val* var31 /* : String */;
6701 char* var32 /* : NativeString */;
6702 long var33 /* : Int */;
6703 val* var34 /* : String */;
6704 val* var35 /* : MType */;
6705 static val* varonce36;
6706 val* var37 /* : String */;
6707 char* var38 /* : NativeString */;
6708 long var39 /* : Int */;
6709 val* var40 /* : String */;
6710 val* var41 /* : MType */;
6711 static val* varonce42;
6712 val* var43 /* : String */;
6713 char* var44 /* : NativeString */;
6714 long var45 /* : Int */;
6715 val* var46 /* : String */;
6716 val* var47 /* : Array[Object] */;
6717 long var48 /* : Int */;
6718 val* var49 /* : NativeArray[Object] */;
6719 val* var50 /* : String */;
6720 val* var51 /* : MType */;
6721 val* var52 /* : String */;
6722 static val* varonce53;
6723 val* var54 /* : String */;
6724 char* var55 /* : NativeString */;
6725 long var56 /* : Int */;
6726 val* var57 /* : String */;
6727 short int var58 /* : Bool */;
6728 static val* varonce59;
6729 val* var60 /* : String */;
6730 char* var61 /* : NativeString */;
6731 long var62 /* : Int */;
6732 val* var63 /* : String */;
6733 val* var64 /* : MType */;
6734 static val* varonce65;
6735 val* var66 /* : String */;
6736 char* var67 /* : NativeString */;
6737 long var68 /* : Int */;
6738 val* var69 /* : String */;
6739 val* var70 /* : MType */;
6740 static val* varonce71;
6741 val* var72 /* : String */;
6742 char* var73 /* : NativeString */;
6743 long var74 /* : Int */;
6744 val* var75 /* : String */;
6745 val* var76 /* : Array[Object] */;
6746 long var77 /* : Int */;
6747 val* var78 /* : NativeArray[Object] */;
6748 val* var79 /* : String */;
6749 val* var80 /* : MType */;
6750 short int var81 /* : Bool */;
6751 int cltype;
6752 int idtype;
6753 const char* var_class_name;
6754 val* var_mtype1 /* var mtype1: MClassType */;
6755 static val* varonce82;
6756 val* var83 /* : String */;
6757 char* var84 /* : NativeString */;
6758 long var85 /* : Int */;
6759 val* var86 /* : String */;
6760 val* var87 /* : String */;
6761 val* var88 /* : Array[Object] */;
6762 long var89 /* : Int */;
6763 val* var90 /* : NativeArray[Object] */;
6764 val* var91 /* : String */;
6765 static val* varonce92;
6766 val* var93 /* : String */;
6767 char* var94 /* : NativeString */;
6768 long var95 /* : Int */;
6769 val* var96 /* : String */;
6770 static val* varonce97;
6771 val* var98 /* : String */;
6772 char* var99 /* : NativeString */;
6773 long var100 /* : Int */;
6774 val* var101 /* : String */;
6775 static val* varonce102;
6776 val* var103 /* : String */;
6777 char* var104 /* : NativeString */;
6778 long var105 /* : Int */;
6779 val* var106 /* : String */;
6780 val* var107 /* : String */;
6781 static val* varonce108;
6782 val* var109 /* : String */;
6783 char* var110 /* : NativeString */;
6784 long var111 /* : Int */;
6785 val* var112 /* : String */;
6786 val* var113 /* : Array[Object] */;
6787 long var114 /* : Int */;
6788 val* var115 /* : NativeArray[Object] */;
6789 val* var116 /* : String */;
6790 static val* varonce117;
6791 val* var118 /* : String */;
6792 char* var119 /* : NativeString */;
6793 long var120 /* : Int */;
6794 val* var121 /* : String */;
6795 static val* varonce122;
6796 val* var123 /* : String */;
6797 char* var124 /* : NativeString */;
6798 long var125 /* : Int */;
6799 val* var126 /* : String */;
6800 static val* varonce127;
6801 val* var128 /* : String */;
6802 char* var129 /* : NativeString */;
6803 long var130 /* : Int */;
6804 val* var131 /* : String */;
6805 static val* varonce132;
6806 val* var133 /* : String */;
6807 char* var134 /* : NativeString */;
6808 long var135 /* : Int */;
6809 val* var136 /* : String */;
6810 static val* varonce137;
6811 val* var138 /* : String */;
6812 char* var139 /* : NativeString */;
6813 long var140 /* : Int */;
6814 val* var141 /* : String */;
6815 static val* varonce142;
6816 val* var143 /* : String */;
6817 char* var144 /* : NativeString */;
6818 long var145 /* : Int */;
6819 val* var146 /* : String */;
6820 static val* varonce147;
6821 val* var148 /* : String */;
6822 char* var149 /* : NativeString */;
6823 long var150 /* : Int */;
6824 val* var151 /* : String */;
6825 val* var152 /* : Array[Object] */;
6826 long var153 /* : Int */;
6827 val* var154 /* : NativeArray[Object] */;
6828 val* var155 /* : String */;
6829 var_value1 = p0;
6830 var_value2 = p1;
6831 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
6832 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
6833 var_res = var2;
6834 var4 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6835 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
6836 if (varonce) {
6837 var6 = varonce;
6838 } else {
6839 var7 = "val*";
6840 var8 = 4;
6841 var9 = string__NativeString__to_s_with_length(var7, var8);
6842 var6 = var9;
6843 varonce = var6;
6844 }
6845 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var6) /* != on <var5:String>*/;
6846 var_ = var10;
6847 if (var10){
6848 var11 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6849 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__MType__ctype]))(var11) /* ctype on <var11:MType>*/;
6850 if (varonce13) {
6851 var14 = varonce13;
6852 } else {
6853 var15 = "val*";
6854 var16 = 4;
6855 var17 = string__NativeString__to_s_with_length(var15, var16);
6856 var14 = var17;
6857 varonce13 = var14;
6858 }
6859 var18 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var14) /* == on <var12:String>*/;
6860 var3 = var18;
6861 } else {
6862 var3 = var_;
6863 }
6864 if (var3){
6865 var_tmp = var_value1;
6866 var_value1 = var_value2;
6867 var_value2 = var_tmp;
6868 } else {
6869 }
6870 var19 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6871 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_compiler__MType__ctype]))(var19) /* ctype on <var19:MType>*/;
6872 if (varonce21) {
6873 var22 = varonce21;
6874 } else {
6875 var23 = "val*";
6876 var24 = 4;
6877 var25 = string__NativeString__to_s_with_length(var23, var24);
6878 var22 = var25;
6879 varonce21 = var22;
6880 }
6881 var26 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___33d_61d]))(var20, var22) /* != on <var20:String>*/;
6882 if (var26){
6883 var27 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6884 var28 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6885 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MType>*/;
6886 if (var29){
6887 if (varonce30) {
6888 var31 = varonce30;
6889 } else {
6890 var32 = " = 1; /* is_same_type_test: compatible types ";
6891 var33 = 45;
6892 var34 = string__NativeString__to_s_with_length(var32, var33);
6893 var31 = var34;
6894 varonce30 = var31;
6895 }
6896 var35 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6897 if (varonce36) {
6898 var37 = varonce36;
6899 } else {
6900 var38 = " vs. ";
6901 var39 = 5;
6902 var40 = string__NativeString__to_s_with_length(var38, var39);
6903 var37 = var40;
6904 varonce36 = var37;
6905 }
6906 var41 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6907 if (varonce42) {
6908 var43 = varonce42;
6909 } else {
6910 var44 = " */";
6911 var45 = 3;
6912 var46 = string__NativeString__to_s_with_length(var44, var45);
6913 var43 = var46;
6914 varonce42 = var43;
6915 }
6916 var47 = NEW_array__Array(&type_array__Arraykernel__Object);
6917 { /* var47 = array_instance Array[Object] */
6918 var48 = 6;
6919 var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
6920 ((struct instance_array__NativeArray*)var49)->values[0] = (val*) var_res;
6921 ((struct instance_array__NativeArray*)var49)->values[1] = (val*) var31;
6922 ((struct instance_array__NativeArray*)var49)->values[2] = (val*) var35;
6923 ((struct instance_array__NativeArray*)var49)->values[3] = (val*) var37;
6924 ((struct instance_array__NativeArray*)var49)->values[4] = (val*) var41;
6925 ((struct instance_array__NativeArray*)var49)->values[5] = (val*) var43;
6926 ((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
6927 CHECK_NEW_array__Array(var47);
6928 }
6929 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
6930 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var50) /* add on <self:SeparateCompilerVisitor>*/;
6931 } else {
6932 var51 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6933 var52 = ((val* (*)(val*))(var51->class->vft[COLOR_abstract_compiler__MType__ctype]))(var51) /* ctype on <var51:MType>*/;
6934 if (varonce53) {
6935 var54 = varonce53;
6936 } else {
6937 var55 = "val*";
6938 var56 = 4;
6939 var57 = string__NativeString__to_s_with_length(var55, var56);
6940 var54 = var57;
6941 varonce53 = var54;
6942 }
6943 var58 = ((short int (*)(val*, val*))(var52->class->vft[COLOR_kernel__Object___33d_61d]))(var52, var54) /* != on <var52:String>*/;
6944 if (var58){
6945 if (varonce59) {
6946 var60 = varonce59;
6947 } else {
6948 var61 = " = 0; /* is_same_type_test: incompatible types ";
6949 var62 = 47;
6950 var63 = string__NativeString__to_s_with_length(var61, var62);
6951 var60 = var63;
6952 varonce59 = var60;
6953 }
6954 var64 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6955 if (varonce65) {
6956 var66 = varonce65;
6957 } else {
6958 var67 = " vs. ";
6959 var68 = 5;
6960 var69 = string__NativeString__to_s_with_length(var67, var68);
6961 var66 = var69;
6962 varonce65 = var66;
6963 }
6964 var70 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
6965 if (varonce71) {
6966 var72 = varonce71;
6967 } else {
6968 var73 = "*/";
6969 var74 = 2;
6970 var75 = string__NativeString__to_s_with_length(var73, var74);
6971 var72 = var75;
6972 varonce71 = var72;
6973 }
6974 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
6975 { /* var76 = array_instance Array[Object] */
6976 var77 = 6;
6977 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
6978 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_res;
6979 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var60;
6980 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var64;
6981 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var66;
6982 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70;
6983 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72;
6984 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
6985 CHECK_NEW_array__Array(var76);
6986 }
6987 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
6988 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on <self:SeparateCompilerVisitor>*/;
6989 } else {
6990 var80 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
6991 /* <var80:MType> isa MClassType */
6992 cltype = type_model__MClassType.color;
6993 idtype = type_model__MClassType.id;
6994 if(cltype >= var80->type->table_size) {
6995 var81 = 0;
6996 } else {
6997 var81 = var80->type->type_table[cltype] == idtype;
6998 }
6999 if (!var81) {
7000 var_class_name = var80 == NULL ? "null" : var80->type->name;
7001 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
7002 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1392);
7003 exit(1);
7004 }
7005 var_mtype1 = var80;
7006 if (varonce82) {
7007 var83 = varonce82;
7008 } else {
7009 var84 = "class_";
7010 var85 = 6;
7011 var86 = string__NativeString__to_s_with_length(var84, var85);
7012 var83 = var86;
7013 varonce82 = var83;
7014 }
7015 var87 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
7016 var88 = NEW_array__Array(&type_array__Arraykernel__Object);
7017 { /* var88 = array_instance Array[Object] */
7018 var89 = 2;
7019 var90 = NEW_array__NativeArray(var89, &type_array__NativeArraykernel__Object);
7020 ((struct instance_array__NativeArray*)var90)->values[0] = (val*) var83;
7021 ((struct instance_array__NativeArray*)var90)->values[1] = (val*) var87;
7022 ((void (*)(val*, val*, long))(var88->class->vft[COLOR_array__Array__with_native]))(var88, var90, var89) /* with_native on <var88:Array[Object]>*/;
7023 CHECK_NEW_array__Array(var88);
7024 }
7025 var91 = ((val* (*)(val*))(var88->class->vft[COLOR_string__Object__to_s]))(var88) /* to_s on <var88:Array[Object]>*/;
7026 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var91) /* require_declaration on <self:SeparateCompilerVisitor>*/;
7027 if (varonce92) {
7028 var93 = varonce92;
7029 } else {
7030 var94 = " = (";
7031 var95 = 4;
7032 var96 = string__NativeString__to_s_with_length(var94, var95);
7033 var93 = var96;
7034 varonce92 = var93;
7035 }
7036 if (varonce97) {
7037 var98 = varonce97;
7038 } else {
7039 var99 = " != NULL) && (";
7040 var100 = 14;
7041 var101 = string__NativeString__to_s_with_length(var99, var100);
7042 var98 = var101;
7043 varonce97 = var98;
7044 }
7045 if (varonce102) {
7046 var103 = varonce102;
7047 } else {
7048 var104 = "->class == &class_";
7049 var105 = 18;
7050 var106 = string__NativeString__to_s_with_length(var104, var105);
7051 var103 = var106;
7052 varonce102 = var103;
7053 }
7054 var107 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
7055 if (varonce108) {
7056 var109 = varonce108;
7057 } else {
7058 var110 = "); /* is_same_type_test */";
7059 var111 = 26;
7060 var112 = string__NativeString__to_s_with_length(var110, var111);
7061 var109 = var112;
7062 varonce108 = var109;
7063 }
7064 var113 = NEW_array__Array(&type_array__Arraykernel__Object);
7065 { /* var113 = array_instance Array[Object] */
7066 var114 = 8;
7067 var115 = NEW_array__NativeArray(var114, &type_array__NativeArraykernel__Object);
7068 ((struct instance_array__NativeArray*)var115)->values[0] = (val*) var_res;
7069 ((struct instance_array__NativeArray*)var115)->values[1] = (val*) var93;
7070 ((struct instance_array__NativeArray*)var115)->values[2] = (val*) var_value2;
7071 ((struct instance_array__NativeArray*)var115)->values[3] = (val*) var98;
7072 ((struct instance_array__NativeArray*)var115)->values[4] = (val*) var_value2;
7073 ((struct instance_array__NativeArray*)var115)->values[5] = (val*) var103;
7074 ((struct instance_array__NativeArray*)var115)->values[6] = (val*) var107;
7075 ((struct instance_array__NativeArray*)var115)->values[7] = (val*) var109;
7076 ((void (*)(val*, val*, long))(var113->class->vft[COLOR_array__Array__with_native]))(var113, var115, var114) /* with_native on <var113:Array[Object]>*/;
7077 CHECK_NEW_array__Array(var113);
7078 }
7079 var116 = ((val* (*)(val*))(var113->class->vft[COLOR_string__Object__to_s]))(var113) /* to_s on <var113:Array[Object]>*/;
7080 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var116) /* add on <self:SeparateCompilerVisitor>*/;
7081 }
7082 }
7083 } else {
7084 if (varonce117) {
7085 var118 = varonce117;
7086 } else {
7087 var119 = " = (";
7088 var120 = 4;
7089 var121 = string__NativeString__to_s_with_length(var119, var120);
7090 var118 = var121;
7091 varonce117 = var118;
7092 }
7093 if (varonce122) {
7094 var123 = varonce122;
7095 } else {
7096 var124 = " == ";
7097 var125 = 4;
7098 var126 = string__NativeString__to_s_with_length(var124, var125);
7099 var123 = var126;
7100 varonce122 = var123;
7101 }
7102 if (varonce127) {
7103 var128 = varonce127;
7104 } else {
7105 var129 = ") || (";
7106 var130 = 6;
7107 var131 = string__NativeString__to_s_with_length(var129, var130);
7108 var128 = var131;
7109 varonce127 = var128;
7110 }
7111 if (varonce132) {
7112 var133 = varonce132;
7113 } else {
7114 var134 = " != NULL && ";
7115 var135 = 12;
7116 var136 = string__NativeString__to_s_with_length(var134, var135);
7117 var133 = var136;
7118 varonce132 = var133;
7119 }
7120 if (varonce137) {
7121 var138 = varonce137;
7122 } else {
7123 var139 = " != NULL && ";
7124 var140 = 12;
7125 var141 = string__NativeString__to_s_with_length(var139, var140);
7126 var138 = var141;
7127 varonce137 = var138;
7128 }
7129 if (varonce142) {
7130 var143 = varonce142;
7131 } else {
7132 var144 = "->class == ";
7133 var145 = 11;
7134 var146 = string__NativeString__to_s_with_length(var144, var145);
7135 var143 = var146;
7136 varonce142 = var143;
7137 }
7138 if (varonce147) {
7139 var148 = varonce147;
7140 } else {
7141 var149 = "->class); /* is_same_type_test */";
7142 var150 = 33;
7143 var151 = string__NativeString__to_s_with_length(var149, var150);
7144 var148 = var151;
7145 varonce147 = var148;
7146 }
7147 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
7148 { /* var152 = array_instance Array[Object] */
7149 var153 = 14;
7150 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
7151 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var_res;
7152 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var118;
7153 ((struct instance_array__NativeArray*)var154)->values[2] = (val*) var_value1;
7154 ((struct instance_array__NativeArray*)var154)->values[3] = (val*) var123;
7155 ((struct instance_array__NativeArray*)var154)->values[4] = (val*) var_value2;
7156 ((struct instance_array__NativeArray*)var154)->values[5] = (val*) var128;
7157 ((struct instance_array__NativeArray*)var154)->values[6] = (val*) var_value1;
7158 ((struct instance_array__NativeArray*)var154)->values[7] = (val*) var133;
7159 ((struct instance_array__NativeArray*)var154)->values[8] = (val*) var_value2;
7160 ((struct instance_array__NativeArray*)var154)->values[9] = (val*) var138;
7161 ((struct instance_array__NativeArray*)var154)->values[10] = (val*) var_value1;
7162 ((struct instance_array__NativeArray*)var154)->values[11] = (val*) var143;
7163 ((struct instance_array__NativeArray*)var154)->values[12] = (val*) var_value2;
7164 ((struct instance_array__NativeArray*)var154)->values[13] = (val*) var148;
7165 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
7166 CHECK_NEW_array__Array(var152);
7167 }
7168 var155 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
7169 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var155) /* add on <self:SeparateCompilerVisitor>*/;
7170 }
7171 var = var_res;
7172 goto RET_LABEL;
7173 RET_LABEL:;
7174 return var;
7175 }
7176 /* method separate_compiler#SeparateCompilerVisitor#is_same_type_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7177 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__is_same_type_test(val* self, val* p0, val* p1) {
7178 val* var /* : RuntimeVariable */;
7179 val* var1 /* : RuntimeVariable */;
7180 var1 = separate_compiler__SeparateCompilerVisitor__is_same_type_test(self, p0, p1);
7181 var = var1;
7182 RET_LABEL:;
7183 return var;
7184 }
7185 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: SeparateCompilerVisitor, RuntimeVariable): String */
7186 val* separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
7187 val* var /* : String */;
7188 val* var_value /* var value: RuntimeVariable */;
7189 static val* varonce;
7190 val* var1 /* : String */;
7191 char* var2 /* : NativeString */;
7192 long var3 /* : Int */;
7193 val* var4 /* : String */;
7194 val* var5 /* : String */;
7195 val* var_res /* var res: String */;
7196 static val* varonce6;
7197 val* var7 /* : String */;
7198 char* var8 /* : NativeString */;
7199 long var9 /* : Int */;
7200 val* var10 /* : String */;
7201 static val* varonce11;
7202 val* var12 /* : String */;
7203 char* var13 /* : NativeString */;
7204 long var14 /* : Int */;
7205 val* var15 /* : String */;
7206 val* var16 /* : Array[Object] */;
7207 long var17 /* : Int */;
7208 val* var18 /* : NativeArray[Object] */;
7209 val* var19 /* : String */;
7210 val* var20 /* : MType */;
7211 val* var21 /* : String */;
7212 static val* varonce22;
7213 val* var23 /* : String */;
7214 char* var24 /* : NativeString */;
7215 long var25 /* : Int */;
7216 val* var26 /* : String */;
7217 short int var27 /* : Bool */;
7218 static val* varonce28;
7219 val* var29 /* : String */;
7220 char* var30 /* : NativeString */;
7221 long var31 /* : Int */;
7222 val* var32 /* : String */;
7223 static val* varonce33;
7224 val* var34 /* : String */;
7225 char* var35 /* : NativeString */;
7226 long var36 /* : Int */;
7227 val* var37 /* : String */;
7228 static val* varonce38;
7229 val* var39 /* : String */;
7230 char* var40 /* : NativeString */;
7231 long var41 /* : Int */;
7232 val* var42 /* : String */;
7233 val* var43 /* : Array[Object] */;
7234 long var44 /* : Int */;
7235 val* var45 /* : NativeArray[Object] */;
7236 val* var46 /* : String */;
7237 static val* varonce47;
7238 val* var48 /* : String */;
7239 char* var49 /* : NativeString */;
7240 long var50 /* : Int */;
7241 val* var51 /* : String */;
7242 val* var52 /* : MType */;
7243 val* var53 /* : String */;
7244 val* var54 /* : Array[Object] */;
7245 long var55 /* : Int */;
7246 val* var56 /* : NativeArray[Object] */;
7247 val* var57 /* : String */;
7248 static val* varonce58;
7249 val* var59 /* : String */;
7250 char* var60 /* : NativeString */;
7251 long var61 /* : Int */;
7252 val* var62 /* : String */;
7253 val* var63 /* : MType */;
7254 val* var64 /* : String */;
7255 static val* varonce65;
7256 val* var66 /* : String */;
7257 char* var67 /* : NativeString */;
7258 long var68 /* : Int */;
7259 val* var69 /* : String */;
7260 val* var70 /* : Array[Object] */;
7261 long var71 /* : Int */;
7262 val* var72 /* : NativeArray[Object] */;
7263 val* var73 /* : String */;
7264 var_value = p0;
7265 if (varonce) {
7266 var1 = varonce;
7267 } else {
7268 var2 = "var_class_name";
7269 var3 = 14;
7270 var4 = string__NativeString__to_s_with_length(var2, var3);
7271 var1 = var4;
7272 varonce = var1;
7273 }
7274 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(self, var1) /* get_name on <self:SeparateCompilerVisitor>*/;
7275 var_res = var5;
7276 if (varonce6) {
7277 var7 = varonce6;
7278 } else {
7279 var8 = "const char* ";
7280 var9 = 12;
7281 var10 = string__NativeString__to_s_with_length(var8, var9);
7282 var7 = var10;
7283 varonce6 = var7;
7284 }
7285 if (varonce11) {
7286 var12 = varonce11;
7287 } else {
7288 var13 = ";";
7289 var14 = 1;
7290 var15 = string__NativeString__to_s_with_length(var13, var14);
7291 var12 = var15;
7292 varonce11 = var12;
7293 }
7294 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
7295 { /* var16 = array_instance Array[Object] */
7296 var17 = 3;
7297 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
7298 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var7;
7299 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var_res;
7300 ((struct instance_array__NativeArray*)var18)->values[2] = (val*) var12;
7301 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
7302 CHECK_NEW_array__Array(var16);
7303 }
7304 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
7305 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(self, var19) /* add_decl on <self:SeparateCompilerVisitor>*/;
7306 var20 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7307 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_compiler__MType__ctype]))(var20) /* ctype on <var20:MType>*/;
7308 if (varonce22) {
7309 var23 = varonce22;
7310 } else {
7311 var24 = "val*";
7312 var25 = 4;
7313 var26 = string__NativeString__to_s_with_length(var24, var25);
7314 var23 = var26;
7315 varonce22 = var23;
7316 }
7317 var27 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var23) /* == on <var21:String>*/;
7318 if (var27){
7319 if (varonce28) {
7320 var29 = varonce28;
7321 } else {
7322 var30 = " = ";
7323 var31 = 3;
7324 var32 = string__NativeString__to_s_with_length(var30, var31);
7325 var29 = var32;
7326 varonce28 = var29;
7327 }
7328 if (varonce33) {
7329 var34 = varonce33;
7330 } else {
7331 var35 = " == NULL ? \"null\" : ";
7332 var36 = 20;
7333 var37 = string__NativeString__to_s_with_length(var35, var36);
7334 var34 = var37;
7335 varonce33 = var34;
7336 }
7337 if (varonce38) {
7338 var39 = varonce38;
7339 } else {
7340 var40 = "->type->name;";
7341 var41 = 13;
7342 var42 = string__NativeString__to_s_with_length(var40, var41);
7343 var39 = var42;
7344 varonce38 = var39;
7345 }
7346 var43 = NEW_array__Array(&type_array__Arraykernel__Object);
7347 { /* var43 = array_instance Array[Object] */
7348 var44 = 6;
7349 var45 = NEW_array__NativeArray(var44, &type_array__NativeArraykernel__Object);
7350 ((struct instance_array__NativeArray*)var45)->values[0] = (val*) var_res;
7351 ((struct instance_array__NativeArray*)var45)->values[1] = (val*) var29;
7352 ((struct instance_array__NativeArray*)var45)->values[2] = (val*) var_value;
7353 ((struct instance_array__NativeArray*)var45)->values[3] = (val*) var34;
7354 ((struct instance_array__NativeArray*)var45)->values[4] = (val*) var_value;
7355 ((struct instance_array__NativeArray*)var45)->values[5] = (val*) var39;
7356 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_array__Array__with_native]))(var43, var45, var44) /* with_native on <var43:Array[Object]>*/;
7357 CHECK_NEW_array__Array(var43);
7358 }
7359 var46 = ((val* (*)(val*))(var43->class->vft[COLOR_string__Object__to_s]))(var43) /* to_s on <var43:Array[Object]>*/;
7360 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var46) /* add on <self:SeparateCompilerVisitor>*/;
7361 } else {
7362 if (varonce47) {
7363 var48 = varonce47;
7364 } else {
7365 var49 = "type_";
7366 var50 = 5;
7367 var51 = string__NativeString__to_s_with_length(var49, var50);
7368 var48 = var51;
7369 varonce47 = var48;
7370 }
7371 var52 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7372 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_abstract_compiler__MType__c_name]))(var52) /* c_name on <var52:MType>*/;
7373 var54 = NEW_array__Array(&type_array__Arraykernel__Object);
7374 { /* var54 = array_instance Array[Object] */
7375 var55 = 2;
7376 var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
7377 ((struct instance_array__NativeArray*)var56)->values[0] = (val*) var48;
7378 ((struct instance_array__NativeArray*)var56)->values[1] = (val*) var53;
7379 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
7380 CHECK_NEW_array__Array(var54);
7381 }
7382 var57 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
7383 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var57) /* require_declaration on <self:SeparateCompilerVisitor>*/;
7384 if (varonce58) {
7385 var59 = varonce58;
7386 } else {
7387 var60 = " = type_";
7388 var61 = 8;
7389 var62 = string__NativeString__to_s_with_length(var60, var61);
7390 var59 = var62;
7391 varonce58 = var59;
7392 }
7393 var63 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
7394 var64 = ((val* (*)(val*))(var63->class->vft[COLOR_abstract_compiler__MType__c_name]))(var63) /* c_name on <var63:MType>*/;
7395 if (varonce65) {
7396 var66 = varonce65;
7397 } else {
7398 var67 = ".name;";
7399 var68 = 6;
7400 var69 = string__NativeString__to_s_with_length(var67, var68);
7401 var66 = var69;
7402 varonce65 = var66;
7403 }
7404 var70 = NEW_array__Array(&type_array__Arraykernel__Object);
7405 { /* var70 = array_instance Array[Object] */
7406 var71 = 4;
7407 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraykernel__Object);
7408 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var_res;
7409 ((struct instance_array__NativeArray*)var72)->values[1] = (val*) var59;
7410 ((struct instance_array__NativeArray*)var72)->values[2] = (val*) var64;
7411 ((struct instance_array__NativeArray*)var72)->values[3] = (val*) var66;
7412 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[Object]>*/;
7413 CHECK_NEW_array__Array(var70);
7414 }
7415 var73 = ((val* (*)(val*))(var70->class->vft[COLOR_string__Object__to_s]))(var70) /* to_s on <var70:Array[Object]>*/;
7416 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var73) /* add on <self:SeparateCompilerVisitor>*/;
7417 }
7418 var = var_res;
7419 goto RET_LABEL;
7420 RET_LABEL:;
7421 return var;
7422 }
7423 /* method separate_compiler#SeparateCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
7424 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__class_name_string(val* self, val* p0) {
7425 val* var /* : String */;
7426 val* var1 /* : String */;
7427 var1 = separate_compiler__SeparateCompilerVisitor__class_name_string(self, p0);
7428 var = var1;
7429 RET_LABEL:;
7430 return var;
7431 }
7432 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: SeparateCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
7433 val* separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
7434 val* var /* : RuntimeVariable */;
7435 val* var_value1 /* var value1: RuntimeVariable */;
7436 val* var_value2 /* var value2: RuntimeVariable */;
7437 val* var1 /* : MClassType */;
7438 val* var2 /* : RuntimeVariable */;
7439 val* var_res /* var res: RuntimeVariable */;
7440 short int var3 /* : Bool */;
7441 val* var4 /* : MType */;
7442 val* var5 /* : String */;
7443 static val* varonce;
7444 val* var6 /* : String */;
7445 char* var7 /* : NativeString */;
7446 long var8 /* : Int */;
7447 val* var9 /* : String */;
7448 short int var10 /* : Bool */;
7449 short int var_ /* var : Bool */;
7450 val* var11 /* : MType */;
7451 val* var12 /* : String */;
7452 static val* varonce13;
7453 val* var14 /* : String */;
7454 char* var15 /* : NativeString */;
7455 long var16 /* : Int */;
7456 val* var17 /* : String */;
7457 short int var18 /* : Bool */;
7458 val* var_tmp /* var tmp: RuntimeVariable */;
7459 val* var19 /* : MType */;
7460 val* var20 /* : String */;
7461 static val* varonce21;
7462 val* var22 /* : String */;
7463 char* var23 /* : NativeString */;
7464 long var24 /* : Int */;
7465 val* var25 /* : String */;
7466 short int var26 /* : Bool */;
7467 val* var27 /* : MType */;
7468 val* var28 /* : MType */;
7469 short int var29 /* : Bool */;
7470 static val* varonce30;
7471 val* var31 /* : String */;
7472 char* var32 /* : NativeString */;
7473 long var33 /* : Int */;
7474 val* var34 /* : String */;
7475 static val* varonce35;
7476 val* var36 /* : String */;
7477 char* var37 /* : NativeString */;
7478 long var38 /* : Int */;
7479 val* var39 /* : String */;
7480 static val* varonce40;
7481 val* var41 /* : String */;
7482 char* var42 /* : NativeString */;
7483 long var43 /* : Int */;
7484 val* var44 /* : String */;
7485 val* var45 /* : Array[Object] */;
7486 long var46 /* : Int */;
7487 val* var47 /* : NativeArray[Object] */;
7488 val* var48 /* : String */;
7489 val* var49 /* : MType */;
7490 val* var50 /* : String */;
7491 static val* varonce51;
7492 val* var52 /* : String */;
7493 char* var53 /* : NativeString */;
7494 long var54 /* : Int */;
7495 val* var55 /* : String */;
7496 short int var56 /* : Bool */;
7497 static val* varonce57;
7498 val* var58 /* : String */;
7499 char* var59 /* : NativeString */;
7500 long var60 /* : Int */;
7501 val* var61 /* : String */;
7502 val* var62 /* : MType */;
7503 static val* varonce63;
7504 val* var64 /* : String */;
7505 char* var65 /* : NativeString */;
7506 long var66 /* : Int */;
7507 val* var67 /* : String */;
7508 val* var68 /* : MType */;
7509 static val* varonce69;
7510 val* var70 /* : String */;
7511 char* var71 /* : NativeString */;
7512 long var72 /* : Int */;
7513 val* var73 /* : String */;
7514 val* var74 /* : Array[Object] */;
7515 long var75 /* : Int */;
7516 val* var76 /* : NativeArray[Object] */;
7517 val* var77 /* : String */;
7518 val* var78 /* : MType */;
7519 short int var79 /* : Bool */;
7520 int cltype;
7521 int idtype;
7522 const char* var_class_name;
7523 val* var_mtype1 /* var mtype1: MClassType */;
7524 static val* varonce80;
7525 val* var81 /* : String */;
7526 char* var82 /* : NativeString */;
7527 long var83 /* : Int */;
7528 val* var84 /* : String */;
7529 val* var85 /* : String */;
7530 val* var86 /* : Array[Object] */;
7531 long var87 /* : Int */;
7532 val* var88 /* : NativeArray[Object] */;
7533 val* var89 /* : String */;
7534 static val* varonce90;
7535 val* var91 /* : String */;
7536 char* var92 /* : NativeString */;
7537 long var93 /* : Int */;
7538 val* var94 /* : String */;
7539 static val* varonce95;
7540 val* var96 /* : String */;
7541 char* var97 /* : NativeString */;
7542 long var98 /* : Int */;
7543 val* var99 /* : String */;
7544 static val* varonce100;
7545 val* var101 /* : String */;
7546 char* var102 /* : NativeString */;
7547 long var103 /* : Int */;
7548 val* var104 /* : String */;
7549 val* var105 /* : String */;
7550 static val* varonce106;
7551 val* var107 /* : String */;
7552 char* var108 /* : NativeString */;
7553 long var109 /* : Int */;
7554 val* var110 /* : String */;
7555 val* var111 /* : Array[Object] */;
7556 long var112 /* : Int */;
7557 val* var113 /* : NativeArray[Object] */;
7558 val* var114 /* : String */;
7559 static val* varonce115;
7560 val* var116 /* : String */;
7561 char* var117 /* : NativeString */;
7562 long var118 /* : Int */;
7563 val* var119 /* : String */;
7564 static val* varonce120;
7565 val* var121 /* : String */;
7566 char* var122 /* : NativeString */;
7567 long var123 /* : Int */;
7568 val* var124 /* : String */;
7569 val* var125 /* : Array[Object] */;
7570 long var126 /* : Int */;
7571 val* var127 /* : NativeArray[Object] */;
7572 val* var128 /* : String */;
7573 static val* varonce129;
7574 val* var130 /* : String */;
7575 char* var131 /* : NativeString */;
7576 long var132 /* : Int */;
7577 val* var133 /* : String */;
7578 val* var134 /* : MType */;
7579 val* var135 /* : RuntimeVariable */;
7580 static val* varonce136;
7581 val* var137 /* : String */;
7582 char* var138 /* : NativeString */;
7583 long var139 /* : Int */;
7584 val* var140 /* : String */;
7585 static val* varonce141;
7586 val* var142 /* : String */;
7587 char* var143 /* : NativeString */;
7588 long var144 /* : Int */;
7589 val* var145 /* : String */;
7590 val* var146 /* : Array[Object] */;
7591 long var147 /* : Int */;
7592 val* var148 /* : NativeArray[Object] */;
7593 val* var149 /* : String */;
7594 static val* varonce150;
7595 val* var151 /* : String */;
7596 char* var152 /* : NativeString */;
7597 long var153 /* : Int */;
7598 val* var154 /* : String */;
7599 short int var155 /* : Bool */;
7600 short int var_maybe_null /* var maybe_null: Bool */;
7601 val* var156 /* : Array[String] */;
7602 val* var_test /* var test: Array[String] */;
7603 val* var157 /* : MType */;
7604 val* var_t1 /* var t1: MType */;
7605 short int var158 /* : Bool */;
7606 int cltype159;
7607 int idtype160;
7608 static val* varonce161;
7609 val* var162 /* : String */;
7610 char* var163 /* : NativeString */;
7611 long var164 /* : Int */;
7612 val* var165 /* : String */;
7613 val* var166 /* : Array[Object] */;
7614 long var167 /* : Int */;
7615 val* var168 /* : NativeArray[Object] */;
7616 val* var169 /* : String */;
7617 val* var170 /* : MType */;
7618 short int var171 /* : Bool */;
7619 val* var172 /* : MType */;
7620 val* var_t2 /* var t2: MType */;
7621 short int var173 /* : Bool */;
7622 int cltype174;
7623 int idtype175;
7624 static val* varonce176;
7625 val* var177 /* : String */;
7626 char* var178 /* : NativeString */;
7627 long var179 /* : Int */;
7628 val* var180 /* : String */;
7629 val* var181 /* : Array[Object] */;
7630 long var182 /* : Int */;
7631 val* var183 /* : NativeArray[Object] */;
7632 val* var184 /* : String */;
7633 val* var185 /* : MType */;
7634 short int var186 /* : Bool */;
7635 short int var187 /* : Bool */;
7636 short int var_incompatible /* var incompatible: Bool */;
7637 val* var188 /* : String */;
7638 static val* varonce189;
7639 val* var190 /* : String */;
7640 char* var191 /* : NativeString */;
7641 long var192 /* : Int */;
7642 val* var193 /* : String */;
7643 short int var194 /* : Bool */;
7644 val* var_primitive /* var primitive: nullable Object */;
7645 short int var195 /* : Bool */;
7646 val* var196 /* : String */;
7647 static val* varonce197;
7648 val* var198 /* : String */;
7649 char* var199 /* : NativeString */;
7650 long var200 /* : Int */;
7651 val* var201 /* : String */;
7652 short int var202 /* : Bool */;
7653 short int var203 /* : Bool */;
7654 short int var204 /* : Bool */;
7655 static val* varonce205;
7656 val* var206 /* : String */;
7657 char* var207 /* : NativeString */;
7658 long var208 /* : Int */;
7659 val* var209 /* : String */;
7660 static val* varonce210;
7661 val* var211 /* : String */;
7662 char* var212 /* : NativeString */;
7663 long var213 /* : Int */;
7664 val* var214 /* : String */;
7665 val* var215 /* : Array[Object] */;
7666 long var216 /* : Int */;
7667 val* var217 /* : NativeArray[Object] */;
7668 val* var218 /* : String */;
7669 short int var219 /* : Bool */;
7670 val* var220 /* : String */;
7671 static val* varonce221;
7672 val* var222 /* : String */;
7673 char* var223 /* : NativeString */;
7674 long var224 /* : Int */;
7675 val* var225 /* : String */;
7676 short int var226 /* : Bool */;
7677 short int var227 /* : Bool */;
7678 static val* varonce228;
7679 val* var229 /* : String */;
7680 char* var230 /* : NativeString */;
7681 long var231 /* : Int */;
7682 val* var232 /* : String */;
7683 static val* varonce233;
7684 val* var234 /* : String */;
7685 char* var235 /* : NativeString */;
7686 long var236 /* : Int */;
7687 val* var237 /* : String */;
7688 val* var238 /* : Array[Object] */;
7689 long var239 /* : Int */;
7690 val* var240 /* : NativeArray[Object] */;
7691 val* var241 /* : String */;
7692 short int var242 /* : Bool */;
7693 val* var243 /* : null */;
7694 static val* varonce244;
7695 val* var245 /* : String */;
7696 char* var246 /* : NativeString */;
7697 long var247 /* : Int */;
7698 val* var248 /* : String */;
7699 static val* varonce249;
7700 val* var250 /* : String */;
7701 char* var251 /* : NativeString */;
7702 long var252 /* : Int */;
7703 val* var253 /* : String */;
7704 static val* varonce254;
7705 val* var255 /* : String */;
7706 char* var256 /* : NativeString */;
7707 long var257 /* : Int */;
7708 val* var258 /* : String */;
7709 static val* varonce259;
7710 val* var260 /* : String */;
7711 char* var261 /* : NativeString */;
7712 long var262 /* : Int */;
7713 val* var263 /* : String */;
7714 static val* varonce264;
7715 val* var265 /* : String */;
7716 char* var266 /* : NativeString */;
7717 long var267 /* : Int */;
7718 val* var268 /* : String */;
7719 val* var269 /* : Array[Object] */;
7720 long var270 /* : Int */;
7721 val* var271 /* : NativeArray[Object] */;
7722 val* var272 /* : String */;
7723 static val* varonce273;
7724 val* var274 /* : String */;
7725 char* var275 /* : NativeString */;
7726 long var276 /* : Int */;
7727 val* var277 /* : String */;
7728 static val* varonce278;
7729 val* var279 /* : String */;
7730 char* var280 /* : NativeString */;
7731 long var281 /* : Int */;
7732 val* var282 /* : String */;
7733 static val* varonce283;
7734 val* var284 /* : String */;
7735 char* var285 /* : NativeString */;
7736 long var286 /* : Int */;
7737 val* var287 /* : String */;
7738 val* var288 /* : Array[Object] */;
7739 long var289 /* : Int */;
7740 val* var290 /* : NativeArray[Object] */;
7741 val* var291 /* : String */;
7742 val* var292 /* : null */;
7743 short int var293 /* : Bool */;
7744 static val* varonce294;
7745 val* var295 /* : String */;
7746 char* var296 /* : NativeString */;
7747 long var297 /* : Int */;
7748 val* var298 /* : String */;
7749 val* var299 /* : String */;
7750 static val* varonce300;
7751 val* var301 /* : String */;
7752 char* var302 /* : NativeString */;
7753 long var303 /* : Int */;
7754 val* var304 /* : String */;
7755 static val* varonce305;
7756 val* var306 /* : String */;
7757 char* var307 /* : NativeString */;
7758 long var308 /* : Int */;
7759 val* var309 /* : String */;
7760 val* var310 /* : String */;
7761 static val* varonce311;
7762 val* var312 /* : String */;
7763 char* var313 /* : NativeString */;
7764 long var314 /* : Int */;
7765 val* var315 /* : String */;
7766 static val* varonce316;
7767 val* var317 /* : String */;
7768 char* var318 /* : NativeString */;
7769 long var319 /* : Int */;
7770 val* var320 /* : String */;
7771 val* var321 /* : Array[Object] */;
7772 long var322 /* : Int */;
7773 val* var323 /* : NativeArray[Object] */;
7774 val* var324 /* : String */;
7775 short int var325 /* : Bool */;
7776 short int var326 /* : Bool */;
7777 short int var_327 /* var : Bool */;
7778 short int var328 /* : Bool */;
7779 static val* varonce329;
7780 val* var330 /* : String */;
7781 char* var331 /* : NativeString */;
7782 long var332 /* : Int */;
7783 val* var333 /* : String */;
7784 static val* varonce334;
7785 val* var335 /* : String */;
7786 char* var336 /* : NativeString */;
7787 long var337 /* : Int */;
7788 val* var338 /* : String */;
7789 val* var339 /* : Array[Object] */;
7790 long var340 /* : Int */;
7791 val* var341 /* : NativeArray[Object] */;
7792 val* var342 /* : String */;
7793 val* var343 /* : Array[String] */;
7794 val* var_s /* var s: Array[String] */;
7795 val* var344 /* : AbstractCompiler */;
7796 val* var345 /* : HashMap[MClass, Int] */;
7797 val* var346 /* : MapIterator[Object, nullable Object] */;
7798 short int var347 /* : Bool */;
7799 val* var348 /* : Object */;
7800 val* var_t /* var t: MClass */;
7801 val* var349 /* : nullable Object */;
7802 long var_v /* var v: Int */;
7803 long var350 /* : Int */;
7804 static val* varonce351;
7805 val* var352 /* : String */;
7806 char* var353 /* : NativeString */;
7807 long var354 /* : Int */;
7808 val* var355 /* : String */;
7809 static val* varonce356;
7810 val* var357 /* : String */;
7811 char* var358 /* : NativeString */;
7812 long var359 /* : Int */;
7813 val* var360 /* : String */;
7814 static val* varonce361;
7815 val* var362 /* : String */;
7816 char* var363 /* : NativeString */;
7817 long var364 /* : Int */;
7818 val* var365 /* : String */;
7819 val* var366 /* : String */;
7820 static val* varonce367;
7821 val* var368 /* : String */;
7822 char* var369 /* : NativeString */;
7823 long var370 /* : Int */;
7824 val* var371 /* : String */;
7825 static val* varonce372;
7826 val* var373 /* : String */;
7827 char* var374 /* : NativeString */;
7828 long var375 /* : Int */;
7829 val* var376 /* : String */;
7830 val* var377 /* : String */;
7831 static val* varonce378;
7832 val* var379 /* : String */;
7833 char* var380 /* : NativeString */;
7834 long var381 /* : Int */;
7835 val* var382 /* : String */;
7836 static val* varonce383;
7837 val* var384 /* : String */;
7838 char* var385 /* : NativeString */;
7839 long var386 /* : Int */;
7840 val* var387 /* : String */;
7841 val* var388 /* : Array[Object] */;
7842 long var389 /* : Int */;
7843 val* var390 /* : NativeArray[Object] */;
7844 val* var391 /* : Object */;
7845 val* var392 /* : String */;
7846 static val* varonce393;
7847 val* var394 /* : String */;
7848 char* var395 /* : NativeString */;
7849 long var396 /* : Int */;
7850 val* var397 /* : String */;
7851 static val* varonce398;
7852 val* var399 /* : String */;
7853 char* var400 /* : NativeString */;
7854 long var401 /* : Int */;
7855 val* var402 /* : String */;
7856 val* var403 /* : String */;
7857 static val* varonce404;
7858 val* var405 /* : String */;
7859 char* var406 /* : NativeString */;
7860 long var407 /* : Int */;
7861 val* var408 /* : String */;
7862 val* var409 /* : Array[Object] */;
7863 long var410 /* : Int */;
7864 val* var411 /* : NativeArray[Object] */;
7865 val* var412 /* : String */;
7866 static val* varonce413;
7867 val* var414 /* : String */;
7868 char* var415 /* : NativeString */;
7869 long var416 /* : Int */;
7870 val* var417 /* : String */;
7871 static val* varonce418;
7872 val* var419 /* : String */;
7873 char* var420 /* : NativeString */;
7874 long var421 /* : Int */;
7875 val* var422 /* : String */;
7876 static val* varonce423;
7877 val* var424 /* : String */;
7878 char* var425 /* : NativeString */;
7879 long var426 /* : Int */;
7880 val* var427 /* : String */;
7881 val* var428 /* : Array[Object] */;
7882 long var429 /* : Int */;
7883 val* var430 /* : NativeArray[Object] */;
7884 val* var431 /* : String */;
7885 static val* varonce432;
7886 val* var433 /* : String */;
7887 char* var434 /* : NativeString */;
7888 long var435 /* : Int */;
7889 val* var436 /* : String */;
7890 static val* varonce437;
7891 val* var438 /* : String */;
7892 char* var439 /* : NativeString */;
7893 long var440 /* : Int */;
7894 val* var441 /* : String */;
7895 static val* varonce442;
7896 val* var443 /* : String */;
7897 char* var444 /* : NativeString */;
7898 long var445 /* : Int */;
7899 val* var446 /* : String */;
7900 static val* varonce447;
7901 val* var448 /* : String */;
7902 char* var449 /* : NativeString */;
7903 long var450 /* : Int */;
7904 val* var451 /* : String */;
7905 val* var452 /* : String */;
7906 static val* varonce453;
7907 val* var454 /* : String */;
7908 char* var455 /* : NativeString */;
7909 long var456 /* : Int */;
7910 val* var457 /* : String */;
7911 val* var458 /* : Array[Object] */;
7912 long var459 /* : Int */;
7913 val* var460 /* : NativeArray[Object] */;
7914 val* var461 /* : String */;
7915 var_value1 = p0;
7916 var_value2 = p1;
7917 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:SeparateCompilerVisitor>*/;
7918 var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:SeparateCompilerVisitor>*/;
7919 var_res = var2;
7920 var4 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7921 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
7922 if (varonce) {
7923 var6 = varonce;
7924 } else {
7925 var7 = "val*";
7926 var8 = 4;
7927 var9 = string__NativeString__to_s_with_length(var7, var8);
7928 var6 = var9;
7929 varonce = var6;
7930 }
7931 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var6) /* != on <var5:String>*/;
7932 var_ = var10;
7933 if (var10){
7934 var11 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7935 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__MType__ctype]))(var11) /* ctype on <var11:MType>*/;
7936 if (varonce13) {
7937 var14 = varonce13;
7938 } else {
7939 var15 = "val*";
7940 var16 = 4;
7941 var17 = string__NativeString__to_s_with_length(var15, var16);
7942 var14 = var17;
7943 varonce13 = var14;
7944 }
7945 var18 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var14) /* == on <var12:String>*/;
7946 var3 = var18;
7947 } else {
7948 var3 = var_;
7949 }
7950 if (var3){
7951 var_tmp = var_value1;
7952 var_value1 = var_value2;
7953 var_value2 = var_tmp;
7954 } else {
7955 }
7956 var19 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7957 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_compiler__MType__ctype]))(var19) /* ctype on <var19:MType>*/;
7958 if (varonce21) {
7959 var22 = varonce21;
7960 } else {
7961 var23 = "val*";
7962 var24 = 4;
7963 var25 = string__NativeString__to_s_with_length(var23, var24);
7964 var22 = var25;
7965 varonce21 = var22;
7966 }
7967 var26 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___33d_61d]))(var20, var22) /* != on <var20:String>*/;
7968 if (var26){
7969 var27 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
7970 var28 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
7971 var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MType>*/;
7972 if (var29){
7973 if (varonce30) {
7974 var31 = varonce30;
7975 } else {
7976 var32 = " = ";
7977 var33 = 3;
7978 var34 = string__NativeString__to_s_with_length(var32, var33);
7979 var31 = var34;
7980 varonce30 = var31;
7981 }
7982 if (varonce35) {
7983 var36 = varonce35;
7984 } else {
7985 var37 = " == ";
7986 var38 = 4;
7987 var39 = string__NativeString__to_s_with_length(var37, var38);
7988 var36 = var39;
7989 varonce35 = var36;
7990 }
7991 if (varonce40) {
7992 var41 = varonce40;
7993 } else {
7994 var42 = ";";
7995 var43 = 1;
7996 var44 = string__NativeString__to_s_with_length(var42, var43);
7997 var41 = var44;
7998 varonce40 = var41;
7999 }
8000 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
8001 { /* var45 = array_instance Array[Object] */
8002 var46 = 6;
8003 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
8004 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var_res;
8005 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var31;
8006 ((struct instance_array__NativeArray*)var47)->values[2] = (val*) var_value1;
8007 ((struct instance_array__NativeArray*)var47)->values[3] = (val*) var36;
8008 ((struct instance_array__NativeArray*)var47)->values[4] = (val*) var_value2;
8009 ((struct instance_array__NativeArray*)var47)->values[5] = (val*) var41;
8010 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
8011 CHECK_NEW_array__Array(var45);
8012 }
8013 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
8014 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var48) /* add on <self:SeparateCompilerVisitor>*/;
8015 } else {
8016 var49 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
8017 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_compiler__MType__ctype]))(var49) /* ctype on <var49:MType>*/;
8018 if (varonce51) {
8019 var52 = varonce51;
8020 } else {
8021 var53 = "val*";
8022 var54 = 4;
8023 var55 = string__NativeString__to_s_with_length(var53, var54);
8024 var52 = var55;
8025 varonce51 = var52;
8026 }
8027 var56 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_kernel__Object___33d_61d]))(var50, var52) /* != on <var50:String>*/;
8028 if (var56){
8029 if (varonce57) {
8030 var58 = varonce57;
8031 } else {
8032 var59 = " = 0; /* incompatible types ";
8033 var60 = 28;
8034 var61 = string__NativeString__to_s_with_length(var59, var60);
8035 var58 = var61;
8036 varonce57 = var58;
8037 }
8038 var62 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
8039 if (varonce63) {
8040 var64 = varonce63;
8041 } else {
8042 var65 = " vs. ";
8043 var66 = 5;
8044 var67 = string__NativeString__to_s_with_length(var65, var66);
8045 var64 = var67;
8046 varonce63 = var64;
8047 }
8048 var68 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
8049 if (varonce69) {
8050 var70 = varonce69;
8051 } else {
8052 var71 = "*/";
8053 var72 = 2;
8054 var73 = string__NativeString__to_s_with_length(var71, var72);
8055 var70 = var73;
8056 varonce69 = var70;
8057 }
8058 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
8059 { /* var74 = array_instance Array[Object] */
8060 var75 = 6;
8061 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
8062 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var_res;
8063 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var58;
8064 ((struct instance_array__NativeArray*)var76)->values[2] = (val*) var62;
8065 ((struct instance_array__NativeArray*)var76)->values[3] = (val*) var64;
8066 ((struct instance_array__NativeArray*)var76)->values[4] = (val*) var68;
8067 ((struct instance_array__NativeArray*)var76)->values[5] = (val*) var70;
8068 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
8069 CHECK_NEW_array__Array(var74);
8070 }
8071 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
8072 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var77) /* add on <self:SeparateCompilerVisitor>*/;
8073 } else {
8074 var78 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
8075 /* <var78:MType> isa MClassType */
8076 cltype = type_model__MClassType.color;
8077 idtype = type_model__MClassType.id;
8078 if(cltype >= var78->type->table_size) {
8079 var79 = 0;
8080 } else {
8081 var79 = var78->type->type_table[cltype] == idtype;
8082 }
8083 if (!var79) {
8084 var_class_name = var78 == NULL ? "null" : var78->type->name;
8085 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
8086 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1429);
8087 exit(1);
8088 }
8089 var_mtype1 = var78;
8090 if (varonce80) {
8091 var81 = varonce80;
8092 } else {
8093 var82 = "class_";
8094 var83 = 6;
8095 var84 = string__NativeString__to_s_with_length(var82, var83);
8096 var81 = var84;
8097 varonce80 = var81;
8098 }
8099 var85 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
8100 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
8101 { /* var86 = array_instance Array[Object] */
8102 var87 = 2;
8103 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
8104 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var81;
8105 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var85;
8106 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
8107 CHECK_NEW_array__Array(var86);
8108 }
8109 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
8110 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var89) /* require_declaration on <self:SeparateCompilerVisitor>*/;
8111 if (varonce90) {
8112 var91 = varonce90;
8113 } else {
8114 var92 = " = (";
8115 var93 = 4;
8116 var94 = string__NativeString__to_s_with_length(var92, var93);
8117 var91 = var94;
8118 varonce90 = var91;
8119 }
8120 if (varonce95) {
8121 var96 = varonce95;
8122 } else {
8123 var97 = " != NULL) && (";
8124 var98 = 14;
8125 var99 = string__NativeString__to_s_with_length(var97, var98);
8126 var96 = var99;
8127 varonce95 = var96;
8128 }
8129 if (varonce100) {
8130 var101 = varonce100;
8131 } else {
8132 var102 = "->class == &class_";
8133 var103 = 18;
8134 var104 = string__NativeString__to_s_with_length(var102, var103);
8135 var101 = var104;
8136 varonce100 = var101;
8137 }
8138 var105 = ((val* (*)(val*))(var_mtype1->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype1) /* c_name on <var_mtype1:MClassType>*/;
8139 if (varonce106) {
8140 var107 = varonce106;
8141 } else {
8142 var108 = ");";
8143 var109 = 2;
8144 var110 = string__NativeString__to_s_with_length(var108, var109);
8145 var107 = var110;
8146 varonce106 = var107;
8147 }
8148 var111 = NEW_array__Array(&type_array__Arraykernel__Object);
8149 { /* var111 = array_instance Array[Object] */
8150 var112 = 8;
8151 var113 = NEW_array__NativeArray(var112, &type_array__NativeArraykernel__Object);
8152 ((struct instance_array__NativeArray*)var113)->values[0] = (val*) var_res;
8153 ((struct instance_array__NativeArray*)var113)->values[1] = (val*) var91;
8154 ((struct instance_array__NativeArray*)var113)->values[2] = (val*) var_value2;
8155 ((struct instance_array__NativeArray*)var113)->values[3] = (val*) var96;
8156 ((struct instance_array__NativeArray*)var113)->values[4] = (val*) var_value2;
8157 ((struct instance_array__NativeArray*)var113)->values[5] = (val*) var101;
8158 ((struct instance_array__NativeArray*)var113)->values[6] = (val*) var105;
8159 ((struct instance_array__NativeArray*)var113)->values[7] = (val*) var107;
8160 ((void (*)(val*, val*, long))(var111->class->vft[COLOR_array__Array__with_native]))(var111, var113, var112) /* with_native on <var111:Array[Object]>*/;
8161 CHECK_NEW_array__Array(var111);
8162 }
8163 var114 = ((val* (*)(val*))(var111->class->vft[COLOR_string__Object__to_s]))(var111) /* to_s on <var111:Array[Object]>*/;
8164 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var114) /* add on <self:SeparateCompilerVisitor>*/;
8165 if (varonce115) {
8166 var116 = varonce115;
8167 } else {
8168 var117 = "if (";
8169 var118 = 4;
8170 var119 = string__NativeString__to_s_with_length(var117, var118);
8171 var116 = var119;
8172 varonce115 = var116;
8173 }
8174 if (varonce120) {
8175 var121 = varonce120;
8176 } else {
8177 var122 = ") {";
8178 var123 = 3;
8179 var124 = string__NativeString__to_s_with_length(var122, var123);
8180 var121 = var124;
8181 varonce120 = var121;
8182 }
8183 var125 = NEW_array__Array(&type_array__Arraykernel__Object);
8184 { /* var125 = array_instance Array[Object] */
8185 var126 = 3;
8186 var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
8187 ((struct instance_array__NativeArray*)var127)->values[0] = (val*) var116;
8188 ((struct instance_array__NativeArray*)var127)->values[1] = (val*) var_res;
8189 ((struct instance_array__NativeArray*)var127)->values[2] = (val*) var121;
8190 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
8191 CHECK_NEW_array__Array(var125);
8192 }
8193 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
8194 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var128) /* add on <self:SeparateCompilerVisitor>*/;
8195 if (varonce129) {
8196 var130 = varonce129;
8197 } else {
8198 var131 = " = (";
8199 var132 = 4;
8200 var133 = string__NativeString__to_s_with_length(var131, var132);
8201 var130 = var133;
8202 varonce129 = var130;
8203 }
8204 var134 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
8205 var135 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value2, var134) /* autobox on <self:SeparateCompilerVisitor>*/;
8206 if (varonce136) {
8207 var137 = varonce136;
8208 } else {
8209 var138 = " == ";
8210 var139 = 4;
8211 var140 = string__NativeString__to_s_with_length(var138, var139);
8212 var137 = var140;
8213 varonce136 = var137;
8214 }
8215 if (varonce141) {
8216 var142 = varonce141;
8217 } else {
8218 var143 = ");";
8219 var144 = 2;
8220 var145 = string__NativeString__to_s_with_length(var143, var144);
8221 var142 = var145;
8222 varonce141 = var142;
8223 }
8224 var146 = NEW_array__Array(&type_array__Arraykernel__Object);
8225 { /* var146 = array_instance Array[Object] */
8226 var147 = 6;
8227 var148 = NEW_array__NativeArray(var147, &type_array__NativeArraykernel__Object);
8228 ((struct instance_array__NativeArray*)var148)->values[0] = (val*) var_res;
8229 ((struct instance_array__NativeArray*)var148)->values[1] = (val*) var130;
8230 ((struct instance_array__NativeArray*)var148)->values[2] = (val*) var135;
8231 ((struct instance_array__NativeArray*)var148)->values[3] = (val*) var137;
8232 ((struct instance_array__NativeArray*)var148)->values[4] = (val*) var_value1;
8233 ((struct instance_array__NativeArray*)var148)->values[5] = (val*) var142;
8234 ((void (*)(val*, val*, long))(var146->class->vft[COLOR_array__Array__with_native]))(var146, var148, var147) /* with_native on <var146:Array[Object]>*/;
8235 CHECK_NEW_array__Array(var146);
8236 }
8237 var149 = ((val* (*)(val*))(var146->class->vft[COLOR_string__Object__to_s]))(var146) /* to_s on <var146:Array[Object]>*/;
8238 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var149) /* add on <self:SeparateCompilerVisitor>*/;
8239 if (varonce150) {
8240 var151 = varonce150;
8241 } else {
8242 var152 = "}";
8243 var153 = 1;
8244 var154 = string__NativeString__to_s_with_length(var152, var153);
8245 var151 = var154;
8246 varonce150 = var151;
8247 }
8248 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var151) /* add on <self:SeparateCompilerVisitor>*/;
8249 }
8250 }
8251 var = var_res;
8252 goto RET_LABEL;
8253 } else {
8254 }
8255 var155 = 1;
8256 var_maybe_null = var155;
8257 var156 = NEW_array__Array(&type_array__Arraystring__String);
8258 ((void (*)(val*))(var156->class->vft[COLOR_array__Array__init]))(var156) /* init on <var156:Array[String]>*/;
8259 CHECK_NEW_array__Array(var156);
8260 var_test = var156;
8261 var157 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value1) /* mcasttype on <var_value1:RuntimeVariable>*/;
8262 var_t1 = var157;
8263 /* <var_t1:MType> isa MNullableType */
8264 cltype159 = type_model__MNullableType.color;
8265 idtype160 = type_model__MNullableType.id;
8266 if(cltype159 >= var_t1->type->table_size) {
8267 var158 = 0;
8268 } else {
8269 var158 = var_t1->type->type_table[cltype159] == idtype160;
8270 }
8271 if (var158){
8272 if (varonce161) {
8273 var162 = varonce161;
8274 } else {
8275 var163 = " != NULL";
8276 var164 = 8;
8277 var165 = string__NativeString__to_s_with_length(var163, var164);
8278 var162 = var165;
8279 varonce161 = var162;
8280 }
8281 var166 = NEW_array__Array(&type_array__Arraykernel__Object);
8282 { /* var166 = array_instance Array[Object] */
8283 var167 = 2;
8284 var168 = NEW_array__NativeArray(var167, &type_array__NativeArraykernel__Object);
8285 ((struct instance_array__NativeArray*)var168)->values[0] = (val*) var_value1;
8286 ((struct instance_array__NativeArray*)var168)->values[1] = (val*) var162;
8287 ((void (*)(val*, val*, long))(var166->class->vft[COLOR_array__Array__with_native]))(var166, var168, var167) /* with_native on <var166:Array[Object]>*/;
8288 CHECK_NEW_array__Array(var166);
8289 }
8290 var169 = ((val* (*)(val*))(var166->class->vft[COLOR_string__Object__to_s]))(var166) /* to_s on <var166:Array[Object]>*/;
8291 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var169) /* add on <var_test:Array[String]>*/;
8292 var170 = ((val* (*)(val*))(var_t1->class->vft[COLOR_model__MNullableType__mtype]))(var_t1) /* mtype on <var_t1:MType(MNullableType)>*/;
8293 var_t1 = var170;
8294 } else {
8295 var171 = 0;
8296 var_maybe_null = var171;
8297 }
8298 var172 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value2) /* mcasttype on <var_value2:RuntimeVariable>*/;
8299 var_t2 = var172;
8300 /* <var_t2:MType> isa MNullableType */
8301 cltype174 = type_model__MNullableType.color;
8302 idtype175 = type_model__MNullableType.id;
8303 if(cltype174 >= var_t2->type->table_size) {
8304 var173 = 0;
8305 } else {
8306 var173 = var_t2->type->type_table[cltype174] == idtype175;
8307 }
8308 if (var173){
8309 if (varonce176) {
8310 var177 = varonce176;
8311 } else {
8312 var178 = " != NULL";
8313 var179 = 8;
8314 var180 = string__NativeString__to_s_with_length(var178, var179);
8315 var177 = var180;
8316 varonce176 = var177;
8317 }
8318 var181 = NEW_array__Array(&type_array__Arraykernel__Object);
8319 { /* var181 = array_instance Array[Object] */
8320 var182 = 2;
8321 var183 = NEW_array__NativeArray(var182, &type_array__NativeArraykernel__Object);
8322 ((struct instance_array__NativeArray*)var183)->values[0] = (val*) var_value2;
8323 ((struct instance_array__NativeArray*)var183)->values[1] = (val*) var177;
8324 ((void (*)(val*, val*, long))(var181->class->vft[COLOR_array__Array__with_native]))(var181, var183, var182) /* with_native on <var181:Array[Object]>*/;
8325 CHECK_NEW_array__Array(var181);
8326 }
8327 var184 = ((val* (*)(val*))(var181->class->vft[COLOR_string__Object__to_s]))(var181) /* to_s on <var181:Array[Object]>*/;
8328 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var184) /* add on <var_test:Array[String]>*/;
8329 var185 = ((val* (*)(val*))(var_t2->class->vft[COLOR_model__MNullableType__mtype]))(var_t2) /* mtype on <var_t2:MType(MNullableType)>*/;
8330 var_t2 = var185;
8331 } else {
8332 var186 = 0;
8333 var_maybe_null = var186;
8334 }
8335 var187 = 0;
8336 var_incompatible = var187;
8337 var188 = ((val* (*)(val*))(var_t1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t1) /* ctype on <var_t1:MType>*/;
8338 if (varonce189) {
8339 var190 = varonce189;
8340 } else {
8341 var191 = "val*";
8342 var192 = 4;
8343 var193 = string__NativeString__to_s_with_length(var191, var192);
8344 var190 = var193;
8345 varonce189 = var190;
8346 }
8347 var194 = ((short int (*)(val*, val*))(var188->class->vft[COLOR_kernel__Object___33d_61d]))(var188, var190) /* != on <var188:String>*/;
8348 if (var194){
8349 var_primitive = var_t1;
8350 var195 = ((short int (*)(val*, val*))(var_t1->class->vft[COLOR_kernel__Object___61d_61d]))(var_t1, var_t2) /* == on <var_t1:MType>*/;
8351 if (var195){
8352 } else {
8353 var196 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
8354 if (varonce197) {
8355 var198 = varonce197;
8356 } else {
8357 var199 = "val*";
8358 var200 = 4;
8359 var201 = string__NativeString__to_s_with_length(var199, var200);
8360 var198 = var201;
8361 varonce197 = var198;
8362 }
8363 var202 = ((short int (*)(val*, val*))(var196->class->vft[COLOR_kernel__Object___33d_61d]))(var196, var198) /* != on <var196:String>*/;
8364 if (var202){
8365 var203 = 1;
8366 var_incompatible = var203;
8367 } else {
8368 var204 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value2) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8369 if (var204){
8370 if (varonce205) {
8371 var206 = varonce205;
8372 } else {
8373 var207 = "->class == ";
8374 var208 = 11;
8375 var209 = string__NativeString__to_s_with_length(var207, var208);
8376 var206 = var209;
8377 varonce205 = var206;
8378 }
8379 if (varonce210) {
8380 var211 = varonce210;
8381 } else {
8382 var212 = "->class";
8383 var213 = 7;
8384 var214 = string__NativeString__to_s_with_length(var212, var213);
8385 var211 = var214;
8386 varonce210 = var211;
8387 }
8388 var215 = NEW_array__Array(&type_array__Arraykernel__Object);
8389 { /* var215 = array_instance Array[Object] */
8390 var216 = 4;
8391 var217 = NEW_array__NativeArray(var216, &type_array__NativeArraykernel__Object);
8392 ((struct instance_array__NativeArray*)var217)->values[0] = (val*) var_value1;
8393 ((struct instance_array__NativeArray*)var217)->values[1] = (val*) var206;
8394 ((struct instance_array__NativeArray*)var217)->values[2] = (val*) var_value2;
8395 ((struct instance_array__NativeArray*)var217)->values[3] = (val*) var211;
8396 ((void (*)(val*, val*, long))(var215->class->vft[COLOR_array__Array__with_native]))(var215, var217, var216) /* with_native on <var215:Array[Object]>*/;
8397 CHECK_NEW_array__Array(var215);
8398 }
8399 var218 = ((val* (*)(val*))(var215->class->vft[COLOR_string__Object__to_s]))(var215) /* to_s on <var215:Array[Object]>*/;
8400 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var218) /* add on <var_test:Array[String]>*/;
8401 } else {
8402 var219 = 1;
8403 var_incompatible = var219;
8404 }
8405 }
8406 }
8407 } else {
8408 var220 = ((val* (*)(val*))(var_t2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t2) /* ctype on <var_t2:MType>*/;
8409 if (varonce221) {
8410 var222 = varonce221;
8411 } else {
8412 var223 = "val*";
8413 var224 = 4;
8414 var225 = string__NativeString__to_s_with_length(var223, var224);
8415 var222 = var225;
8416 varonce221 = var222;
8417 }
8418 var226 = ((short int (*)(val*, val*))(var220->class->vft[COLOR_kernel__Object___33d_61d]))(var220, var222) /* != on <var220:String>*/;
8419 if (var226){
8420 var_primitive = var_t2;
8421 var227 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value1) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8422 if (var227){
8423 if (varonce228) {
8424 var229 = varonce228;
8425 } else {
8426 var230 = "->class == ";
8427 var231 = 11;
8428 var232 = string__NativeString__to_s_with_length(var230, var231);
8429 var229 = var232;
8430 varonce228 = var229;
8431 }
8432 if (varonce233) {
8433 var234 = varonce233;
8434 } else {
8435 var235 = "->class";
8436 var236 = 7;
8437 var237 = string__NativeString__to_s_with_length(var235, var236);
8438 var234 = var237;
8439 varonce233 = var234;
8440 }
8441 var238 = NEW_array__Array(&type_array__Arraykernel__Object);
8442 { /* var238 = array_instance Array[Object] */
8443 var239 = 4;
8444 var240 = NEW_array__NativeArray(var239, &type_array__NativeArraykernel__Object);
8445 ((struct instance_array__NativeArray*)var240)->values[0] = (val*) var_value1;
8446 ((struct instance_array__NativeArray*)var240)->values[1] = (val*) var229;
8447 ((struct instance_array__NativeArray*)var240)->values[2] = (val*) var_value2;
8448 ((struct instance_array__NativeArray*)var240)->values[3] = (val*) var234;
8449 ((void (*)(val*, val*, long))(var238->class->vft[COLOR_array__Array__with_native]))(var238, var240, var239) /* with_native on <var238:Array[Object]>*/;
8450 CHECK_NEW_array__Array(var238);
8451 }
8452 var241 = ((val* (*)(val*))(var238->class->vft[COLOR_string__Object__to_s]))(var238) /* to_s on <var238:Array[Object]>*/;
8453 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var241) /* add on <var_test:Array[String]>*/;
8454 } else {
8455 var242 = 1;
8456 var_incompatible = var242;
8457 }
8458 } else {
8459 var243 = NULL;
8460 var_primitive = var243;
8461 }
8462 }
8463 if (var_incompatible){
8464 if (var_maybe_null){
8465 if (varonce244) {
8466 var245 = varonce244;
8467 } else {
8468 var246 = " = ";
8469 var247 = 3;
8470 var248 = string__NativeString__to_s_with_length(var246, var247);
8471 var245 = var248;
8472 varonce244 = var245;
8473 }
8474 if (varonce249) {
8475 var250 = varonce249;
8476 } else {
8477 var251 = " == ";
8478 var252 = 4;
8479 var253 = string__NativeString__to_s_with_length(var251, var252);
8480 var250 = var253;
8481 varonce249 = var250;
8482 }
8483 if (varonce254) {
8484 var255 = varonce254;
8485 } else {
8486 var256 = "; /* incompatible types ";
8487 var257 = 24;
8488 var258 = string__NativeString__to_s_with_length(var256, var257);
8489 var255 = var258;
8490 varonce254 = var255;
8491 }
8492 if (varonce259) {
8493 var260 = varonce259;
8494 } else {
8495 var261 = " vs. ";
8496 var262 = 5;
8497 var263 = string__NativeString__to_s_with_length(var261, var262);
8498 var260 = var263;
8499 varonce259 = var260;
8500 }
8501 if (varonce264) {
8502 var265 = varonce264;
8503 } else {
8504 var266 = "; but may be NULL*/";
8505 var267 = 19;
8506 var268 = string__NativeString__to_s_with_length(var266, var267);
8507 var265 = var268;
8508 varonce264 = var265;
8509 }
8510 var269 = NEW_array__Array(&type_array__Arraykernel__Object);
8511 { /* var269 = array_instance Array[Object] */
8512 var270 = 10;
8513 var271 = NEW_array__NativeArray(var270, &type_array__NativeArraykernel__Object);
8514 ((struct instance_array__NativeArray*)var271)->values[0] = (val*) var_res;
8515 ((struct instance_array__NativeArray*)var271)->values[1] = (val*) var245;
8516 ((struct instance_array__NativeArray*)var271)->values[2] = (val*) var_value1;
8517 ((struct instance_array__NativeArray*)var271)->values[3] = (val*) var250;
8518 ((struct instance_array__NativeArray*)var271)->values[4] = (val*) var_value2;
8519 ((struct instance_array__NativeArray*)var271)->values[5] = (val*) var255;
8520 ((struct instance_array__NativeArray*)var271)->values[6] = (val*) var_t1;
8521 ((struct instance_array__NativeArray*)var271)->values[7] = (val*) var260;
8522 ((struct instance_array__NativeArray*)var271)->values[8] = (val*) var_t2;
8523 ((struct instance_array__NativeArray*)var271)->values[9] = (val*) var265;
8524 ((void (*)(val*, val*, long))(var269->class->vft[COLOR_array__Array__with_native]))(var269, var271, var270) /* with_native on <var269:Array[Object]>*/;
8525 CHECK_NEW_array__Array(var269);
8526 }
8527 var272 = ((val* (*)(val*))(var269->class->vft[COLOR_string__Object__to_s]))(var269) /* to_s on <var269:Array[Object]>*/;
8528 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var272) /* add on <self:SeparateCompilerVisitor>*/;
8529 var = var_res;
8530 goto RET_LABEL;
8531 } else {
8532 if (varonce273) {
8533 var274 = varonce273;
8534 } else {
8535 var275 = " = 0; /* incompatible types ";
8536 var276 = 28;
8537 var277 = string__NativeString__to_s_with_length(var275, var276);
8538 var274 = var277;
8539 varonce273 = var274;
8540 }
8541 if (varonce278) {
8542 var279 = varonce278;
8543 } else {
8544 var280 = " vs. ";
8545 var281 = 5;
8546 var282 = string__NativeString__to_s_with_length(var280, var281);
8547 var279 = var282;
8548 varonce278 = var279;
8549 }
8550 if (varonce283) {
8551 var284 = varonce283;
8552 } else {
8553 var285 = "; cannot be NULL */";
8554 var286 = 19;
8555 var287 = string__NativeString__to_s_with_length(var285, var286);
8556 var284 = var287;
8557 varonce283 = var284;
8558 }
8559 var288 = NEW_array__Array(&type_array__Arraykernel__Object);
8560 { /* var288 = array_instance Array[Object] */
8561 var289 = 6;
8562 var290 = NEW_array__NativeArray(var289, &type_array__NativeArraykernel__Object);
8563 ((struct instance_array__NativeArray*)var290)->values[0] = (val*) var_res;
8564 ((struct instance_array__NativeArray*)var290)->values[1] = (val*) var274;
8565 ((struct instance_array__NativeArray*)var290)->values[2] = (val*) var_t1;
8566 ((struct instance_array__NativeArray*)var290)->values[3] = (val*) var279;
8567 ((struct instance_array__NativeArray*)var290)->values[4] = (val*) var_t2;
8568 ((struct instance_array__NativeArray*)var290)->values[5] = (val*) var284;
8569 ((void (*)(val*, val*, long))(var288->class->vft[COLOR_array__Array__with_native]))(var288, var290, var289) /* with_native on <var288:Array[Object]>*/;
8570 CHECK_NEW_array__Array(var288);
8571 }
8572 var291 = ((val* (*)(val*))(var288->class->vft[COLOR_string__Object__to_s]))(var288) /* to_s on <var288:Array[Object]>*/;
8573 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var291) /* add on <self:SeparateCompilerVisitor>*/;
8574 var = var_res;
8575 goto RET_LABEL;
8576 }
8577 } else {
8578 }
8579 var292 = NULL;
8580 if (var_primitive == NULL) {
8581 var293 = 0; /* is null */
8582 } else {
8583 var293 = 1; /* arg is null and recv is not */
8584 }
8585 if (var293){
8586 if (varonce294) {
8587 var295 = varonce294;
8588 } else {
8589 var296 = "((struct instance_";
8590 var297 = 18;
8591 var298 = string__NativeString__to_s_with_length(var296, var297);
8592 var295 = var298;
8593 varonce294 = var295;
8594 }
8595 var299 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_primitive) /* c_name on <var_primitive:nullable Object(MType)>*/;
8596 if (varonce300) {
8597 var301 = varonce300;
8598 } else {
8599 var302 = "*)";
8600 var303 = 2;
8601 var304 = string__NativeString__to_s_with_length(var302, var303);
8602 var301 = var304;
8603 varonce300 = var301;
8604 }
8605 if (varonce305) {
8606 var306 = varonce305;
8607 } else {
8608 var307 = ")->value == ((struct instance_";
8609 var308 = 30;
8610 var309 = string__NativeString__to_s_with_length(var307, var308);
8611 var306 = var309;
8612 varonce305 = var306;
8613 }
8614 var310 = ((val* (*)(val*))(var_primitive->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_primitive) /* c_name on <var_primitive:nullable Object(MType)>*/;
8615 if (varonce311) {
8616 var312 = varonce311;
8617 } else {
8618 var313 = "*)";
8619 var314 = 2;
8620 var315 = string__NativeString__to_s_with_length(var313, var314);
8621 var312 = var315;
8622 varonce311 = var312;
8623 }
8624 if (varonce316) {
8625 var317 = varonce316;
8626 } else {
8627 var318 = ")->value";
8628 var319 = 8;
8629 var320 = string__NativeString__to_s_with_length(var318, var319);
8630 var317 = var320;
8631 varonce316 = var317;
8632 }
8633 var321 = NEW_array__Array(&type_array__Arraykernel__Object);
8634 { /* var321 = array_instance Array[Object] */
8635 var322 = 9;
8636 var323 = NEW_array__NativeArray(var322, &type_array__NativeArraykernel__Object);
8637 ((struct instance_array__NativeArray*)var323)->values[0] = (val*) var295;
8638 ((struct instance_array__NativeArray*)var323)->values[1] = (val*) var299;
8639 ((struct instance_array__NativeArray*)var323)->values[2] = (val*) var301;
8640 ((struct instance_array__NativeArray*)var323)->values[3] = (val*) var_value1;
8641 ((struct instance_array__NativeArray*)var323)->values[4] = (val*) var306;
8642 ((struct instance_array__NativeArray*)var323)->values[5] = (val*) var310;
8643 ((struct instance_array__NativeArray*)var323)->values[6] = (val*) var312;
8644 ((struct instance_array__NativeArray*)var323)->values[7] = (val*) var_value2;
8645 ((struct instance_array__NativeArray*)var323)->values[8] = (val*) var317;
8646 ((void (*)(val*, val*, long))(var321->class->vft[COLOR_array__Array__with_native]))(var321, var323, var322) /* with_native on <var321:Array[Object]>*/;
8647 CHECK_NEW_array__Array(var321);
8648 }
8649 var324 = ((val* (*)(val*))(var321->class->vft[COLOR_string__Object__to_s]))(var321) /* to_s on <var321:Array[Object]>*/;
8650 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var324) /* add on <var_test:Array[String]>*/;
8651 } else {
8652 var326 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value1) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8653 var_327 = var326;
8654 if (var326){
8655 var328 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__can_be_primitive]))(self, var_value2) /* can_be_primitive on <self:SeparateCompilerVisitor>*/;
8656 var325 = var328;
8657 } else {
8658 var325 = var_327;
8659 }
8660 if (var325){
8661 if (varonce329) {
8662 var330 = varonce329;
8663 } else {
8664 var331 = "->class == ";
8665 var332 = 11;
8666 var333 = string__NativeString__to_s_with_length(var331, var332);
8667 var330 = var333;
8668 varonce329 = var330;
8669 }
8670 if (varonce334) {
8671 var335 = varonce334;
8672 } else {
8673 var336 = "->class";
8674 var337 = 7;
8675 var338 = string__NativeString__to_s_with_length(var336, var337);
8676 var335 = var338;
8677 varonce334 = var335;
8678 }
8679 var339 = NEW_array__Array(&type_array__Arraykernel__Object);
8680 { /* var339 = array_instance Array[Object] */
8681 var340 = 4;
8682 var341 = NEW_array__NativeArray(var340, &type_array__NativeArraykernel__Object);
8683 ((struct instance_array__NativeArray*)var341)->values[0] = (val*) var_value1;
8684 ((struct instance_array__NativeArray*)var341)->values[1] = (val*) var330;
8685 ((struct instance_array__NativeArray*)var341)->values[2] = (val*) var_value2;
8686 ((struct instance_array__NativeArray*)var341)->values[3] = (val*) var335;
8687 ((void (*)(val*, val*, long))(var339->class->vft[COLOR_array__Array__with_native]))(var339, var341, var340) /* with_native on <var339:Array[Object]>*/;
8688 CHECK_NEW_array__Array(var339);
8689 }
8690 var342 = ((val* (*)(val*))(var339->class->vft[COLOR_string__Object__to_s]))(var339) /* to_s on <var339:Array[Object]>*/;
8691 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var342) /* add on <var_test:Array[String]>*/;
8692 var343 = NEW_array__Array(&type_array__Arraystring__String);
8693 ((void (*)(val*))(var343->class->vft[COLOR_array__Array__init]))(var343) /* init on <var343:Array[String]>*/;
8694 CHECK_NEW_array__Array(var343);
8695 var_s = var343;
8696 var344 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
8697 var345 = ((val* (*)(val*))(var344->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(var344) /* box_kinds on <var344:AbstractCompiler(SeparateCompiler)>*/;
8698 var346 = ((val* (*)(val*))(var345->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var345) /* iterator on <var345:HashMap[MClass, Int]>*/;
8699 for(;;) {
8700 var347 = ((short int (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var346) /* is_ok on <var346:MapIterator[Object, nullable Object]>*/;
8701 if(!var347) break;
8702 var348 = ((val* (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__key]))(var346) /* key on <var346:MapIterator[Object, nullable Object]>*/;
8703 var_t = var348;
8704 var349 = ((val* (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__item]))(var346) /* item on <var346:MapIterator[Object, nullable Object]>*/;
8705 var350 = ((struct instance_kernel__Int*)var349)->value; /* autounbox from nullable Object to Int */;
8706 var_v = var350;
8707 if (varonce351) {
8708 var352 = varonce351;
8709 } else {
8710 var353 = "(";
8711 var354 = 1;
8712 var355 = string__NativeString__to_s_with_length(var353, var354);
8713 var352 = var355;
8714 varonce351 = var352;
8715 }
8716 if (varonce356) {
8717 var357 = varonce356;
8718 } else {
8719 var358 = "->class->box_kind == ";
8720 var359 = 21;
8721 var360 = string__NativeString__to_s_with_length(var358, var359);
8722 var357 = var360;
8723 varonce356 = var357;
8724 }
8725 if (varonce361) {
8726 var362 = varonce361;
8727 } else {
8728 var363 = " && ((struct instance_";
8729 var364 = 22;
8730 var365 = string__NativeString__to_s_with_length(var363, var364);
8731 var362 = var365;
8732 varonce361 = var362;
8733 }
8734 var366 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_t) /* c_name on <var_t:MClass>*/;
8735 if (varonce367) {
8736 var368 = varonce367;
8737 } else {
8738 var369 = "*)";
8739 var370 = 2;
8740 var371 = string__NativeString__to_s_with_length(var369, var370);
8741 var368 = var371;
8742 varonce367 = var368;
8743 }
8744 if (varonce372) {
8745 var373 = varonce372;
8746 } else {
8747 var374 = ")->value == ((struct instance_";
8748 var375 = 30;
8749 var376 = string__NativeString__to_s_with_length(var374, var375);
8750 var373 = var376;
8751 varonce372 = var373;
8752 }
8753 var377 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_t) /* c_name on <var_t:MClass>*/;
8754 if (varonce378) {
8755 var379 = varonce378;
8756 } else {
8757 var380 = "*)";
8758 var381 = 2;
8759 var382 = string__NativeString__to_s_with_length(var380, var381);
8760 var379 = var382;
8761 varonce378 = var379;
8762 }
8763 if (varonce383) {
8764 var384 = varonce383;
8765 } else {
8766 var385 = ")->value)";
8767 var386 = 9;
8768 var387 = string__NativeString__to_s_with_length(var385, var386);
8769 var384 = var387;
8770 varonce383 = var384;
8771 }
8772 var388 = NEW_array__Array(&type_array__Arraykernel__Object);
8773 { /* var388 = array_instance Array[Object] */
8774 var389 = 13;
8775 var390 = NEW_array__NativeArray(var389, &type_array__NativeArraykernel__Object);
8776 ((struct instance_array__NativeArray*)var390)->values[0] = (val*) var352;
8777 ((struct instance_array__NativeArray*)var390)->values[1] = (val*) var_value1;
8778 ((struct instance_array__NativeArray*)var390)->values[2] = (val*) var357;
8779 var391 = BOX_kernel__Int(var_v); /* autobox from Int to Object */
8780 ((struct instance_array__NativeArray*)var390)->values[3] = (val*) var391;
8781 ((struct instance_array__NativeArray*)var390)->values[4] = (val*) var362;
8782 ((struct instance_array__NativeArray*)var390)->values[5] = (val*) var366;
8783 ((struct instance_array__NativeArray*)var390)->values[6] = (val*) var368;
8784 ((struct instance_array__NativeArray*)var390)->values[7] = (val*) var_value1;
8785 ((struct instance_array__NativeArray*)var390)->values[8] = (val*) var373;
8786 ((struct instance_array__NativeArray*)var390)->values[9] = (val*) var377;
8787 ((struct instance_array__NativeArray*)var390)->values[10] = (val*) var379;
8788 ((struct instance_array__NativeArray*)var390)->values[11] = (val*) var_value2;
8789 ((struct instance_array__NativeArray*)var390)->values[12] = (val*) var384;
8790 ((void (*)(val*, val*, long))(var388->class->vft[COLOR_array__Array__with_native]))(var388, var390, var389) /* with_native on <var388:Array[Object]>*/;
8791 CHECK_NEW_array__Array(var388);
8792 }
8793 var392 = ((val* (*)(val*))(var388->class->vft[COLOR_string__Object__to_s]))(var388) /* to_s on <var388:Array[Object]>*/;
8794 ((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var392) /* add on <var_s:Array[String]>*/;
8795 CONTINUE_label: (void)0;
8796 ((void (*)(val*))(var346->class->vft[COLOR_abstract_collection__MapIterator__next]))(var346) /* next on <var346:MapIterator[Object, nullable Object]>*/;
8797 }
8798 BREAK_label: (void)0;
8799 if (varonce393) {
8800 var394 = varonce393;
8801 } else {
8802 var395 = "(";
8803 var396 = 1;
8804 var397 = string__NativeString__to_s_with_length(var395, var396);
8805 var394 = var397;
8806 varonce393 = var394;
8807 }
8808 if (varonce398) {
8809 var399 = varonce398;
8810 } else {
8811 var400 = " || ";
8812 var401 = 4;
8813 var402 = string__NativeString__to_s_with_length(var400, var401);
8814 var399 = var402;
8815 varonce398 = var399;
8816 }
8817 var403 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_string__Collection__join]))(var_s, var399) /* join on <var_s:Array[String]>*/;
8818 if (varonce404) {
8819 var405 = varonce404;
8820 } else {
8821 var406 = ")";
8822 var407 = 1;
8823 var408 = string__NativeString__to_s_with_length(var406, var407);
8824 var405 = var408;
8825 varonce404 = var405;
8826 }
8827 var409 = NEW_array__Array(&type_array__Arraykernel__Object);
8828 { /* var409 = array_instance Array[Object] */
8829 var410 = 3;
8830 var411 = NEW_array__NativeArray(var410, &type_array__NativeArraykernel__Object);
8831 ((struct instance_array__NativeArray*)var411)->values[0] = (val*) var394;
8832 ((struct instance_array__NativeArray*)var411)->values[1] = (val*) var403;
8833 ((struct instance_array__NativeArray*)var411)->values[2] = (val*) var405;
8834 ((void (*)(val*, val*, long))(var409->class->vft[COLOR_array__Array__with_native]))(var409, var411, var410) /* with_native on <var409:Array[Object]>*/;
8835 CHECK_NEW_array__Array(var409);
8836 }
8837 var412 = ((val* (*)(val*))(var409->class->vft[COLOR_string__Object__to_s]))(var409) /* to_s on <var409:Array[Object]>*/;
8838 ((void (*)(val*, val*))(var_test->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_test, var412) /* add on <var_test:Array[String]>*/;
8839 } else {
8840 if (varonce413) {
8841 var414 = varonce413;
8842 } else {
8843 var415 = " = ";
8844 var416 = 3;
8845 var417 = string__NativeString__to_s_with_length(var415, var416);
8846 var414 = var417;
8847 varonce413 = var414;
8848 }
8849 if (varonce418) {
8850 var419 = varonce418;
8851 } else {
8852 var420 = " == ";
8853 var421 = 4;
8854 var422 = string__NativeString__to_s_with_length(var420, var421);
8855 var419 = var422;
8856 varonce418 = var419;
8857 }
8858 if (varonce423) {
8859 var424 = varonce423;
8860 } else {
8861 var425 = ";";
8862 var426 = 1;
8863 var427 = string__NativeString__to_s_with_length(var425, var426);
8864 var424 = var427;
8865 varonce423 = var424;
8866 }
8867 var428 = NEW_array__Array(&type_array__Arraykernel__Object);
8868 { /* var428 = array_instance Array[Object] */
8869 var429 = 6;
8870 var430 = NEW_array__NativeArray(var429, &type_array__NativeArraykernel__Object);
8871 ((struct instance_array__NativeArray*)var430)->values[0] = (val*) var_res;
8872 ((struct instance_array__NativeArray*)var430)->values[1] = (val*) var414;
8873 ((struct instance_array__NativeArray*)var430)->values[2] = (val*) var_value1;
8874 ((struct instance_array__NativeArray*)var430)->values[3] = (val*) var419;
8875 ((struct instance_array__NativeArray*)var430)->values[4] = (val*) var_value2;
8876 ((struct instance_array__NativeArray*)var430)->values[5] = (val*) var424;
8877 ((void (*)(val*, val*, long))(var428->class->vft[COLOR_array__Array__with_native]))(var428, var430, var429) /* with_native on <var428:Array[Object]>*/;
8878 CHECK_NEW_array__Array(var428);
8879 }
8880 var431 = ((val* (*)(val*))(var428->class->vft[COLOR_string__Object__to_s]))(var428) /* to_s on <var428:Array[Object]>*/;
8881 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var431) /* add on <self:SeparateCompilerVisitor>*/;
8882 var = var_res;
8883 goto RET_LABEL;
8884 }
8885 }
8886 if (varonce432) {
8887 var433 = varonce432;
8888 } else {
8889 var434 = " = ";
8890 var435 = 3;
8891 var436 = string__NativeString__to_s_with_length(var434, var435);
8892 var433 = var436;
8893 varonce432 = var433;
8894 }
8895 if (varonce437) {
8896 var438 = varonce437;
8897 } else {
8898 var439 = " == ";
8899 var440 = 4;
8900 var441 = string__NativeString__to_s_with_length(var439, var440);
8901 var438 = var441;
8902 varonce437 = var438;
8903 }
8904 if (varonce442) {
8905 var443 = varonce442;
8906 } else {
8907 var444 = " || (";
8908 var445 = 5;
8909 var446 = string__NativeString__to_s_with_length(var444, var445);
8910 var443 = var446;
8911 varonce442 = var443;
8912 }
8913 if (varonce447) {
8914 var448 = varonce447;
8915 } else {
8916 var449 = " && ";
8917 var450 = 4;
8918 var451 = string__NativeString__to_s_with_length(var449, var450);
8919 var448 = var451;
8920 varonce447 = var448;
8921 }
8922 var452 = ((val* (*)(val*, val*))(var_test->class->vft[COLOR_string__Collection__join]))(var_test, var448) /* join on <var_test:Array[String]>*/;
8923 if (varonce453) {
8924 var454 = varonce453;
8925 } else {
8926 var455 = ");";
8927 var456 = 2;
8928 var457 = string__NativeString__to_s_with_length(var455, var456);
8929 var454 = var457;
8930 varonce453 = var454;
8931 }
8932 var458 = NEW_array__Array(&type_array__Arraykernel__Object);
8933 { /* var458 = array_instance Array[Object] */
8934 var459 = 8;
8935 var460 = NEW_array__NativeArray(var459, &type_array__NativeArraykernel__Object);
8936 ((struct instance_array__NativeArray*)var460)->values[0] = (val*) var_res;
8937 ((struct instance_array__NativeArray*)var460)->values[1] = (val*) var433;
8938 ((struct instance_array__NativeArray*)var460)->values[2] = (val*) var_value1;
8939 ((struct instance_array__NativeArray*)var460)->values[3] = (val*) var438;
8940 ((struct instance_array__NativeArray*)var460)->values[4] = (val*) var_value2;
8941 ((struct instance_array__NativeArray*)var460)->values[5] = (val*) var443;
8942 ((struct instance_array__NativeArray*)var460)->values[6] = (val*) var452;
8943 ((struct instance_array__NativeArray*)var460)->values[7] = (val*) var454;
8944 ((void (*)(val*, val*, long))(var458->class->vft[COLOR_array__Array__with_native]))(var458, var460, var459) /* with_native on <var458:Array[Object]>*/;
8945 CHECK_NEW_array__Array(var458);
8946 }
8947 var461 = ((val* (*)(val*))(var458->class->vft[COLOR_string__Object__to_s]))(var458) /* to_s on <var458:Array[Object]>*/;
8948 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var461) /* add on <self:SeparateCompilerVisitor>*/;
8949 var = var_res;
8950 goto RET_LABEL;
8951 RET_LABEL:;
8952 return var;
8953 }
8954 /* method separate_compiler#SeparateCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
8955 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
8956 val* var /* : RuntimeVariable */;
8957 val* var1 /* : RuntimeVariable */;
8958 var1 = separate_compiler__SeparateCompilerVisitor__equal_test(self, p0, p1);
8959 var = var1;
8960 RET_LABEL:;
8961 return var;
8962 }
8963 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
8964 short int separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
8965 short int var /* : Bool */;
8966 val* var_value /* var value: RuntimeVariable */;
8967 val* var1 /* : MType */;
8968 val* var_t /* var t: MType */;
8969 short int var2 /* : Bool */;
8970 int cltype;
8971 int idtype;
8972 val* var3 /* : MType */;
8973 short int var4 /* : Bool */;
8974 int cltype5;
8975 int idtype6;
8976 short int var7 /* : Bool */;
8977 short int var8 /* : Bool */;
8978 val* var9 /* : MClass */;
8979 val* var10 /* : MClassKind */;
8980 val* var_k /* var k: MClassKind */;
8981 short int var11 /* : Bool */;
8982 val* var12 /* : MClassKind */;
8983 short int var13 /* : Bool */;
8984 short int var_ /* var : Bool */;
8985 val* var14 /* : String */;
8986 static val* varonce;
8987 val* var15 /* : String */;
8988 char* var16 /* : NativeString */;
8989 long var17 /* : Int */;
8990 val* var18 /* : String */;
8991 short int var19 /* : Bool */;
8992 var_value = p0;
8993 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
8994 var_t = var1;
8995 /* <var_t:MType> isa MNullableType */
8996 cltype = type_model__MNullableType.color;
8997 idtype = type_model__MNullableType.id;
8998 if(cltype >= var_t->type->table_size) {
8999 var2 = 0;
9000 } else {
9001 var2 = var_t->type->type_table[cltype] == idtype;
9002 }
9003 if (var2){
9004 var3 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MNullableType__mtype]))(var_t) /* mtype on <var_t:MType(MNullableType)>*/;
9005 var_t = var3;
9006 } else {
9007 }
9008 /* <var_t:MType> isa MClassType */
9009 cltype5 = type_model__MClassType.color;
9010 idtype6 = type_model__MClassType.id;
9011 if(cltype5 >= var_t->type->table_size) {
9012 var4 = 0;
9013 } else {
9014 var4 = var_t->type->type_table[cltype5] == idtype6;
9015 }
9016 var7 = !var4;
9017 if (var7){
9018 var8 = 0;
9019 var = var8;
9020 goto RET_LABEL;
9021 } else {
9022 }
9023 var9 = ((val* (*)(val*))(var_t->class->vft[COLOR_model__MClassType__mclass]))(var_t) /* mclass on <var_t:MType(MClassType)>*/;
9024 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MClass__kind]))(var9) /* kind on <var9:MClass>*/;
9025 var_k = var10;
9026 var12 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:SeparateCompilerVisitor>*/;
9027 var13 = ((short int (*)(val*, val*))(var_k->class->vft[COLOR_kernel__Object___61d_61d]))(var_k, var12) /* == on <var_k:MClassKind>*/;
9028 var_ = var13;
9029 if (var13){
9030 var11 = var_;
9031 } else {
9032 var14 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MType(MClassType)>*/;
9033 if (varonce) {
9034 var15 = varonce;
9035 } else {
9036 var16 = "val*";
9037 var17 = 4;
9038 var18 = string__NativeString__to_s_with_length(var16, var17);
9039 var15 = var18;
9040 varonce = var15;
9041 }
9042 var19 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_kernel__Object___33d_61d]))(var14, var15) /* != on <var14:String>*/;
9043 var11 = var19;
9044 }
9045 var = var11;
9046 goto RET_LABEL;
9047 RET_LABEL:;
9048 return var;
9049 }
9050 /* method separate_compiler#SeparateCompilerVisitor#can_be_primitive for (self: Object, RuntimeVariable): Bool */
9051 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__can_be_primitive(val* self, val* p0) {
9052 short int var /* : Bool */;
9053 short int var1 /* : Bool */;
9054 var1 = separate_compiler__SeparateCompilerVisitor__can_be_primitive(self, p0);
9055 var = var1;
9056 RET_LABEL:;
9057 return var;
9058 }
9059 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: SeparateCompilerVisitor, RuntimeVariable): Bool */
9060 short int separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
9061 short int var /* : Bool */;
9062 val* var_value /* var value: RuntimeVariable */;
9063 val* var1 /* : MType */;
9064 val* var_t /* var t: MType */;
9065 short int var2 /* : Bool */;
9066 short int var3 /* : Bool */;
9067 int cltype;
9068 int idtype;
9069 short int var_ /* var : Bool */;
9070 short int var4 /* : Bool */;
9071 int cltype5;
9072 int idtype6;
9073 var_value = p0;
9074 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value) /* mcasttype on <var_value:RuntimeVariable>*/;
9075 var_t = var1;
9076 /* <var_t:MType> isa MNullableType */
9077 cltype = type_model__MNullableType.color;
9078 idtype = type_model__MNullableType.id;
9079 if(cltype >= var_t->type->table_size) {
9080 var3 = 0;
9081 } else {
9082 var3 = var_t->type->type_table[cltype] == idtype;
9083 }
9084 var_ = var3;
9085 if (var3){
9086 var2 = var_;
9087 } else {
9088 /* <var_t:MType> isa MNullType */
9089 cltype5 = type_model__MNullType.color;
9090 idtype6 = type_model__MNullType.id;
9091 if(cltype5 >= var_t->type->table_size) {
9092 var4 = 0;
9093 } else {
9094 var4 = var_t->type->type_table[cltype5] == idtype6;
9095 }
9096 var2 = var4;
9097 }
9098 var = var2;
9099 goto RET_LABEL;
9100 RET_LABEL:;
9101 return var;
9102 }
9103 /* method separate_compiler#SeparateCompilerVisitor#maybe_null for (self: Object, RuntimeVariable): Bool */
9104 short int VIRTUAL_separate_compiler__SeparateCompilerVisitor__maybe_null(val* self, val* p0) {
9105 short int var /* : Bool */;
9106 short int var1 /* : Bool */;
9107 var1 = separate_compiler__SeparateCompilerVisitor__maybe_null(self, p0);
9108 var = var1;
9109 RET_LABEL:;
9110 return var;
9111 }
9112 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: SeparateCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
9113 val* separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
9114 val* var /* : RuntimeVariable */;
9115 val* var_array /* var array: Array[RuntimeVariable] */;
9116 val* var_elttype /* var elttype: MType */;
9117 static val* varonce;
9118 val* var1 /* : String */;
9119 char* var2 /* : NativeString */;
9120 long var3 /* : Int */;
9121 val* var4 /* : String */;
9122 val* var5 /* : MClass */;
9123 val* var_nclass /* var nclass: MClass */;
9124 static val* varonce6;
9125 val* var7 /* : String */;
9126 char* var8 /* : NativeString */;
9127 long var9 /* : Int */;
9128 val* var10 /* : String */;
9129 val* var11 /* : MClass */;
9130 val* var_arrayclass /* var arrayclass: MClass */;
9131 val* var12 /* : Array[MType] */;
9132 long var13 /* : Int */;
9133 val* var14 /* : NativeArray[MType] */;
9134 val* var15 /* : MClassType */;
9135 val* var_arraytype /* var arraytype: MClassType */;
9136 val* var16 /* : RuntimeVariable */;
9137 val* var_res /* var res: RuntimeVariable */;
9138 static val* varonce17;
9139 val* var18 /* : String */;
9140 char* var19 /* : NativeString */;
9141 long var20 /* : Int */;
9142 val* var21 /* : String */;
9143 static val* varonce22;
9144 val* var23 /* : String */;
9145 char* var24 /* : NativeString */;
9146 long var25 /* : Int */;
9147 val* var26 /* : String */;
9148 static val* varonce27;
9149 val* var28 /* : String */;
9150 char* var29 /* : NativeString */;
9151 long var30 /* : Int */;
9152 val* var31 /* : String */;
9153 val* var32 /* : Array[Object] */;
9154 long var33 /* : Int */;
9155 val* var34 /* : NativeArray[Object] */;
9156 val* var35 /* : String */;
9157 long var36 /* : Int */;
9158 val* var37 /* : RuntimeVariable */;
9159 val* var_length /* var length: RuntimeVariable */;
9160 val* var38 /* : RuntimeVariable */;
9161 val* var_nat /* var nat: RuntimeVariable */;
9162 val* var39 /* : Range[Int] */;
9163 long var40 /* : Int */;
9164 long var41 /* : Int */;
9165 val* var42 /* : Discrete */;
9166 val* var43 /* : Discrete */;
9167 val* var44 /* : Iterator[nullable Object] */;
9168 short int var45 /* : Bool */;
9169 val* var46 /* : nullable Object */;
9170 long var_i /* var i: Int */;
9171 long var47 /* : Int */;
9172 val* var48 /* : nullable Object */;
9173 val* var49 /* : MClassType */;
9174 val* var50 /* : RuntimeVariable */;
9175 val* var_r /* var r: RuntimeVariable */;
9176 static val* varonce51;
9177 val* var52 /* : String */;
9178 char* var53 /* : NativeString */;
9179 long var54 /* : Int */;
9180 val* var55 /* : String */;
9181 val* var56 /* : String */;
9182 static val* varonce57;
9183 val* var58 /* : String */;
9184 char* var59 /* : NativeString */;
9185 long var60 /* : Int */;
9186 val* var61 /* : String */;
9187 static val* varonce62;
9188 val* var63 /* : String */;
9189 char* var64 /* : NativeString */;
9190 long var65 /* : Int */;
9191 val* var66 /* : String */;
9192 static val* varonce67;
9193 val* var68 /* : String */;
9194 char* var69 /* : NativeString */;
9195 long var70 /* : Int */;
9196 val* var71 /* : String */;
9197 static val* varonce72;
9198 val* var73 /* : String */;
9199 char* var74 /* : NativeString */;
9200 long var75 /* : Int */;
9201 val* var76 /* : String */;
9202 val* var77 /* : Array[Object] */;
9203 long var78 /* : Int */;
9204 val* var79 /* : NativeArray[Object] */;
9205 val* var80 /* : Object */;
9206 val* var81 /* : String */;
9207 static val* varonce82;
9208 val* var83 /* : String */;
9209 char* var84 /* : NativeString */;
9210 long var85 /* : Int */;
9211 val* var86 /* : String */;
9212 val* var87 /* : MClassDef */;
9213 val* var88 /* : MClassType */;
9214 val* var89 /* : MMethod */;
9215 val* var90 /* : Array[RuntimeVariable] */;
9216 long var91 /* : Int */;
9217 val* var92 /* : NativeArray[RuntimeVariable] */;
9218 val* var93 /* : nullable RuntimeVariable */;
9219 static val* varonce94;
9220 val* var95 /* : String */;
9221 char* var96 /* : NativeString */;
9222 long var97 /* : Int */;
9223 val* var98 /* : String */;
9224 var_array = p0;
9225 var_elttype = p1;
9226 if (varonce) {
9227 var1 = varonce;
9228 } else {
9229 var2 = "NativeArray";
9230 var3 = 11;
9231 var4 = string__NativeString__to_s_with_length(var2, var3);
9232 var1 = var4;
9233 varonce = var1;
9234 }
9235 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:SeparateCompilerVisitor>*/;
9236 var_nclass = var5;
9237 if (varonce6) {
9238 var7 = varonce6;
9239 } else {
9240 var8 = "Array";
9241 var9 = 5;
9242 var10 = string__NativeString__to_s_with_length(var8, var9);
9243 var7 = var10;
9244 varonce6 = var7;
9245 }
9246 var11 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var7) /* get_class on <self:SeparateCompilerVisitor>*/;
9247 var_arrayclass = var11;
9248 var12 = NEW_array__Array(&type_array__Arraymodel__MType);
9249 { /* var12 = array_instance Array[MType] */
9250 var13 = 1;
9251 var14 = NEW_array__NativeArray(var13, &type_array__NativeArraymodel__MType);
9252 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var_elttype;
9253 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[MType]>*/;
9254 CHECK_NEW_array__Array(var12);
9255 }
9256 var15 = ((val* (*)(val*, val*))(var_arrayclass->class->vft[COLOR_model__MClass__get_mtype]))(var_arrayclass, var12) /* get_mtype on <var_arrayclass:MClass>*/;
9257 var_arraytype = var15;
9258 var16 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(self, var_arraytype) /* init_instance on <self:SeparateCompilerVisitor>*/;
9259 var_res = var16;
9260 if (varonce17) {
9261 var18 = varonce17;
9262 } else {
9263 var19 = "{ /* ";
9264 var20 = 5;
9265 var21 = string__NativeString__to_s_with_length(var19, var20);
9266 var18 = var21;
9267 varonce17 = var18;
9268 }
9269 if (varonce22) {
9270 var23 = varonce22;
9271 } else {
9272 var24 = " = array_instance Array[";
9273 var25 = 24;
9274 var26 = string__NativeString__to_s_with_length(var24, var25);
9275 var23 = var26;
9276 varonce22 = var23;
9277 }
9278 if (varonce27) {
9279 var28 = varonce27;
9280 } else {
9281 var29 = "] */";
9282 var30 = 4;
9283 var31 = string__NativeString__to_s_with_length(var29, var30);
9284 var28 = var31;
9285 varonce27 = var28;
9286 }
9287 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
9288 { /* var32 = array_instance Array[Object] */
9289 var33 = 5;
9290 var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
9291 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var18;
9292 ((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_res;
9293 ((struct instance_array__NativeArray*)var34)->values[2] = (val*) var23;
9294 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_elttype;
9295 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
9296 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
9297 CHECK_NEW_array__Array(var32);
9298 }
9299 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
9300 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var35) /* add on <self:SeparateCompilerVisitor>*/;
9301 var36 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
9302 var37 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__int_instance]))(self, var36) /* int_instance on <self:SeparateCompilerVisitor>*/;
9303 var_length = var37;
9304 var38 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__native_array_instance]))(self, var_elttype, var_length) /* native_array_instance on <self:SeparateCompilerVisitor>*/;
9305 var_nat = var38;
9306 var39 = NEW_range__Range(&type_range__Rangekernel__Int);
9307 var40 = 0;
9308 var41 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
9309 var42 = BOX_kernel__Int(var40); /* autobox from Int to Discrete */
9310 var43 = BOX_kernel__Int(var41); /* autobox from Int to Discrete */
9311 ((void (*)(val*, val*, val*))(var39->class->vft[COLOR_range__Range__without_last]))(var39, var42, var43) /* without_last on <var39:Range[Int]>*/;
9312 CHECK_NEW_range__Range(var39);
9313 var44 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Range[Int]>*/;
9314 for(;;) {
9315 var45 = ((short int (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var44) /* is_ok on <var44:Iterator[nullable Object]>*/;
9316 if(!var45) break;
9317 var46 = ((val* (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__item]))(var44) /* item on <var44:Iterator[nullable Object]>*/;
9318 var47 = ((struct instance_kernel__Int*)var46)->value; /* autounbox from nullable Object to Int */;
9319 var_i = var47;
9320 var48 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[RuntimeVariable]>*/;
9321 var49 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(self) /* object_type on <self:SeparateCompilerVisitor>*/;
9322 var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var48, var49) /* autobox on <self:SeparateCompilerVisitor>*/;
9323 var_r = var50;
9324 if (varonce51) {
9325 var52 = varonce51;
9326 } else {
9327 var53 = "((struct instance_";
9328 var54 = 18;
9329 var55 = string__NativeString__to_s_with_length(var53, var54);
9330 var52 = var55;
9331 varonce51 = var52;
9332 }
9333 var56 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
9334 if (varonce57) {
9335 var58 = varonce57;
9336 } else {
9337 var59 = "*)";
9338 var60 = 2;
9339 var61 = string__NativeString__to_s_with_length(var59, var60);
9340 var58 = var61;
9341 varonce57 = var58;
9342 }
9343 if (varonce62) {
9344 var63 = varonce62;
9345 } else {
9346 var64 = ")->values[";
9347 var65 = 10;
9348 var66 = string__NativeString__to_s_with_length(var64, var65);
9349 var63 = var66;
9350 varonce62 = var63;
9351 }
9352 if (varonce67) {
9353 var68 = varonce67;
9354 } else {
9355 var69 = "] = (val*) ";
9356 var70 = 11;
9357 var71 = string__NativeString__to_s_with_length(var69, var70);
9358 var68 = var71;
9359 varonce67 = var68;
9360 }
9361 if (varonce72) {
9362 var73 = varonce72;
9363 } else {
9364 var74 = ";";
9365 var75 = 1;
9366 var76 = string__NativeString__to_s_with_length(var74, var75);
9367 var73 = var76;
9368 varonce72 = var73;
9369 }
9370 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
9371 { /* var77 = array_instance Array[Object] */
9372 var78 = 9;
9373 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
9374 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var52;
9375 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var56;
9376 ((struct instance_array__NativeArray*)var79)->values[2] = (val*) var58;
9377 ((struct instance_array__NativeArray*)var79)->values[3] = (val*) var_nat;
9378 ((struct instance_array__NativeArray*)var79)->values[4] = (val*) var63;
9379 var80 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
9380 ((struct instance_array__NativeArray*)var79)->values[5] = (val*) var80;
9381 ((struct instance_array__NativeArray*)var79)->values[6] = (val*) var68;
9382 ((struct instance_array__NativeArray*)var79)->values[7] = (val*) var_r;
9383 ((struct instance_array__NativeArray*)var79)->values[8] = (val*) var73;
9384 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
9385 CHECK_NEW_array__Array(var77);
9386 }
9387 var81 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
9388 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var81) /* add on <self:SeparateCompilerVisitor>*/;
9389 CONTINUE_label: (void)0;
9390 ((void (*)(val*))(var44->class->vft[COLOR_abstract_collection__Iterator__next]))(var44) /* next on <var44:Iterator[nullable Object]>*/;
9391 }
9392 BREAK_label: (void)0;
9393 if (varonce82) {
9394 var83 = varonce82;
9395 } else {
9396 var84 = "with_native";
9397 var85 = 11;
9398 var86 = string__NativeString__to_s_with_length(var84, var85);
9399 var83 = var86;
9400 varonce82 = var83;
9401 }
9402 var87 = ((val* (*)(val*))(var_arrayclass->class->vft[COLOR_model__MClass__intro]))(var_arrayclass) /* intro on <var_arrayclass:MClass>*/;
9403 var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MClassDef__bound_mtype]))(var87) /* bound_mtype on <var87:MClassDef>*/;
9404 var89 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(self, var83, var88) /* get_property on <self:SeparateCompilerVisitor>*/;
9405 var90 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
9406 { /* var90 = array_instance Array[RuntimeVariable] */
9407 var91 = 3;
9408 var92 = NEW_array__NativeArray(var91, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
9409 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_res;
9410 ((struct instance_array__NativeArray*)var92)->values[1] = (val*) var_nat;
9411 ((struct instance_array__NativeArray*)var92)->values[2] = (val*) var_length;
9412 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[RuntimeVariable]>*/;
9413 CHECK_NEW_array__Array(var90);
9414 }
9415 var93 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var89, var90) /* send on <self:SeparateCompilerVisitor>*/;
9416 var93;
9417 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_init_instance]))(self, var_res, var_arraytype) /* check_init_instance on <self:SeparateCompilerVisitor>*/;
9418 if (varonce94) {
9419 var95 = varonce94;
9420 } else {
9421 var96 = "}";
9422 var97 = 1;
9423 var98 = string__NativeString__to_s_with_length(var96, var97);
9424 var95 = var98;
9425 varonce94 = var95;
9426 }
9427 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var95) /* add on <self:SeparateCompilerVisitor>*/;
9428 var = var_res;
9429 goto RET_LABEL;
9430 RET_LABEL:;
9431 return var;
9432 }
9433 /* method separate_compiler#SeparateCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
9434 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
9435 val* var /* : RuntimeVariable */;
9436 val* var1 /* : RuntimeVariable */;
9437 var1 = separate_compiler__SeparateCompilerVisitor__array_instance(self, p0, p1);
9438 var = var1;
9439 RET_LABEL:;
9440 return var;
9441 }
9442 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: SeparateCompilerVisitor, MType, RuntimeVariable): RuntimeVariable */
9443 val* separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
9444 val* var /* : RuntimeVariable */;
9445 val* var_elttype /* var elttype: MType */;
9446 val* var_length /* var length: RuntimeVariable */;
9447 static val* varonce;
9448 val* var1 /* : String */;
9449 char* var2 /* : NativeString */;
9450 long var3 /* : Int */;
9451 val* var4 /* : String */;
9452 val* var5 /* : MClass */;
9453 val* var6 /* : Array[MType] */;
9454 long var7 /* : Int */;
9455 val* var8 /* : NativeArray[MType] */;
9456 val* var9 /* : MClassType */;
9457 val* var_mtype /* var mtype: MClassType */;
9458 static val* varonce10;
9459 val* var11 /* : String */;
9460 char* var12 /* : NativeString */;
9461 long var13 /* : Int */;
9462 val* var14 /* : String */;
9463 val* var15 /* : MClass */;
9464 val* var16 /* : String */;
9465 val* var17 /* : Array[Object] */;
9466 long var18 /* : Int */;
9467 val* var19 /* : NativeArray[Object] */;
9468 val* var20 /* : String */;
9469 short int var21 /* : Bool */;
9470 int cltype;
9471 int idtype;
9472 val* var22 /* : AbstractCompiler */;
9473 val* var_compiler /* var compiler: SeparateCompiler */;
9474 short int var23 /* : Bool */;
9475 val* var24 /* : nullable Frame */;
9476 val* var25 /* : MPropDef */;
9477 val* var26 /* : MClassDef */;
9478 val* var27 /* : nullable Frame */;
9479 val* var28 /* : Array[RuntimeVariable] */;
9480 val* var29 /* : nullable Object */;
9481 val* var_recv /* var recv: RuntimeVariable */;
9482 val* var30 /* : String */;
9483 val* var_recv_type_info /* var recv_type_info: String */;
9484 val* var31 /* : String */;
9485 short int var32 /* : Bool */;
9486 val* var33 /* : ModelBuilder */;
9487 val* var34 /* : ToolContext */;
9488 val* var35 /* : OptionBool */;
9489 val* var36 /* : nullable Object */;
9490 short int var37 /* : Bool */;
9491 short int var_ /* var : Bool */;
9492 val* var38 /* : ModelBuilder */;
9493 val* var39 /* : ToolContext */;
9494 val* var40 /* : OptionBool */;
9495 val* var41 /* : nullable Object */;
9496 short int var42 /* : Bool */;
9497 static val* varonce43;
9498 val* var44 /* : String */;
9499 char* var45 /* : NativeString */;
9500 long var46 /* : Int */;
9501 val* var47 /* : String */;
9502 val* var48 /* : MClass */;
9503 val* var49 /* : String */;
9504 static val* varonce50;
9505 val* var51 /* : String */;
9506 char* var52 /* : NativeString */;
9507 long var53 /* : Int */;
9508 val* var54 /* : String */;
9509 static val* varonce55;
9510 val* var56 /* : String */;
9511 char* var57 /* : NativeString */;
9512 long var58 /* : Int */;
9513 val* var59 /* : String */;
9514 static val* varonce60;
9515 val* var61 /* : String */;
9516 char* var62 /* : NativeString */;
9517 long var63 /* : Int */;
9518 val* var64 /* : String */;
9519 static val* varonce65;
9520 val* var66 /* : String */;
9521 char* var67 /* : NativeString */;
9522 long var68 /* : Int */;
9523 val* var69 /* : String */;
9524 val* var70 /* : String */;
9525 static val* varonce71;
9526 val* var72 /* : String */;
9527 char* var73 /* : NativeString */;
9528 long var74 /* : Int */;
9529 val* var75 /* : String */;
9530 val* var76 /* : Array[Object] */;
9531 long var77 /* : Int */;
9532 val* var78 /* : NativeArray[Object] */;
9533 val* var79 /* : String */;
9534 val* var80 /* : RuntimeVariable */;
9535 static val* varonce81;
9536 val* var82 /* : String */;
9537 char* var83 /* : NativeString */;
9538 long var84 /* : Int */;
9539 val* var85 /* : String */;
9540 val* var86 /* : MClass */;
9541 val* var87 /* : String */;
9542 static val* varonce88;
9543 val* var89 /* : String */;
9544 char* var90 /* : NativeString */;
9545 long var91 /* : Int */;
9546 val* var92 /* : String */;
9547 static val* varonce93;
9548 val* var94 /* : String */;
9549 char* var95 /* : NativeString */;
9550 long var96 /* : Int */;
9551 val* var97 /* : String */;
9552 static val* varonce98;
9553 val* var99 /* : String */;
9554 char* var100 /* : NativeString */;
9555 long var101 /* : Int */;
9556 val* var102 /* : String */;
9557 val* var103 /* : String */;
9558 static val* varonce104;
9559 val* var105 /* : String */;
9560 char* var106 /* : NativeString */;
9561 long var107 /* : Int */;
9562 val* var108 /* : String */;
9563 val* var109 /* : Array[Object] */;
9564 long var110 /* : Int */;
9565 val* var111 /* : NativeArray[Object] */;
9566 val* var112 /* : String */;
9567 val* var113 /* : RuntimeVariable */;
9568 val* var114 /* : Set[MType] */;
9569 static val* varonce115;
9570 val* var116 /* : String */;
9571 char* var117 /* : NativeString */;
9572 long var118 /* : Int */;
9573 val* var119 /* : String */;
9574 val* var120 /* : String */;
9575 val* var121 /* : Array[Object] */;
9576 long var122 /* : Int */;
9577 val* var123 /* : NativeArray[Object] */;
9578 val* var124 /* : String */;
9579 static val* varonce125;
9580 val* var126 /* : String */;
9581 char* var127 /* : NativeString */;
9582 long var128 /* : Int */;
9583 val* var129 /* : String */;
9584 val* var130 /* : MClass */;
9585 val* var131 /* : String */;
9586 static val* varonce132;
9587 val* var133 /* : String */;
9588 char* var134 /* : NativeString */;
9589 long var135 /* : Int */;
9590 val* var136 /* : String */;
9591 static val* varonce137;
9592 val* var138 /* : String */;
9593 char* var139 /* : NativeString */;
9594 long var140 /* : Int */;
9595 val* var141 /* : String */;
9596 val* var142 /* : String */;
9597 static val* varonce143;
9598 val* var144 /* : String */;
9599 char* var145 /* : NativeString */;
9600 long var146 /* : Int */;
9601 val* var147 /* : String */;
9602 val* var148 /* : Array[Object] */;
9603 long var149 /* : Int */;
9604 val* var150 /* : NativeArray[Object] */;
9605 val* var151 /* : String */;
9606 val* var152 /* : RuntimeVariable */;
9607 var_elttype = p0;
9608 var_length = p1;
9609 if (varonce) {
9610 var1 = varonce;
9611 } else {
9612 var2 = "NativeArray";
9613 var3 = 11;
9614 var4 = string__NativeString__to_s_with_length(var2, var3);
9615 var1 = var4;
9616 varonce = var1;
9617 }
9618 var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var1) /* get_class on <self:SeparateCompilerVisitor>*/;
9619 var6 = NEW_array__Array(&type_array__Arraymodel__MType);
9620 { /* var6 = array_instance Array[MType] */
9621 var7 = 1;
9622 var8 = NEW_array__NativeArray(var7, &type_array__NativeArraymodel__MType);
9623 ((struct instance_array__NativeArray*)var8)->values[0] = (val*) var_elttype;
9624 ((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[MType]>*/;
9625 CHECK_NEW_array__Array(var6);
9626 }
9627 var9 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_model__MClass__get_mtype]))(var5, var6) /* get_mtype on <var5:MClass>*/;
9628 var_mtype = var9;
9629 if (varonce10) {
9630 var11 = varonce10;
9631 } else {
9632 var12 = "NEW_";
9633 var13 = 4;
9634 var14 = string__NativeString__to_s_with_length(var12, var13);
9635 var11 = var14;
9636 varonce10 = var11;
9637 }
9638 var15 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
9639 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var15) /* c_name on <var15:MClass>*/;
9640 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
9641 { /* var17 = array_instance Array[Object] */
9642 var18 = 2;
9643 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
9644 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var11;
9645 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var16;
9646 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
9647 CHECK_NEW_array__Array(var17);
9648 }
9649 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
9650 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var20) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9651 /* <var_mtype:MClassType> isa MGenericType */
9652 cltype = type_model__MGenericType.color;
9653 idtype = type_model__MGenericType.id;
9654 if(cltype >= var_mtype->type->table_size) {
9655 var21 = 0;
9656 } else {
9657 var21 = var_mtype->type->type_table[cltype] == idtype;
9658 }
9659 if (!var21) {
9660 fprintf(stderr, "Runtime error: %s", "Assert failed");
9661 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1543);
9662 exit(1);
9663 }
9664 var22 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
9665 var_compiler = var22;
9666 var23 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MClassType(MGenericType)>*/;
9667 if (var23){
9668 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
9669 if (var24 == NULL) {
9670 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9671 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1546);
9672 exit(1);
9673 } else {
9674 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var24) /* mpropdef on <var24:nullable Frame>*/;
9675 }
9676 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_model__MPropDef__mclassdef]))(var25) /* mclassdef on <var25:MPropDef>*/;
9677 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__link_unresolved_type]))(self, var26, var_mtype) /* link_unresolved_type on <self:SeparateCompilerVisitor>*/;
9678 var27 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
9679 if (var27 == NULL) {
9680 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9681 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1547);
9682 exit(1);
9683 } else {
9684 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_compiler__Frame__arguments]))(var27) /* arguments on <var27:nullable Frame>*/;
9685 }
9686 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Collection__first]))(var28) /* first on <var28:Array[RuntimeVariable]>*/;
9687 var_recv = var29;
9688 var30 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__type_info]))(self, var_recv) /* type_info on <self:SeparateCompilerVisitor>*/;
9689 var_recv_type_info = var30;
9690 var31 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
9691 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var31) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9692 var33 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
9693 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var33) /* toolcontext on <var33:ModelBuilder>*/;
9694 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var34) /* opt_phmod_typing on <var34:ToolContext>*/;
9695 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_opts__Option__value]))(var35) /* value on <var35:OptionBool>*/;
9696 var37 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
9697 var_ = var37;
9698 if (var37){
9699 var32 = var_;
9700 } else {
9701 var38 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var_compiler) /* modelbuilder on <var_compiler:SeparateCompiler>*/;
9702 var39 = ((val* (*)(val*))(var38->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var38) /* toolcontext on <var38:ModelBuilder>*/;
9703 var40 = ((val* (*)(val*))(var39->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var39) /* opt_phand_typing on <var39:ToolContext>*/;
9704 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_opts__Option__value]))(var40) /* value on <var40:OptionBool>*/;
9705 var42 = ((struct instance_kernel__Bool*)var41)->value; /* autounbox from nullable Object to Bool */;
9706 var32 = var42;
9707 }
9708 if (var32){
9709 if (varonce43) {
9710 var44 = varonce43;
9711 } else {
9712 var45 = "NEW_";
9713 var46 = 4;
9714 var47 = string__NativeString__to_s_with_length(var45, var46);
9715 var44 = var47;
9716 varonce43 = var44;
9717 }
9718 var48 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
9719 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var48) /* c_name on <var48:MClass>*/;
9720 if (varonce50) {
9721 var51 = varonce50;
9722 } else {
9723 var52 = "(";
9724 var53 = 1;
9725 var54 = string__NativeString__to_s_with_length(var52, var53);
9726 var51 = var54;
9727 varonce50 = var51;
9728 }
9729 if (varonce55) {
9730 var56 = varonce55;
9731 } else {
9732 var57 = ", ";
9733 var58 = 2;
9734 var59 = string__NativeString__to_s_with_length(var57, var58);
9735 var56 = var59;
9736 varonce55 = var56;
9737 }
9738 if (varonce60) {
9739 var61 = varonce60;
9740 } else {
9741 var62 = "->resolution_table->types[HASH(";
9742 var63 = 31;
9743 var64 = string__NativeString__to_s_with_length(var62, var63);
9744 var61 = var64;
9745 varonce60 = var61;
9746 }
9747 if (varonce65) {
9748 var66 = varonce65;
9749 } else {
9750 var67 = "->resolution_table->mask, ";
9751 var68 = 26;
9752 var69 = string__NativeString__to_s_with_length(var67, var68);
9753 var66 = var69;
9754 varonce65 = var66;
9755 }
9756 var70 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
9757 if (varonce71) {
9758 var72 = varonce71;
9759 } else {
9760 var73 = ")])";
9761 var74 = 3;
9762 var75 = string__NativeString__to_s_with_length(var73, var74);
9763 var72 = var75;
9764 varonce71 = var72;
9765 }
9766 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
9767 { /* var76 = array_instance Array[Object] */
9768 var77 = 11;
9769 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
9770 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var44;
9771 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var49;
9772 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var51;
9773 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var_length;
9774 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var56;
9775 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var_recv_type_info;
9776 ((struct instance_array__NativeArray*)var78)->values[6] = (val*) var61;
9777 ((struct instance_array__NativeArray*)var78)->values[7] = (val*) var_recv_type_info;
9778 ((struct instance_array__NativeArray*)var78)->values[8] = (val*) var66;
9779 ((struct instance_array__NativeArray*)var78)->values[9] = (val*) var70;
9780 ((struct instance_array__NativeArray*)var78)->values[10] = (val*) var72;
9781 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
9782 CHECK_NEW_array__Array(var76);
9783 }
9784 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
9785 var80 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var79, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9786 var = var80;
9787 goto RET_LABEL;
9788 } else {
9789 if (varonce81) {
9790 var82 = varonce81;
9791 } else {
9792 var83 = "NEW_";
9793 var84 = 4;
9794 var85 = string__NativeString__to_s_with_length(var83, var84);
9795 var82 = var85;
9796 varonce81 = var82;
9797 }
9798 var86 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
9799 var87 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var86) /* c_name on <var86:MClass>*/;
9800 if (varonce88) {
9801 var89 = varonce88;
9802 } else {
9803 var90 = "(";
9804 var91 = 1;
9805 var92 = string__NativeString__to_s_with_length(var90, var91);
9806 var89 = var92;
9807 varonce88 = var89;
9808 }
9809 if (varonce93) {
9810 var94 = varonce93;
9811 } else {
9812 var95 = ", ";
9813 var96 = 2;
9814 var97 = string__NativeString__to_s_with_length(var95, var96);
9815 var94 = var97;
9816 varonce93 = var94;
9817 }
9818 if (varonce98) {
9819 var99 = varonce98;
9820 } else {
9821 var100 = "->resolution_table->types[";
9822 var101 = 26;
9823 var102 = string__NativeString__to_s_with_length(var100, var101);
9824 var99 = var102;
9825 varonce98 = var99;
9826 }
9827 var103 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__const_color]))(var_mtype) /* const_color on <var_mtype:MClassType(MGenericType)>*/;
9828 if (varonce104) {
9829 var105 = varonce104;
9830 } else {
9831 var106 = "])";
9832 var107 = 2;
9833 var108 = string__NativeString__to_s_with_length(var106, var107);
9834 var105 = var108;
9835 varonce104 = var105;
9836 }
9837 var109 = NEW_array__Array(&type_array__Arraykernel__Object);
9838 { /* var109 = array_instance Array[Object] */
9839 var110 = 9;
9840 var111 = NEW_array__NativeArray(var110, &type_array__NativeArraykernel__Object);
9841 ((struct instance_array__NativeArray*)var111)->values[0] = (val*) var82;
9842 ((struct instance_array__NativeArray*)var111)->values[1] = (val*) var87;
9843 ((struct instance_array__NativeArray*)var111)->values[2] = (val*) var89;
9844 ((struct instance_array__NativeArray*)var111)->values[3] = (val*) var_length;
9845 ((struct instance_array__NativeArray*)var111)->values[4] = (val*) var94;
9846 ((struct instance_array__NativeArray*)var111)->values[5] = (val*) var_recv_type_info;
9847 ((struct instance_array__NativeArray*)var111)->values[6] = (val*) var99;
9848 ((struct instance_array__NativeArray*)var111)->values[7] = (val*) var103;
9849 ((struct instance_array__NativeArray*)var111)->values[8] = (val*) var105;
9850 ((void (*)(val*, val*, long))(var109->class->vft[COLOR_array__Array__with_native]))(var109, var111, var110) /* with_native on <var109:Array[Object]>*/;
9851 CHECK_NEW_array__Array(var109);
9852 }
9853 var112 = ((val* (*)(val*))(var109->class->vft[COLOR_string__Object__to_s]))(var109) /* to_s on <var109:Array[Object]>*/;
9854 var113 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var112, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9855 var = var113;
9856 goto RET_LABEL;
9857 }
9858 } else {
9859 }
9860 var114 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
9861 ((void (*)(val*, val*))(var114->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var114, var_mtype) /* add on <var114:Set[MType]>*/;
9862 if (varonce115) {
9863 var116 = varonce115;
9864 } else {
9865 var117 = "type_";
9866 var118 = 5;
9867 var119 = string__NativeString__to_s_with_length(var117, var118);
9868 var116 = var119;
9869 varonce115 = var116;
9870 }
9871 var120 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType(MGenericType)>*/;
9872 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
9873 { /* var121 = array_instance Array[Object] */
9874 var122 = 2;
9875 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
9876 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var116;
9877 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var120;
9878 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
9879 CHECK_NEW_array__Array(var121);
9880 }
9881 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
9882 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var124) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9883 if (varonce125) {
9884 var126 = varonce125;
9885 } else {
9886 var127 = "NEW_";
9887 var128 = 4;
9888 var129 = string__NativeString__to_s_with_length(var127, var128);
9889 var126 = var129;
9890 varonce125 = var126;
9891 }
9892 var130 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType(MGenericType)>*/;
9893 var131 = ((val* (*)(val*))(var130->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var130) /* c_name on <var130:MClass>*/;
9894 if (varonce132) {
9895 var133 = varonce132;
9896 } else {
9897 var134 = "(";
9898 var135 = 1;
9899 var136 = string__NativeString__to_s_with_length(var134, var135);
9900 var133 = var136;
9901 varonce132 = var133;
9902 }
9903 if (varonce137) {
9904 var138 = varonce137;
9905 } else {
9906 var139 = ", &type_";
9907 var140 = 8;
9908 var141 = string__NativeString__to_s_with_length(var139, var140);
9909 var138 = var141;
9910 varonce137 = var138;
9911 }
9912 var142 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType(MGenericType)>*/;
9913 if (varonce143) {
9914 var144 = varonce143;
9915 } else {
9916 var145 = ")";
9917 var146 = 1;
9918 var147 = string__NativeString__to_s_with_length(var145, var146);
9919 var144 = var147;
9920 varonce143 = var144;
9921 }
9922 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
9923 { /* var148 = array_instance Array[Object] */
9924 var149 = 7;
9925 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
9926 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var126;
9927 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var131;
9928 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var133;
9929 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var_length;
9930 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var138;
9931 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var142;
9932 ((struct instance_array__NativeArray*)var150)->values[6] = (val*) var144;
9933 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
9934 CHECK_NEW_array__Array(var148);
9935 }
9936 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
9937 var152 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var151, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9938 var = var152;
9939 goto RET_LABEL;
9940 RET_LABEL:;
9941 return var;
9942 }
9943 /* method separate_compiler#SeparateCompilerVisitor#native_array_instance for (self: Object, MType, RuntimeVariable): RuntimeVariable */
9944 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_instance(val* self, val* p0, val* p1) {
9945 val* var /* : RuntimeVariable */;
9946 val* var1 /* : RuntimeVariable */;
9947 var1 = separate_compiler__SeparateCompilerVisitor__native_array_instance(self, p0, p1);
9948 var = var1;
9949 RET_LABEL:;
9950 return var;
9951 }