use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / global_compiler.sep.2.c
diff --git a/c_src/global_compiler.sep.2.c b/c_src/global_compiler.sep.2.c
new file mode 100644 (file)
index 0000000..b73a90c
--- /dev/null
@@ -0,0 +1,3209 @@
+#include "global_compiler.sep.0.h"
+/* method global_compiler#GlobalCompilerVisitor#equal_test for (self: GlobalCompilerVisitor, RuntimeVariable, RuntimeVariable): RuntimeVariable */
+val* global_compiler__GlobalCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
+val* var /* : RuntimeVariable */;
+val* var_value1 /* var value1: RuntimeVariable */;
+val* var_value2 /* var value2: RuntimeVariable */;
+val* var1 /* : MClassType */;
+val* var2 /* : RuntimeVariable */;
+val* var_res /* var res: RuntimeVariable */;
+short int var3 /* : Bool */;
+val* var4 /* : MType */;
+val* var5 /* : String */;
+static val* varonce;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+long var8 /* : Int */;
+val* var9 /* : String */;
+short int var10 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var11 /* : MType */;
+val* var12 /* : String */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+long var16 /* : Int */;
+val* var17 /* : String */;
+short int var18 /* : Bool */;
+val* var_tmp /* var tmp: RuntimeVariable */;
+val* var19 /* : MType */;
+val* var20 /* : String */;
+static val* varonce21;
+val* var22 /* : String */;
+char* var23 /* : NativeString */;
+long var24 /* : Int */;
+val* var25 /* : String */;
+short int var26 /* : Bool */;
+val* var27 /* : MType */;
+val* var28 /* : MType */;
+short int var29 /* : Bool */;
+static val* varonce30;
+val* var31 /* : String */;
+char* var32 /* : NativeString */;
+long var33 /* : Int */;
+val* var34 /* : String */;
+static val* varonce35;
+val* var36 /* : String */;
+char* var37 /* : NativeString */;
+long var38 /* : Int */;
+val* var39 /* : String */;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+long var43 /* : Int */;
+val* var44 /* : String */;
+val* var45 /* : Array[Object] */;
+long var46 /* : Int */;
+val* var47 /* : NativeArray[Object] */;
+val* var48 /* : String */;
+val* var49 /* : MType */;
+val* var50 /* : String */;
+static val* varonce51;
+val* var52 /* : String */;
+char* var53 /* : NativeString */;
+long var54 /* : Int */;
+val* var55 /* : String */;
+short int var56 /* : Bool */;
+static val* varonce57;
+val* var58 /* : String */;
+char* var59 /* : NativeString */;
+long var60 /* : Int */;
+val* var61 /* : String */;
+val* var62 /* : MType */;
+static val* varonce63;
+val* var64 /* : String */;
+char* var65 /* : NativeString */;
+long var66 /* : Int */;
+val* var67 /* : String */;
+val* var68 /* : MType */;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+long var72 /* : Int */;
+val* var73 /* : String */;
+val* var74 /* : Array[Object] */;
+long var75 /* : Int */;
+val* var76 /* : NativeArray[Object] */;
+val* var77 /* : String */;
+val* var78 /* : MType */;
+short int var79 /* : Bool */;
+int cltype;
+int idtype;
+val* var_mtype1 /* var mtype1: MClassType */;
+static val* varonce80;
+val* var81 /* : String */;
+char* var82 /* : NativeString */;
+long var83 /* : Int */;
+val* var84 /* : String */;
+static val* varonce85;
+val* var86 /* : String */;
+char* var87 /* : NativeString */;
+long var88 /* : Int */;
+val* var89 /* : String */;
+static val* varonce90;
+val* var91 /* : String */;
+char* var92 /* : NativeString */;
+long var93 /* : Int */;
+val* var94 /* : String */;
+val* var95 /* : AbstractCompiler */;
+val* var96 /* : String */;
+static val* varonce97;
+val* var98 /* : String */;
+char* var99 /* : NativeString */;
+long var100 /* : Int */;
+val* var101 /* : String */;
+val* var102 /* : Array[Object] */;
+long var103 /* : Int */;
+val* var104 /* : NativeArray[Object] */;
+val* var105 /* : String */;
+static val* varonce106;
+val* var107 /* : String */;
+char* var108 /* : NativeString */;
+long var109 /* : Int */;
+val* var110 /* : String */;
+static val* varonce111;
+val* var112 /* : String */;
+char* var113 /* : NativeString */;
+long var114 /* : Int */;
+val* var115 /* : String */;
+val* var116 /* : Array[Object] */;
+long var117 /* : Int */;
+val* var118 /* : NativeArray[Object] */;
+val* var119 /* : String */;
+static val* varonce120;
+val* var121 /* : String */;
+char* var122 /* : NativeString */;
+long var123 /* : Int */;
+val* var124 /* : String */;
+val* var125 /* : MType */;
+val* var126 /* : RuntimeVariable */;
+static val* varonce127;
+val* var128 /* : String */;
+char* var129 /* : NativeString */;
+long var130 /* : Int */;
+val* var131 /* : String */;
+static val* varonce132;
+val* var133 /* : String */;
+char* var134 /* : NativeString */;
+long var135 /* : Int */;
+val* var136 /* : String */;
+val* var137 /* : Array[Object] */;
+long var138 /* : Int */;
+val* var139 /* : NativeArray[Object] */;
+val* var140 /* : String */;
+static val* varonce141;
+val* var142 /* : String */;
+char* var143 /* : NativeString */;
+long var144 /* : Int */;
+val* var145 /* : String */;
+val* var146 /* : Array[String] */;
+val* var_s /* var s: Array[String] */;
+val* var147 /* : AbstractCompiler */;
+val* var148 /* : Array[MClassType] */;
+val* var149 /* : Iterator[nullable Object] */;
+short int var150 /* : Bool */;
+val* var151 /* : nullable Object */;
+val* var_t /* var t: MClassType */;
+val* var152 /* : AbstractCompiler */;
+val* var153 /* : MModule */;
+val* var154 /* : null */;
+val* var155 /* : MType */;
+short int var156 /* : Bool */;
+short int var157 /* : Bool */;
+val* var158 /* : AbstractCompiler */;
+val* var159 /* : MModule */;
+val* var160 /* : null */;
+val* var161 /* : MType */;
+short int var162 /* : Bool */;
+short int var163 /* : Bool */;
+static val* varonce164;
+val* var165 /* : String */;
+char* var166 /* : NativeString */;
+long var167 /* : Int */;
+val* var168 /* : String */;
+static val* varonce169;
+val* var170 /* : String */;
+char* var171 /* : NativeString */;
+long var172 /* : Int */;
+val* var173 /* : String */;
+val* var174 /* : AbstractCompiler */;
+val* var175 /* : String */;
+static val* varonce176;
+val* var177 /* : String */;
+char* var178 /* : NativeString */;
+long var179 /* : Int */;
+val* var180 /* : String */;
+val* var181 /* : String */;
+static val* varonce182;
+val* var183 /* : String */;
+char* var184 /* : NativeString */;
+long var185 /* : Int */;
+val* var186 /* : String */;
+static val* varonce187;
+val* var188 /* : String */;
+char* var189 /* : NativeString */;
+long var190 /* : Int */;
+val* var191 /* : String */;
+val* var192 /* : String */;
+static val* varonce193;
+val* var194 /* : String */;
+char* var195 /* : NativeString */;
+long var196 /* : Int */;
+val* var197 /* : String */;
+static val* varonce198;
+val* var199 /* : String */;
+char* var200 /* : NativeString */;
+long var201 /* : Int */;
+val* var202 /* : String */;
+val* var203 /* : Array[Object] */;
+long var204 /* : Int */;
+val* var205 /* : NativeArray[Object] */;
+val* var206 /* : String */;
+short int var207 /* : Bool */;
+static val* varonce208;
+val* var209 /* : String */;
+char* var210 /* : NativeString */;
+long var211 /* : Int */;
+val* var212 /* : String */;
+static val* varonce213;
+val* var214 /* : String */;
+char* var215 /* : NativeString */;
+long var216 /* : Int */;
+val* var217 /* : String */;
+static val* varonce218;
+val* var219 /* : String */;
+char* var220 /* : NativeString */;
+long var221 /* : Int */;
+val* var222 /* : String */;
+val* var223 /* : Array[Object] */;
+long var224 /* : Int */;
+val* var225 /* : NativeArray[Object] */;
+val* var226 /* : String */;
+static val* varonce227;
+val* var228 /* : String */;
+char* var229 /* : NativeString */;
+long var230 /* : Int */;
+val* var231 /* : String */;
+static val* varonce232;
+val* var233 /* : String */;
+char* var234 /* : NativeString */;
+long var235 /* : Int */;
+val* var236 /* : String */;
+static val* varonce237;
+val* var238 /* : String */;
+char* var239 /* : NativeString */;
+long var240 /* : Int */;
+val* var241 /* : String */;
+static val* varonce242;
+val* var243 /* : String */;
+char* var244 /* : NativeString */;
+long var245 /* : Int */;
+val* var246 /* : String */;
+static val* varonce247;
+val* var248 /* : String */;
+char* var249 /* : NativeString */;
+long var250 /* : Int */;
+val* var251 /* : String */;
+static val* varonce252;
+val* var253 /* : String */;
+char* var254 /* : NativeString */;
+long var255 /* : Int */;
+val* var256 /* : String */;
+static val* varonce257;
+val* var258 /* : String */;
+char* var259 /* : NativeString */;
+long var260 /* : Int */;
+val* var261 /* : String */;
+static val* varonce262;
+val* var263 /* : String */;
+char* var264 /* : NativeString */;
+long var265 /* : Int */;
+val* var266 /* : String */;
+val* var267 /* : String */;
+static val* varonce268;
+val* var269 /* : String */;
+char* var270 /* : NativeString */;
+long var271 /* : Int */;
+val* var272 /* : String */;
+val* var273 /* : Array[Object] */;
+long var274 /* : Int */;
+val* var275 /* : NativeArray[Object] */;
+val* var276 /* : String */;
+var_value1 = p0;
+var_value2 = p1;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type]))(self) /* bool_type on <self:GlobalCompilerVisitor>*/;
+var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var1) /* new_var on <self:GlobalCompilerVisitor>*/;
+var_res = var2;
+var4 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
+var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
+if (varonce) {
+var6 = varonce;
+} else {
+var7 = "val*";
+var8 = 4;
+var9 = string__NativeString__to_s_with_length(var7, var8);
+var6 = var9;
+varonce = var6;
+}
+var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___33d_61d]))(var5, var6) /* != on <var5:String>*/;
+var_ = var10;
+if (var10){
+var11 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
+var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_compiler__MType__ctype]))(var11) /* ctype on <var11:MType>*/;
+if (varonce13) {
+var14 = varonce13;
+} else {
+var15 = "val*";
+var16 = 4;
+var17 = string__NativeString__to_s_with_length(var15, var16);
+var14 = var17;
+varonce13 = var14;
+}
+var18 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_kernel__Object___61d_61d]))(var12, var14) /* == on <var12:String>*/;
+var3 = var18;
+} else {
+var3 = var_;
+}
+if (var3){
+var_tmp = var_value1;
+var_value1 = var_value2;
+var_value2 = var_tmp;
+} else {
+}
+var19 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
+var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_compiler__MType__ctype]))(var19) /* ctype on <var19:MType>*/;
+if (varonce21) {
+var22 = varonce21;
+} else {
+var23 = "val*";
+var24 = 4;
+var25 = string__NativeString__to_s_with_length(var23, var24);
+var22 = var25;
+varonce21 = var22;
+}
+var26 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___33d_61d]))(var20, var22) /* != on <var20:String>*/;
+if (var26){
+var27 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
+var28 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
+var29 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var28) /* == on <var27:MType>*/;
+if (var29){
+if (varonce30) {
+var31 = varonce30;
+} else {
+var32 = " = ";
+var33 = 3;
+var34 = string__NativeString__to_s_with_length(var32, var33);
+var31 = var34;
+varonce30 = var31;
+}
+if (varonce35) {
+var36 = varonce35;
+} else {
+var37 = " == ";
+var38 = 4;
+var39 = string__NativeString__to_s_with_length(var37, var38);
+var36 = var39;
+varonce35 = var36;
+}
+if (varonce40) {
+var41 = varonce40;
+} else {
+var42 = ";";
+var43 = 1;
+var44 = string__NativeString__to_s_with_length(var42, var43);
+var41 = var44;
+varonce40 = var41;
+}
+var45 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var45 = array_instance Array[Object] */
+var46 = 6;
+var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var47)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var47)->values[1] = (val*) var31;
+((struct instance_array__NativeArray*)var47)->values[2] = (val*) var_value1;
+((struct instance_array__NativeArray*)var47)->values[3] = (val*) var36;
+((struct instance_array__NativeArray*)var47)->values[4] = (val*) var_value2;
+((struct instance_array__NativeArray*)var47)->values[5] = (val*) var41;
+((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
+CHECK_NEW_array__Array(var45);
+}
+var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var48) /* add on <self:GlobalCompilerVisitor>*/;
+} else {
+var49 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
+var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_compiler__MType__ctype]))(var49) /* ctype on <var49:MType>*/;
+if (varonce51) {
+var52 = varonce51;
+} else {
+var53 = "val*";
+var54 = 4;
+var55 = string__NativeString__to_s_with_length(var53, var54);
+var52 = var55;
+varonce51 = var52;
+}
+var56 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_kernel__Object___33d_61d]))(var50, var52) /* != on <var50:String>*/;
+if (var56){
+if (varonce57) {
+var58 = varonce57;
+} else {
+var59 = " = 0; /* incompatible types ";
+var60 = 28;
+var61 = string__NativeString__to_s_with_length(var59, var60);
+var58 = var61;
+varonce57 = var58;
+}
+var62 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
+if (varonce63) {
+var64 = varonce63;
+} else {
+var65 = " vs. ";
+var66 = 5;
+var67 = string__NativeString__to_s_with_length(var65, var66);
+var64 = var67;
+varonce63 = var64;
+}
+var68 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value2) /* mtype on <var_value2:RuntimeVariable>*/;
+if (varonce69) {
+var70 = varonce69;
+} else {
+var71 = "*/";
+var72 = 2;
+var73 = string__NativeString__to_s_with_length(var71, var72);
+var70 = var73;
+varonce69 = var70;
+}
+var74 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var74 = array_instance Array[Object] */
+var75 = 6;
+var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var76)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var76)->values[1] = (val*) var58;
+((struct instance_array__NativeArray*)var76)->values[2] = (val*) var62;
+((struct instance_array__NativeArray*)var76)->values[3] = (val*) var64;
+((struct instance_array__NativeArray*)var76)->values[4] = (val*) var68;
+((struct instance_array__NativeArray*)var76)->values[5] = (val*) var70;
+((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
+CHECK_NEW_array__Array(var74);
+}
+var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var77) /* add on <self:GlobalCompilerVisitor>*/;
+} else {
+var78 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
+/* <var78:MType> isa MClassType */
+cltype = type_model__MClassType.color;
+idtype = type_model__MClassType.id;
+if(cltype >= var78->type->table_size) {
+var79 = 0;
+} else {
+var79 = var78->type->type_table[cltype] == idtype;
+}
+if (!var79) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/global_compiler.nit", 807);
+exit(1);
+}
+var_mtype1 = var78;
+if (varonce80) {
+var81 = varonce80;
+} else {
+var82 = " = (";
+var83 = 4;
+var84 = string__NativeString__to_s_with_length(var82, var83);
+var81 = var84;
+varonce80 = var81;
+}
+if (varonce85) {
+var86 = varonce85;
+} else {
+var87 = " != NULL) && (";
+var88 = 14;
+var89 = string__NativeString__to_s_with_length(var87, var88);
+var86 = var89;
+varonce85 = var86;
+}
+if (varonce90) {
+var91 = varonce90;
+} else {
+var92 = "->classid == ";
+var93 = 13;
+var94 = string__NativeString__to_s_with_length(var92, var93);
+var91 = var94;
+varonce90 = var91;
+}
+var95 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:GlobalCompilerVisitor>*/;
+var96 = ((val* (*)(val*, val*))(var95->class->vft[COLOR_global_compiler__GlobalCompiler__classid]))(var95, var_mtype1) /* classid on <var95:AbstractCompiler(GlobalCompiler)>*/;
+if (varonce97) {
+var98 = varonce97;
+} else {
+var99 = ");";
+var100 = 2;
+var101 = string__NativeString__to_s_with_length(var99, var100);
+var98 = var101;
+varonce97 = var98;
+}
+var102 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var102 = array_instance Array[Object] */
+var103 = 8;
+var104 = NEW_array__NativeArray(var103, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var104)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var104)->values[1] = (val*) var81;
+((struct instance_array__NativeArray*)var104)->values[2] = (val*) var_value2;
+((struct instance_array__NativeArray*)var104)->values[3] = (val*) var86;
+((struct instance_array__NativeArray*)var104)->values[4] = (val*) var_value2;
+((struct instance_array__NativeArray*)var104)->values[5] = (val*) var91;
+((struct instance_array__NativeArray*)var104)->values[6] = (val*) var96;
+((struct instance_array__NativeArray*)var104)->values[7] = (val*) var98;
+((void (*)(val*, val*, long))(var102->class->vft[COLOR_array__Array__with_native]))(var102, var104, var103) /* with_native on <var102:Array[Object]>*/;
+CHECK_NEW_array__Array(var102);
+}
+var105 = ((val* (*)(val*))(var102->class->vft[COLOR_string__Object__to_s]))(var102) /* to_s on <var102:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var105) /* add on <self:GlobalCompilerVisitor>*/;
+if (varonce106) {
+var107 = varonce106;
+} else {
+var108 = "if (";
+var109 = 4;
+var110 = string__NativeString__to_s_with_length(var108, var109);
+var107 = var110;
+varonce106 = var107;
+}
+if (varonce111) {
+var112 = varonce111;
+} else {
+var113 = ") {";
+var114 = 3;
+var115 = string__NativeString__to_s_with_length(var113, var114);
+var112 = var115;
+varonce111 = var112;
+}
+var116 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var116 = array_instance Array[Object] */
+var117 = 3;
+var118 = NEW_array__NativeArray(var117, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var118)->values[0] = (val*) var107;
+((struct instance_array__NativeArray*)var118)->values[1] = (val*) var_res;
+((struct instance_array__NativeArray*)var118)->values[2] = (val*) var112;
+((void (*)(val*, val*, long))(var116->class->vft[COLOR_array__Array__with_native]))(var116, var118, var117) /* with_native on <var116:Array[Object]>*/;
+CHECK_NEW_array__Array(var116);
+}
+var119 = ((val* (*)(val*))(var116->class->vft[COLOR_string__Object__to_s]))(var116) /* to_s on <var116:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var119) /* add on <self:GlobalCompilerVisitor>*/;
+if (varonce120) {
+var121 = varonce120;
+} else {
+var122 = " = (";
+var123 = 4;
+var124 = string__NativeString__to_s_with_length(var122, var123);
+var121 = var124;
+varonce120 = var121;
+}
+var125 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value1) /* mtype on <var_value1:RuntimeVariable>*/;
+var126 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var_value2, var125) /* autobox on <self:GlobalCompilerVisitor>*/;
+if (varonce127) {
+var128 = varonce127;
+} else {
+var129 = " == ";
+var130 = 4;
+var131 = string__NativeString__to_s_with_length(var129, var130);
+var128 = var131;
+varonce127 = var128;
+}
+if (varonce132) {
+var133 = varonce132;
+} else {
+var134 = ");";
+var135 = 2;
+var136 = string__NativeString__to_s_with_length(var134, var135);
+var133 = var136;
+varonce132 = var133;
+}
+var137 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var137 = array_instance Array[Object] */
+var138 = 6;
+var139 = NEW_array__NativeArray(var138, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var139)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var139)->values[1] = (val*) var121;
+((struct instance_array__NativeArray*)var139)->values[2] = (val*) var126;
+((struct instance_array__NativeArray*)var139)->values[3] = (val*) var128;
+((struct instance_array__NativeArray*)var139)->values[4] = (val*) var_value1;
+((struct instance_array__NativeArray*)var139)->values[5] = (val*) var133;
+((void (*)(val*, val*, long))(var137->class->vft[COLOR_array__Array__with_native]))(var137, var139, var138) /* with_native on <var137:Array[Object]>*/;
+CHECK_NEW_array__Array(var137);
+}
+var140 = ((val* (*)(val*))(var137->class->vft[COLOR_string__Object__to_s]))(var137) /* to_s on <var137:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var140) /* add on <self:GlobalCompilerVisitor>*/;
+if (varonce141) {
+var142 = varonce141;
+} else {
+var143 = "}";
+var144 = 1;
+var145 = string__NativeString__to_s_with_length(var143, var144);
+var142 = var145;
+varonce141 = var142;
+}
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var142) /* add on <self:GlobalCompilerVisitor>*/;
+}
+}
+} else {
+var146 = NEW_array__Array(&type_array__Arraystring__String);
+((void (*)(val*))(var146->class->vft[COLOR_array__Array__init]))(var146) /* init on <var146:Array[String]>*/;
+CHECK_NEW_array__Array(var146);
+var_s = var146;
+var147 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:GlobalCompilerVisitor>*/;
+var148 = ((val* (*)(val*))(var147->class->vft[COLOR_global_compiler__GlobalCompiler__live_primitive_types]))(var147) /* live_primitive_types on <var147:AbstractCompiler(GlobalCompiler)>*/;
+var149 = ((val* (*)(val*))(var148->class->vft[COLOR_abstract_collection__Collection__iterator]))(var148) /* iterator on <var148:Array[MClassType]>*/;
+for(;;) {
+var150 = ((short int (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var149) /* is_ok on <var149:Iterator[nullable Object]>*/;
+if(!var150) break;
+var151 = ((val* (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__item]))(var149) /* item on <var149:Iterator[nullable Object]>*/;
+var_t = var151;
+var152 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:GlobalCompilerVisitor>*/;
+var153 = ((val* (*)(val*))(var152->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var152) /* mainmodule on <var152:AbstractCompiler(GlobalCompiler)>*/;
+var154 = NULL;
+var155 = ((val* (*)(val*))(var_value1->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value1) /* mcasttype on <var_value1:RuntimeVariable>*/;
+var156 = ((short int (*)(val*, val*, val*, val*))(var_t->class->vft[COLOR_model__MType__is_subtype]))(var_t, var153, var154, var155) /* is_subtype on <var_t:MClassType>*/;
+var157 = !var156;
+if (var157){
+goto CONTINUE_label;
+} else {
+}
+var158 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:GlobalCompilerVisitor>*/;
+var159 = ((val* (*)(val*))(var158->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var158) /* mainmodule on <var158:AbstractCompiler(GlobalCompiler)>*/;
+var160 = NULL;
+var161 = ((val* (*)(val*))(var_value2->class->vft[COLOR_abstract_compiler__RuntimeVariable__mcasttype]))(var_value2) /* mcasttype on <var_value2:RuntimeVariable>*/;
+var162 = ((short int (*)(val*, val*, val*, val*))(var_t->class->vft[COLOR_model__MType__is_subtype]))(var_t, var159, var160, var161) /* is_subtype on <var_t:MClassType>*/;
+var163 = !var162;
+if (var163){
+goto CONTINUE_label;
+} else {
+}
+if (varonce164) {
+var165 = varonce164;
+} else {
+var166 = "(";
+var167 = 1;
+var168 = string__NativeString__to_s_with_length(var166, var167);
+var165 = var168;
+varonce164 = var165;
+}
+if (varonce169) {
+var170 = varonce169;
+} else {
+var171 = "->classid == ";
+var172 = 13;
+var173 = string__NativeString__to_s_with_length(var171, var172);
+var170 = var173;
+varonce169 = var170;
+}
+var174 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:GlobalCompilerVisitor>*/;
+var175 = ((val* (*)(val*, val*))(var174->class->vft[COLOR_global_compiler__GlobalCompiler__classid]))(var174, var_t) /* classid on <var174:AbstractCompiler(GlobalCompiler)>*/;
+if (varonce176) {
+var177 = varonce176;
+} else {
+var178 = " && ((struct ";
+var179 = 13;
+var180 = string__NativeString__to_s_with_length(var178, var179);
+var177 = var180;
+varonce176 = var177;
+}
+var181 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_t) /* c_name on <var_t:MClassType>*/;
+if (varonce182) {
+var183 = varonce182;
+} else {
+var184 = "*)";
+var185 = 2;
+var186 = string__NativeString__to_s_with_length(var184, var185);
+var183 = var186;
+varonce182 = var183;
+}
+if (varonce187) {
+var188 = varonce187;
+} else {
+var189 = ")->value == ((struct ";
+var190 = 21;
+var191 = string__NativeString__to_s_with_length(var189, var190);
+var188 = var191;
+varonce187 = var188;
+}
+var192 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_t) /* c_name on <var_t:MClassType>*/;
+if (varonce193) {
+var194 = varonce193;
+} else {
+var195 = "*)";
+var196 = 2;
+var197 = string__NativeString__to_s_with_length(var195, var196);
+var194 = var197;
+varonce193 = var194;
+}
+if (varonce198) {
+var199 = varonce198;
+} else {
+var200 = ")->value)";
+var201 = 9;
+var202 = string__NativeString__to_s_with_length(var200, var201);
+var199 = var202;
+varonce198 = var199;
+}
+var203 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var203 = array_instance Array[Object] */
+var204 = 13;
+var205 = NEW_array__NativeArray(var204, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var205)->values[0] = (val*) var165;
+((struct instance_array__NativeArray*)var205)->values[1] = (val*) var_value1;
+((struct instance_array__NativeArray*)var205)->values[2] = (val*) var170;
+((struct instance_array__NativeArray*)var205)->values[3] = (val*) var175;
+((struct instance_array__NativeArray*)var205)->values[4] = (val*) var177;
+((struct instance_array__NativeArray*)var205)->values[5] = (val*) var181;
+((struct instance_array__NativeArray*)var205)->values[6] = (val*) var183;
+((struct instance_array__NativeArray*)var205)->values[7] = (val*) var_value1;
+((struct instance_array__NativeArray*)var205)->values[8] = (val*) var188;
+((struct instance_array__NativeArray*)var205)->values[9] = (val*) var192;
+((struct instance_array__NativeArray*)var205)->values[10] = (val*) var194;
+((struct instance_array__NativeArray*)var205)->values[11] = (val*) var_value2;
+((struct instance_array__NativeArray*)var205)->values[12] = (val*) var199;
+((void (*)(val*, val*, long))(var203->class->vft[COLOR_array__Array__with_native]))(var203, var205, var204) /* with_native on <var203:Array[Object]>*/;
+CHECK_NEW_array__Array(var203);
+}
+var206 = ((val* (*)(val*))(var203->class->vft[COLOR_string__Object__to_s]))(var203) /* to_s on <var203:Array[Object]>*/;
+((void (*)(val*, val*))(var_s->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_s, var206) /* add on <var_s:Array[String]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var149->class->vft[COLOR_abstract_collection__Iterator__next]))(var149) /* next on <var149:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var207 = ((short int (*)(val*))(var_s->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_s) /* is_empty on <var_s:Array[String]>*/;
+if (var207){
+if (varonce208) {
+var209 = varonce208;
+} else {
+var210 = " = ";
+var211 = 3;
+var212 = string__NativeString__to_s_with_length(var210, var211);
+var209 = var212;
+varonce208 = var209;
+}
+if (varonce213) {
+var214 = varonce213;
+} else {
+var215 = " == ";
+var216 = 4;
+var217 = string__NativeString__to_s_with_length(var215, var216);
+var214 = var217;
+varonce213 = var214;
+}
+if (varonce218) {
+var219 = varonce218;
+} else {
+var220 = ";";
+var221 = 1;
+var222 = string__NativeString__to_s_with_length(var220, var221);
+var219 = var222;
+varonce218 = var219;
+}
+var223 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var223 = array_instance Array[Object] */
+var224 = 6;
+var225 = NEW_array__NativeArray(var224, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var225)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var225)->values[1] = (val*) var209;
+((struct instance_array__NativeArray*)var225)->values[2] = (val*) var_value1;
+((struct instance_array__NativeArray*)var225)->values[3] = (val*) var214;
+((struct instance_array__NativeArray*)var225)->values[4] = (val*) var_value2;
+((struct instance_array__NativeArray*)var225)->values[5] = (val*) var219;
+((void (*)(val*, val*, long))(var223->class->vft[COLOR_array__Array__with_native]))(var223, var225, var224) /* with_native on <var223:Array[Object]>*/;
+CHECK_NEW_array__Array(var223);
+}
+var226 = ((val* (*)(val*))(var223->class->vft[COLOR_string__Object__to_s]))(var223) /* to_s on <var223:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var226) /* add on <self:GlobalCompilerVisitor>*/;
+} else {
+if (varonce227) {
+var228 = varonce227;
+} else {
+var229 = " = ";
+var230 = 3;
+var231 = string__NativeString__to_s_with_length(var229, var230);
+var228 = var231;
+varonce227 = var228;
+}
+if (varonce232) {
+var233 = varonce232;
+} else {
+var234 = " == ";
+var235 = 4;
+var236 = string__NativeString__to_s_with_length(var234, var235);
+var233 = var236;
+varonce232 = var233;
+}
+if (varonce237) {
+var238 = varonce237;
+} else {
+var239 = " || (";
+var240 = 5;
+var241 = string__NativeString__to_s_with_length(var239, var240);
+var238 = var241;
+varonce237 = var238;
+}
+if (varonce242) {
+var243 = varonce242;
+} else {
+var244 = " != NULL && ";
+var245 = 12;
+var246 = string__NativeString__to_s_with_length(var244, var245);
+var243 = var246;
+varonce242 = var243;
+}
+if (varonce247) {
+var248 = varonce247;
+} else {
+var249 = " != NULL && ";
+var250 = 12;
+var251 = string__NativeString__to_s_with_length(var249, var250);
+var248 = var251;
+varonce247 = var248;
+}
+if (varonce252) {
+var253 = varonce252;
+} else {
+var254 = "->classid == ";
+var255 = 13;
+var256 = string__NativeString__to_s_with_length(var254, var255);
+var253 = var256;
+varonce252 = var253;
+}
+if (varonce257) {
+var258 = varonce257;
+} else {
+var259 = "->classid && (";
+var260 = 14;
+var261 = string__NativeString__to_s_with_length(var259, var260);
+var258 = var261;
+varonce257 = var258;
+}
+if (varonce262) {
+var263 = varonce262;
+} else {
+var264 = " || ";
+var265 = 4;
+var266 = string__NativeString__to_s_with_length(var264, var265);
+var263 = var266;
+varonce262 = var263;
+}
+var267 = ((val* (*)(val*, val*))(var_s->class->vft[COLOR_string__Collection__join]))(var_s, var263) /* join on <var_s:Array[String]>*/;
+if (varonce268) {
+var269 = varonce268;
+} else {
+var270 = "));";
+var271 = 3;
+var272 = string__NativeString__to_s_with_length(var270, var271);
+var269 = var272;
+varonce268 = var269;
+}
+var273 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var273 = array_instance Array[Object] */
+var274 = 16;
+var275 = NEW_array__NativeArray(var274, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var275)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var275)->values[1] = (val*) var228;
+((struct instance_array__NativeArray*)var275)->values[2] = (val*) var_value1;
+((struct instance_array__NativeArray*)var275)->values[3] = (val*) var233;
+((struct instance_array__NativeArray*)var275)->values[4] = (val*) var_value2;
+((struct instance_array__NativeArray*)var275)->values[5] = (val*) var238;
+((struct instance_array__NativeArray*)var275)->values[6] = (val*) var_value1;
+((struct instance_array__NativeArray*)var275)->values[7] = (val*) var243;
+((struct instance_array__NativeArray*)var275)->values[8] = (val*) var_value2;
+((struct instance_array__NativeArray*)var275)->values[9] = (val*) var248;
+((struct instance_array__NativeArray*)var275)->values[10] = (val*) var_value1;
+((struct instance_array__NativeArray*)var275)->values[11] = (val*) var253;
+((struct instance_array__NativeArray*)var275)->values[12] = (val*) var_value2;
+((struct instance_array__NativeArray*)var275)->values[13] = (val*) var258;
+((struct instance_array__NativeArray*)var275)->values[14] = (val*) var267;
+((struct instance_array__NativeArray*)var275)->values[15] = (val*) var269;
+((void (*)(val*, val*, long))(var273->class->vft[COLOR_array__Array__with_native]))(var273, var275, var274) /* with_native on <var273:Array[Object]>*/;
+CHECK_NEW_array__Array(var273);
+}
+var276 = ((val* (*)(val*))(var273->class->vft[COLOR_string__Object__to_s]))(var273) /* to_s on <var273:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var276) /* add on <self:GlobalCompilerVisitor>*/;
+}
+}
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#GlobalCompilerVisitor#equal_test for (self: Object, RuntimeVariable, RuntimeVariable): RuntimeVariable */
+val* VIRTUAL_global_compiler__GlobalCompilerVisitor__equal_test(val* self, val* p0, val* p1) {
+val* var /* : RuntimeVariable */;
+val* var1 /* : RuntimeVariable */;
+var1 = global_compiler__GlobalCompilerVisitor__equal_test(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#GlobalCompilerVisitor#check_init_instance for (self: GlobalCompilerVisitor, RuntimeVariable, MClassType) */
+void global_compiler__GlobalCompilerVisitor__check_init_instance(val* self, val* p0, val* p1) {
+val* var_recv /* var recv: RuntimeVariable */;
+val* var_mtype /* var mtype: MClassType */;
+val* var /* : AbstractCompiler */;
+val* var1 /* : ModelBuilder */;
+val* var2 /* : ToolContext */;
+val* var3 /* : OptionBool */;
+val* var4 /* : nullable Object */;
+short int var5 /* : Bool */;
+val* var6 /* : MType */;
+short int var7 /* : Bool */;
+int cltype;
+int idtype;
+val* var8 /* : AbstractCompiler */;
+val* var9 /* : RapidTypeAnalysis */;
+val* var10 /* : HashSet[MClassType] */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+static val* varonce;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+long var15 /* : Int */;
+val* var16 /* : String */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : String */;
+val* var22 /* : Array[Object] */;
+long var23 /* : Int */;
+val* var24 /* : NativeArray[Object] */;
+val* var25 /* : String */;
+static val* varonce26;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+long var29 /* : Int */;
+val* var30 /* : String */;
+val* var31 /* : String */;
+static val* varonce32;
+val* var33 /* : String */;
+char* var34 /* : NativeString */;
+long var35 /* : Int */;
+val* var36 /* : String */;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+long var40 /* : Int */;
+val* var41 /* : String */;
+val* var42 /* : Array[Object] */;
+long var43 /* : Int */;
+val* var44 /* : NativeArray[Object] */;
+val* var45 /* : String */;
+var_recv = p0;
+var_mtype = p1;
+var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:GlobalCompilerVisitor>*/;
+var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var) /* modelbuilder on <var:AbstractCompiler(GlobalCompiler)>*/;
+var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var1) /* toolcontext on <var1:ModelBuilder>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__ToolContext__opt_no_check_initialization]))(var2) /* opt_no_check_initialization on <var2:ToolContext>*/;
+var4 = ((val* (*)(val*))(var3->class->vft[COLOR_opts__Option__value]))(var3) /* value on <var3:OptionBool>*/;
+var5 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
+if (var5){
+goto RET_LABEL;
+} else {
+}
+var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_mtype) /* anchor on <self:GlobalCompilerVisitor>*/;
+/* <var6:MType> isa MClassType */
+cltype = type_model__MClassType.color;
+idtype = type_model__MClassType.id;
+if(cltype >= var6->type->table_size) {
+var7 = 0;
+} else {
+var7 = var6->type->type_table[cltype] == idtype;
+}
+if (!var7) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/global_compiler.nit", 833);
+exit(1);
+}
+var_mtype = var6;
+var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:GlobalCompilerVisitor>*/;
+var9 = ((val* (*)(val*))(var8->class->vft[COLOR_global_compiler__GlobalCompiler__runtime_type_analysis]))(var8) /* runtime_type_analysis on <var8:AbstractCompiler(GlobalCompiler)>*/;
+var10 = ((val* (*)(val*))(var9->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var9) /* live_types on <var9:RapidTypeAnalysis>*/;
+var11 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__Collection__has]))(var10, var_mtype) /* has on <var10:HashSet[MClassType]>*/;
+var12 = !var11;
+if (var12){
+if (varonce) {
+var13 = varonce;
+} else {
+var14 = "problem: ";
+var15 = 9;
+var16 = string__NativeString__to_s_with_length(var14, var15);
+var13 = var16;
+varonce = var13;
+}
+if (varonce17) {
+var18 = varonce17;
+} else {
+var19 = " was detected dead";
+var20 = 18;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce17 = var18;
+}
+var22 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var22 = array_instance Array[Object] */
+var23 = 3;
+var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var24)->values[0] = (val*) var13;
+((struct instance_array__NativeArray*)var24)->values[1] = (val*) var_mtype;
+((struct instance_array__NativeArray*)var24)->values[2] = (val*) var18;
+((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
+CHECK_NEW_array__Array(var22);
+}
+var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__debug]))(self, var25) /* debug on <self:GlobalCompilerVisitor>*/;
+} else {
+}
+if (varonce26) {
+var27 = varonce26;
+} else {
+var28 = "CHECK_NEW_";
+var29 = 10;
+var30 = string__NativeString__to_s_with_length(var28, var29);
+var27 = var30;
+varonce26 = var27;
+}
+var31 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
+if (varonce32) {
+var33 = varonce32;
+} else {
+var34 = "(";
+var35 = 1;
+var36 = string__NativeString__to_s_with_length(var34, var35);
+var33 = var36;
+varonce32 = var33;
+}
+if (varonce37) {
+var38 = varonce37;
+} else {
+var39 = ");";
+var40 = 2;
+var41 = string__NativeString__to_s_with_length(var39, var40);
+var38 = var41;
+varonce37 = var38;
+}
+var42 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var42 = array_instance Array[Object] */
+var43 = 5;
+var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var44)->values[0] = (val*) var27;
+((struct instance_array__NativeArray*)var44)->values[1] = (val*) var31;
+((struct instance_array__NativeArray*)var44)->values[2] = (val*) var33;
+((struct instance_array__NativeArray*)var44)->values[3] = (val*) var_recv;
+((struct instance_array__NativeArray*)var44)->values[4] = (val*) var38;
+((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
+CHECK_NEW_array__Array(var42);
+}
+var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var45) /* add on <self:GlobalCompilerVisitor>*/;
+RET_LABEL:;
+}
+/* method global_compiler#GlobalCompilerVisitor#check_init_instance for (self: Object, RuntimeVariable, MClassType) */
+void VIRTUAL_global_compiler__GlobalCompilerVisitor__check_init_instance(val* self, val* p0, val* p1) {
+global_compiler__GlobalCompilerVisitor__check_init_instance(self, p0, p1);
+RET_LABEL:;
+}
+/* method global_compiler#GlobalCompilerVisitor#array_instance for (self: GlobalCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
+val* global_compiler__GlobalCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
+val* var /* : RuntimeVariable */;
+val* var_array /* var array: Array[RuntimeVariable] */;
+val* var_elttype /* var elttype: MType */;
+val* var1 /* : MType */;
+static val* varonce;
+val* var2 /* : String */;
+char* var3 /* : NativeString */;
+long var4 /* : Int */;
+val* var5 /* : String */;
+val* var6 /* : MClass */;
+val* var7 /* : Array[MType] */;
+long var8 /* : Int */;
+val* var9 /* : NativeArray[MType] */;
+val* var10 /* : MClassType */;
+val* var_arraytype /* var arraytype: MClassType */;
+val* var11 /* : RuntimeVariable */;
+val* var_res /* var res: RuntimeVariable */;
+static val* varonce12;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+long var15 /* : Int */;
+val* var16 /* : String */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : String */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+long var25 /* : Int */;
+val* var26 /* : String */;
+val* var27 /* : Array[Object] */;
+long var28 /* : Int */;
+val* var29 /* : NativeArray[Object] */;
+val* var30 /* : String */;
+static val* varonce31;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+long var34 /* : Int */;
+val* var35 /* : String */;
+val* var36 /* : MClass */;
+val* var37 /* : Array[MType] */;
+long var38 /* : Int */;
+val* var39 /* : NativeArray[MType] */;
+val* var40 /* : MClassType */;
+val* var41 /* : RuntimeVariable */;
+val* var_nat /* var nat: RuntimeVariable */;
+short int var42 /* : Bool */;
+static val* varonce43;
+val* var44 /* : String */;
+char* var45 /* : NativeString */;
+long var46 /* : Int */;
+val* var47 /* : String */;
+val* var48 /* : MType */;
+val* var49 /* : String */;
+static val* varonce50;
+val* var51 /* : String */;
+char* var52 /* : NativeString */;
+long var53 /* : Int */;
+val* var54 /* : String */;
+long var55 /* : Int */;
+static val* varonce56;
+val* var57 /* : String */;
+char* var58 /* : NativeString */;
+long var59 /* : Int */;
+val* var60 /* : String */;
+val* var61 /* : Array[Object] */;
+long var62 /* : Int */;
+val* var63 /* : NativeArray[Object] */;
+val* var64 /* : Object */;
+val* var65 /* : String */;
+val* var66 /* : Range[Int] */;
+long var67 /* : Int */;
+long var68 /* : Int */;
+val* var69 /* : Discrete */;
+val* var70 /* : Discrete */;
+val* var71 /* : Iterator[nullable Object] */;
+short int var72 /* : Bool */;
+val* var73 /* : nullable Object */;
+long var_i /* var i: Int */;
+long var74 /* : Int */;
+val* var75 /* : nullable Object */;
+val* var76 /* : RuntimeVariable */;
+val* var_r /* var r: RuntimeVariable */;
+static val* varonce77;
+val* var78 /* : String */;
+char* var79 /* : NativeString */;
+long var80 /* : Int */;
+val* var81 /* : String */;
+val* var82 /* : MType */;
+val* var83 /* : String */;
+static val* varonce84;
+val* var85 /* : String */;
+char* var86 /* : NativeString */;
+long var87 /* : Int */;
+val* var88 /* : String */;
+static val* varonce89;
+val* var90 /* : String */;
+char* var91 /* : NativeString */;
+long var92 /* : Int */;
+val* var93 /* : String */;
+static val* varonce94;
+val* var95 /* : String */;
+char* var96 /* : NativeString */;
+long var97 /* : Int */;
+val* var98 /* : String */;
+static val* varonce99;
+val* var100 /* : String */;
+char* var101 /* : NativeString */;
+long var102 /* : Int */;
+val* var103 /* : String */;
+val* var104 /* : Array[Object] */;
+long var105 /* : Int */;
+val* var106 /* : NativeArray[Object] */;
+val* var107 /* : Object */;
+val* var108 /* : String */;
+long var109 /* : Int */;
+val* var110 /* : RuntimeVariable */;
+val* var_length /* var length: RuntimeVariable */;
+static val* varonce111;
+val* var112 /* : String */;
+char* var113 /* : NativeString */;
+long var114 /* : Int */;
+val* var115 /* : String */;
+val* var116 /* : MMethod */;
+val* var117 /* : Array[RuntimeVariable] */;
+long var118 /* : Int */;
+val* var119 /* : NativeArray[RuntimeVariable] */;
+val* var120 /* : nullable RuntimeVariable */;
+static val* varonce121;
+val* var122 /* : String */;
+char* var123 /* : NativeString */;
+long var124 /* : Int */;
+val* var125 /* : String */;
+var_array = p0;
+var_elttype = p1;
+var1 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor]))(self, var_elttype) /* anchor on <self:GlobalCompilerVisitor>*/;
+var_elttype = var1;
+if (varonce) {
+var2 = varonce;
+} else {
+var3 = "Array";
+var4 = 5;
+var5 = string__NativeString__to_s_with_length(var3, var4);
+var2 = var5;
+varonce = var2;
+}
+var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var2) /* get_class on <self:GlobalCompilerVisitor>*/;
+var7 = NEW_array__Array(&type_array__Arraymodel__MType);
+{ /* var7 = array_instance Array[MType] */
+var8 = 1;
+var9 = NEW_array__NativeArray(var8, &type_array__NativeArraymodel__MType);
+((struct instance_array__NativeArray*)var9)->values[0] = (val*) var_elttype;
+((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[MType]>*/;
+CHECK_NEW_array__Array(var7);
+}
+var10 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_model__MClass__get_mtype]))(var6, var7) /* get_mtype on <var6:MClass>*/;
+var_arraytype = var10;
+var11 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance]))(self, var_arraytype) /* init_instance on <self:GlobalCompilerVisitor>*/;
+var_res = var11;
+if (varonce12) {
+var13 = varonce12;
+} else {
+var14 = "{ /* ";
+var15 = 5;
+var16 = string__NativeString__to_s_with_length(var14, var15);
+var13 = var16;
+varonce12 = var13;
+}
+if (varonce17) {
+var18 = varonce17;
+} else {
+var19 = " = array_instance Array[";
+var20 = 24;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce17 = var18;
+}
+if (varonce22) {
+var23 = varonce22;
+} else {
+var24 = "] */";
+var25 = 4;
+var26 = string__NativeString__to_s_with_length(var24, var25);
+var23 = var26;
+varonce22 = var23;
+}
+var27 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var27 = array_instance Array[Object] */
+var28 = 5;
+var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var29)->values[0] = (val*) var13;
+((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_res;
+((struct instance_array__NativeArray*)var29)->values[2] = (val*) var18;
+((struct instance_array__NativeArray*)var29)->values[3] = (val*) var_elttype;
+((struct instance_array__NativeArray*)var29)->values[4] = (val*) var23;
+((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
+CHECK_NEW_array__Array(var27);
+}
+var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var30) /* add on <self:GlobalCompilerVisitor>*/;
+if (varonce31) {
+var32 = varonce31;
+} else {
+var33 = "NativeArray";
+var34 = 11;
+var35 = string__NativeString__to_s_with_length(var33, var34);
+var32 = var35;
+varonce31 = var32;
+}
+var36 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var32) /* get_class on <self:GlobalCompilerVisitor>*/;
+var37 = NEW_array__Array(&type_array__Arraymodel__MType);
+{ /* var37 = array_instance Array[MType] */
+var38 = 1;
+var39 = NEW_array__NativeArray(var38, &type_array__NativeArraymodel__MType);
+((struct instance_array__NativeArray*)var39)->values[0] = (val*) var_elttype;
+((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[MType]>*/;
+CHECK_NEW_array__Array(var37);
+}
+var40 = ((val* (*)(val*, val*))(var36->class->vft[COLOR_model__MClass__get_mtype]))(var36, var37) /* get_mtype on <var36:MClass>*/;
+var41 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var40) /* new_var on <self:GlobalCompilerVisitor>*/;
+var_nat = var41;
+var42 = 1;
+((void (*)(val*, short int))(var_nat->class->vft[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d]))(var_nat, var42) /* is_exact= on <var_nat:RuntimeVariable>*/;
+if (varonce43) {
+var44 = varonce43;
+} else {
+var45 = " = NEW_";
+var46 = 7;
+var47 = string__NativeString__to_s_with_length(var45, var46);
+var44 = var47;
+varonce43 = var44;
+}
+var48 = ((val* (*)(val*))(var_nat->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_nat) /* mtype on <var_nat:RuntimeVariable>*/;
+var49 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_compiler__MType__c_name]))(var48) /* c_name on <var48:MType>*/;
+if (varonce50) {
+var51 = varonce50;
+} else {
+var52 = "(";
+var53 = 1;
+var54 = string__NativeString__to_s_with_length(var52, var53);
+var51 = var54;
+varonce50 = var51;
+}
+var55 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
+if (varonce56) {
+var57 = varonce56;
+} else {
+var58 = ");";
+var59 = 2;
+var60 = string__NativeString__to_s_with_length(var58, var59);
+var57 = var60;
+varonce56 = var57;
+}
+var61 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var61 = array_instance Array[Object] */
+var62 = 6;
+var63 = NEW_array__NativeArray(var62, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var63)->values[0] = (val*) var_nat;
+((struct instance_array__NativeArray*)var63)->values[1] = (val*) var44;
+((struct instance_array__NativeArray*)var63)->values[2] = (val*) var49;
+((struct instance_array__NativeArray*)var63)->values[3] = (val*) var51;
+var64 = BOX_kernel__Int(var55); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var63)->values[4] = (val*) var64;
+((struct instance_array__NativeArray*)var63)->values[5] = (val*) var57;
+((void (*)(val*, val*, long))(var61->class->vft[COLOR_array__Array__with_native]))(var61, var63, var62) /* with_native on <var61:Array[Object]>*/;
+CHECK_NEW_array__Array(var61);
+}
+var65 = ((val* (*)(val*))(var61->class->vft[COLOR_string__Object__to_s]))(var61) /* to_s on <var61:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var65) /* add on <self:GlobalCompilerVisitor>*/;
+var66 = NEW_range__Range(&type_range__Rangekernel__Int);
+var67 = 0;
+var68 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
+var69 = BOX_kernel__Int(var67); /* autobox from Int to Discrete */
+var70 = BOX_kernel__Int(var68); /* autobox from Int to Discrete */
+((void (*)(val*, val*, val*))(var66->class->vft[COLOR_range__Range__without_last]))(var66, var69, var70) /* without_last on <var66:Range[Int]>*/;
+CHECK_NEW_range__Range(var66);
+var71 = ((val* (*)(val*))(var66->class->vft[COLOR_abstract_collection__Collection__iterator]))(var66) /* iterator on <var66:Range[Int]>*/;
+for(;;) {
+var72 = ((short int (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var71) /* is_ok on <var71:Iterator[nullable Object]>*/;
+if(!var72) break;
+var73 = ((val* (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__item]))(var71) /* item on <var71:Iterator[nullable Object]>*/;
+var74 = ((struct instance_kernel__Int*)var73)->value; /* autounbox from nullable Object to Int */;
+var_i = var74;
+var75 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[RuntimeVariable]>*/;
+var76 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var75, var_elttype) /* autobox on <self:GlobalCompilerVisitor>*/;
+var_r = var76;
+if (varonce77) {
+var78 = varonce77;
+} else {
+var79 = "((struct ";
+var80 = 9;
+var81 = string__NativeString__to_s_with_length(var79, var80);
+var78 = var81;
+varonce77 = var78;
+}
+var82 = ((val* (*)(val*))(var_nat->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_nat) /* mtype on <var_nat:RuntimeVariable>*/;
+var83 = ((val* (*)(val*))(var82->class->vft[COLOR_abstract_compiler__MType__c_name]))(var82) /* c_name on <var82:MType>*/;
+if (varonce84) {
+var85 = varonce84;
+} else {
+var86 = "*) ";
+var87 = 3;
+var88 = string__NativeString__to_s_with_length(var86, var87);
+var85 = var88;
+varonce84 = var85;
+}
+if (varonce89) {
+var90 = varonce89;
+} else {
+var91 = ")->values[";
+var92 = 10;
+var93 = string__NativeString__to_s_with_length(var91, var92);
+var90 = var93;
+varonce89 = var90;
+}
+if (varonce94) {
+var95 = varonce94;
+} else {
+var96 = "] = ";
+var97 = 4;
+var98 = string__NativeString__to_s_with_length(var96, var97);
+var95 = var98;
+varonce94 = var95;
+}
+if (varonce99) {
+var100 = varonce99;
+} else {
+var101 = ";";
+var102 = 1;
+var103 = string__NativeString__to_s_with_length(var101, var102);
+var100 = var103;
+varonce99 = var100;
+}
+var104 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var104 = array_instance Array[Object] */
+var105 = 9;
+var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var106)->values[0] = (val*) var78;
+((struct instance_array__NativeArray*)var106)->values[1] = (val*) var83;
+((struct instance_array__NativeArray*)var106)->values[2] = (val*) var85;
+((struct instance_array__NativeArray*)var106)->values[3] = (val*) var_nat;
+((struct instance_array__NativeArray*)var106)->values[4] = (val*) var90;
+var107 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var106)->values[5] = (val*) var107;
+((struct instance_array__NativeArray*)var106)->values[6] = (val*) var95;
+((struct instance_array__NativeArray*)var106)->values[7] = (val*) var_r;
+((struct instance_array__NativeArray*)var106)->values[8] = (val*) var100;
+((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
+CHECK_NEW_array__Array(var104);
+}
+var108 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var108) /* add on <self:GlobalCompilerVisitor>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var71->class->vft[COLOR_abstract_collection__Iterator__next]))(var71) /* next on <var71:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var109 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[RuntimeVariable]>*/;
+var110 = ((val* (*)(val*, long))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__int_instance]))(self, var109) /* int_instance on <self:GlobalCompilerVisitor>*/;
+var_length = var110;
+if (varonce111) {
+var112 = varonce111;
+} else {
+var113 = "with_native";
+var114 = 11;
+var115 = string__NativeString__to_s_with_length(var113, var114);
+var112 = var115;
+varonce111 = var112;
+}
+var116 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property]))(self, var112, var_arraytype) /* get_property on <self:GlobalCompilerVisitor>*/;
+var117 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
+{ /* var117 = array_instance Array[RuntimeVariable] */
+var118 = 3;
+var119 = NEW_array__NativeArray(var118, &type_array__NativeArrayabstract_compiler__RuntimeVariable);
+((struct instance_array__NativeArray*)var119)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_nat;
+((struct instance_array__NativeArray*)var119)->values[2] = (val*) var_length;
+((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[RuntimeVariable]>*/;
+CHECK_NEW_array__Array(var117);
+}
+var120 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__send]))(self, var116, var117) /* send on <self:GlobalCompilerVisitor>*/;
+var120;
+((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__check_init_instance]))(self, var_res, var_arraytype) /* check_init_instance on <self:GlobalCompilerVisitor>*/;
+if (varonce121) {
+var122 = varonce121;
+} else {
+var123 = "}";
+var124 = 1;
+var125 = string__NativeString__to_s_with_length(var123, var124);
+var122 = var125;
+varonce121 = var122;
+}
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var122) /* add on <self:GlobalCompilerVisitor>*/;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#GlobalCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
+val* VIRTUAL_global_compiler__GlobalCompilerVisitor__array_instance(val* self, val* p0, val* p1) {
+val* var /* : RuntimeVariable */;
+val* var1 /* : RuntimeVariable */;
+var1 = global_compiler__GlobalCompilerVisitor__array_instance(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#recv for (self: CustomizedRuntimeFunction): MClassType */
+val* global_compiler__CustomizedRuntimeFunction__recv(val* self) {
+val* var /* : MClassType */;
+val* var1 /* : MClassType */;
+var1 = self->attrs[COLOR_global_compiler__CustomizedRuntimeFunction___64drecv].val; /* @recv on <self:CustomizedRuntimeFunction> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @recv", "src/global_compiler.nit", 869);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#recv for (self: Object): MClassType */
+val* VIRTUAL_global_compiler__CustomizedRuntimeFunction__recv(val* self) {
+val* var /* : MClassType */;
+val* var1 /* : MClassType */;
+var1 = global_compiler__CustomizedRuntimeFunction__recv(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#recv= for (self: CustomizedRuntimeFunction, MClassType) */
+void global_compiler__CustomizedRuntimeFunction__recv_61d(val* self, val* p0) {
+self->attrs[COLOR_global_compiler__CustomizedRuntimeFunction___64drecv].val = p0; /* @recv on <self:CustomizedRuntimeFunction> */
+RET_LABEL:;
+}
+/* method global_compiler#CustomizedRuntimeFunction#recv= for (self: Object, MClassType) */
+void VIRTUAL_global_compiler__CustomizedRuntimeFunction__recv_61d(val* self, val* p0) {
+global_compiler__CustomizedRuntimeFunction__recv_61d(self, p0);
+RET_LABEL:;
+}
+/* method global_compiler#CustomizedRuntimeFunction#init for (self: CustomizedRuntimeFunction, MMethodDef, MClassType) */
+void global_compiler__CustomizedRuntimeFunction__init(val* self, val* p0, val* p1) {
+val* var_mmethoddef /* var mmethoddef: MMethodDef */;
+val* var_recv /* var recv: MClassType */;
+var_mmethoddef = p0;
+var_recv = p1;
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(self, var_mmethoddef) /* init on <self:CustomizedRuntimeFunction>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv_61d]))(self, var_recv) /* recv= on <self:CustomizedRuntimeFunction>*/;
+RET_LABEL:;
+}
+/* method global_compiler#CustomizedRuntimeFunction#init for (self: Object, MMethodDef, MClassType) */
+void VIRTUAL_global_compiler__CustomizedRuntimeFunction__init(val* self, val* p0, val* p1) {
+global_compiler__CustomizedRuntimeFunction__init(self, p0, p1);
+RET_LABEL:;
+}
+/* method global_compiler#CustomizedRuntimeFunction#build_c_name for (self: CustomizedRuntimeFunction): String */
+val* global_compiler__CustomizedRuntimeFunction__build_c_name(val* self) {
+val* var /* : String */;
+val* var1 /* : nullable String */;
+val* var_res /* var res: nullable String */;
+val* var2 /* : null */;
+short int var3 /* : Bool */;
+val* var4 /* : MMethodDef */;
+val* var5 /* : MClassDef */;
+val* var6 /* : MClassType */;
+val* var7 /* : MClassType */;
+short int var8 /* : Bool */;
+val* var9 /* : MMethodDef */;
+val* var10 /* : String */;
+val* var11 /* : Array[Object] */;
+long var12 /* : Int */;
+val* var_ /* var : Array[Object] */;
+static val* varonce;
+val* var13 /* : String */;
+char* var14 /* : NativeString */;
+long var15 /* : Int */;
+val* var16 /* : String */;
+val* var17 /* : MMethodDef */;
+val* var18 /* : String */;
+static val* varonce19;
+val* var20 /* : String */;
+char* var21 /* : NativeString */;
+long var22 /* : Int */;
+val* var23 /* : String */;
+val* var24 /* : MClassType */;
+val* var25 /* : String */;
+static val* varonce26;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+long var29 /* : Int */;
+val* var30 /* : String */;
+val* var31 /* : String */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name_cache]))(self) /* c_name_cache on <self:CustomizedRuntimeFunction>*/;
+var_res = var1;
+var2 = NULL;
+if (var_res == NULL) {
+var3 = 0; /* is null */
+} else {
+var3 = 1; /* arg is null and recv is not */
+}
+if (var3){
+var = var_res;
+goto RET_LABEL;
+} else {
+}
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MPropDef__mclassdef]))(var4) /* mclassdef on <var4:MMethodDef>*/;
+var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:MClassDef>*/;
+var7 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+var8 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_kernel__Object___61d_61d]))(var6, var7) /* == on <var6:MClassType>*/;
+if (var8){
+var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var9) /* c_name on <var9:MMethodDef>*/;
+var_res = var10;
+} else {
+var11 = NEW_array__Array(&type_array__Arraykernel__Object);
+var12 = 5;
+((void (*)(val*, long))(var11->class->vft[COLOR_array__Array__with_capacity]))(var11, var12) /* with_capacity on <var11:Array[Object]>*/;
+CHECK_NEW_array__Array(var11);
+var_ = var11;
+if (varonce) {
+var13 = varonce;
+} else {
+var14 = "";
+var15 = 0;
+var16 = string__NativeString__to_s_with_length(var14, var15);
+var13 = var16;
+varonce = var13;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var13) /* add on <var_:Array[Object]>*/;
+var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var18 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var17) /* c_name on <var17:MMethodDef>*/;
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var18) /* add on <var_:Array[Object]>*/;
+if (varonce19) {
+var20 = varonce19;
+} else {
+var21 = "__";
+var22 = 2;
+var23 = string__NativeString__to_s_with_length(var21, var22);
+var20 = var23;
+varonce19 = var20;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var20) /* add on <var_:Array[Object]>*/;
+var24 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+var25 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_compiler__MType__c_name]))(var24) /* c_name on <var24:MClassType>*/;
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var25) /* add on <var_:Array[Object]>*/;
+if (varonce26) {
+var27 = varonce26;
+} else {
+var28 = "";
+var29 = 0;
+var30 = string__NativeString__to_s_with_length(var28, var29);
+var27 = var30;
+varonce26 = var27;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var27) /* add on <var_:Array[Object]>*/;
+var31 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
+var_res = var31;
+}
+((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name_cache_61d]))(self, var_res) /* c_name_cache= on <self:CustomizedRuntimeFunction>*/;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#build_c_name for (self: Object): String */
+val* VIRTUAL_global_compiler__CustomizedRuntimeFunction__build_c_name(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = global_compiler__CustomizedRuntimeFunction__build_c_name(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#== for (self: CustomizedRuntimeFunction, nullable Object): Bool */
+short int global_compiler__CustomizedRuntimeFunction___61d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+val* var_o /* var o: nullable Object */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var4 /* : MMethodDef */;
+val* var5 /* : MMethodDef */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var8 /* : MClassType */;
+val* var9 /* : MClassType */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+var_o = p0;
+/* <var_o:nullable Object> isa CustomizedRuntimeFunction */
+cltype = type_global_compiler__CustomizedRuntimeFunction.color;
+idtype = type_global_compiler__CustomizedRuntimeFunction.id;
+if(var_o == NULL) {
+var1 = 0;
+} else {
+if(cltype >= var_o->type->table_size) {
+var1 = 0;
+} else {
+var1 = var_o->type->type_table[cltype] == idtype;
+}
+}
+var2 = !var1;
+if (var2){
+var3 = 0;
+var = var3;
+goto RET_LABEL;
+} else {
+}
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var5 = ((val* (*)(val*))(var_o->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(var_o) /* mmethoddef on <var_o:nullable Object(CustomizedRuntimeFunction)>*/;
+var6 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_kernel__Object___33d_61d]))(var4, var5) /* != on <var4:MMethodDef>*/;
+if (var6){
+var7 = 0;
+var = var7;
+goto RET_LABEL;
+} else {
+}
+var8 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+var9 = ((val* (*)(val*))(var_o->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(var_o) /* recv on <var_o:nullable Object(CustomizedRuntimeFunction)>*/;
+var10 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___33d_61d]))(var8, var9) /* != on <var8:MClassType>*/;
+if (var10){
+var11 = 0;
+var = var11;
+goto RET_LABEL;
+} else {
+}
+var12 = 1;
+var = var12;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#== for (self: Object, nullable Object): Bool */
+short int VIRTUAL_global_compiler__CustomizedRuntimeFunction___61d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = global_compiler__CustomizedRuntimeFunction___61d_61d(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#hash for (self: CustomizedRuntimeFunction): Int */
+long global_compiler__CustomizedRuntimeFunction__hash(val* self) {
+long var /* : Int */;
+val* var1 /* : MMethodDef */;
+long var2 /* : Int */;
+val* var3 /* : MClassType */;
+long var4 /* : Int */;
+long var5 /* : Int */;
+long var7 /* : Int */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var2 = ((long (*)(val*))(var1->class->vft[COLOR_kernel__Object__hash]))(var1) /* hash on <var1:MMethodDef>*/;
+var3 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+var4 = ((long (*)(val*))(var3->class->vft[COLOR_kernel__Object__hash]))(var3) /* hash on <var3:MClassType>*/;
+{ /* Inline kernel#Int#+ (var2,var4) */
+var7 = var2 + var4;
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+var = var5;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#hash for (self: Object): Int */
+long VIRTUAL_global_compiler__CustomizedRuntimeFunction__hash(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = global_compiler__CustomizedRuntimeFunction__hash(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#to_s for (self: CustomizedRuntimeFunction): String */
+val* global_compiler__CustomizedRuntimeFunction__to_s(val* self) {
+val* var /* : String */;
+val* var1 /* : MMethodDef */;
+val* var2 /* : MClassDef */;
+val* var3 /* : MClassType */;
+val* var4 /* : MClassType */;
+short int var5 /* : Bool */;
+val* var6 /* : MMethodDef */;
+val* var7 /* : String */;
+val* var8 /* : Array[Object] */;
+long var9 /* : Int */;
+val* var_ /* var : Array[Object] */;
+static val* varonce;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+long var12 /* : Int */;
+val* var13 /* : String */;
+val* var14 /* : MMethodDef */;
+static val* varonce15;
+val* var16 /* : String */;
+char* var17 /* : NativeString */;
+long var18 /* : Int */;
+val* var19 /* : String */;
+val* var20 /* : MClassType */;
+static val* varonce21;
+val* var22 /* : String */;
+char* var23 /* : NativeString */;
+long var24 /* : Int */;
+val* var25 /* : String */;
+val* var26 /* : String */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MPropDef__mclassdef]))(var1) /* mclassdef on <var1:MMethodDef>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var2) /* bound_mtype on <var2:MClassDef>*/;
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+var5 = ((short int (*)(val*, val*))(var3->class->vft[COLOR_kernel__Object___61d_61d]))(var3, var4) /* == on <var3:MClassType>*/;
+if (var5){
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var7 = ((val* (*)(val*))(var6->class->vft[COLOR_string__Object__to_s]))(var6) /* to_s on <var6:MMethodDef>*/;
+var = var7;
+goto RET_LABEL;
+} else {
+var8 = NEW_array__Array(&type_array__Arraykernel__Object);
+var9 = 5;
+((void (*)(val*, long))(var8->class->vft[COLOR_array__Array__with_capacity]))(var8, var9) /* with_capacity on <var8:Array[Object]>*/;
+CHECK_NEW_array__Array(var8);
+var_ = var8;
+if (varonce) {
+var10 = varonce;
+} else {
+var11 = "";
+var12 = 0;
+var13 = string__NativeString__to_s_with_length(var11, var12);
+var10 = var13;
+varonce = var10;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
+var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
+if (varonce15) {
+var16 = varonce15;
+} else {
+var17 = "@";
+var18 = 1;
+var19 = string__NativeString__to_s_with_length(var17, var18);
+var16 = var19;
+varonce15 = var16;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
+var20 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var20) /* add on <var_:Array[Object]>*/;
+if (varonce21) {
+var22 = varonce21;
+} else {
+var23 = "";
+var24 = 0;
+var25 = string__NativeString__to_s_with_length(var23, var24);
+var22 = var25;
+varonce21 = var22;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var22) /* add on <var_:Array[Object]>*/;
+var26 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
+var = var26;
+goto RET_LABEL;
+}
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#to_s for (self: Object): String */
+val* VIRTUAL_global_compiler__CustomizedRuntimeFunction__to_s(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = global_compiler__CustomizedRuntimeFunction__to_s(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#compile_to_c for (self: CustomizedRuntimeFunction, GlobalCompiler) */
+void global_compiler__CustomizedRuntimeFunction__compile_to_c(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_compiler /* var compiler: GlobalCompiler */;
+val* var1 /* : MClassType */;
+val* var_recv /* var recv: MClassType */;
+val* var2 /* : MMethodDef */;
+val* var_mmethoddef /* var mmethoddef: MMethodDef */;
+val* var3 /* : MModule */;
+val* var4 /* : null */;
+val* var5 /* : MClassDef */;
+val* var6 /* : MClassType */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+static val* varonce;
+val* var9 /* : String */;
+char* var10 /* : NativeString */;
+long var11 /* : Int */;
+val* var12 /* : String */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+long var16 /* : Int */;
+val* var17 /* : String */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+long var21 /* : Int */;
+val* var22 /* : String */;
+val* var23 /* : Array[Object] */;
+long var24 /* : Int */;
+val* var25 /* : NativeArray[Object] */;
+val* var26 /* : String */;
+val* var27 /* : AbstractCompilerVisitor */;
+val* var_v /* var v: GlobalCompilerVisitor */;
+val* var28 /* : RuntimeVariable */;
+static val* varonce29;
+val* var30 /* : String */;
+char* var31 /* : NativeString */;
+long var32 /* : Int */;
+val* var33 /* : String */;
+val* var_selfvar /* var selfvar: RuntimeVariable */;
+val* var34 /* : RapidTypeAnalysis */;
+val* var35 /* : HashSet[MClassType] */;
+short int var36 /* : Bool */;
+short int var37 /* : Bool */;
+val* var38 /* : Array[RuntimeVariable] */;
+val* var_arguments /* var arguments: Array[RuntimeVariable] */;
+val* var39 /* : Frame */;
+val* var_frame /* var frame: Frame */;
+val* var40 /* : Buffer */;
+val* var_sig /* var sig: Buffer */;
+val* var41 /* : Buffer */;
+val* var_comment /* var comment: Buffer */;
+val* var42 /* : nullable MSignature */;
+val* var43 /* : nullable MType */;
+val* var_ret /* var ret: nullable MType */;
+val* var44 /* : null */;
+short int var45 /* : Bool */;
+val* var46 /* : MType */;
+val* var47 /* : String */;
+static val* varonce48;
+val* var49 /* : String */;
+char* var50 /* : NativeString */;
+long var51 /* : Int */;
+val* var52 /* : String */;
+val* var53 /* : Array[Object] */;
+long var54 /* : Int */;
+val* var55 /* : NativeArray[Object] */;
+val* var56 /* : String */;
+val* var57 /* : MProperty */;
+short int var58 /* : Bool */;
+val* var59 /* : String */;
+static val* varonce60;
+val* var61 /* : String */;
+char* var62 /* : NativeString */;
+long var63 /* : Int */;
+val* var64 /* : String */;
+val* var65 /* : Array[Object] */;
+long var66 /* : Int */;
+val* var67 /* : NativeArray[Object] */;
+val* var68 /* : String */;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+long var72 /* : Int */;
+val* var73 /* : String */;
+val* var74 /* : String */;
+static val* varonce75;
+val* var76 /* : String */;
+char* var77 /* : NativeString */;
+long var78 /* : Int */;
+val* var79 /* : String */;
+val* var80 /* : String */;
+static val* varonce81;
+val* var82 /* : String */;
+char* var83 /* : NativeString */;
+long var84 /* : Int */;
+val* var85 /* : String */;
+val* var86 /* : Array[Object] */;
+long var87 /* : Int */;
+val* var88 /* : NativeArray[Object] */;
+val* var89 /* : String */;
+static val* varonce90;
+val* var91 /* : String */;
+char* var92 /* : NativeString */;
+long var93 /* : Int */;
+val* var94 /* : String */;
+val* var95 /* : Array[Object] */;
+long var96 /* : Int */;
+val* var97 /* : NativeArray[Object] */;
+val* var98 /* : String */;
+val* var99 /* : Range[Int] */;
+long var100 /* : Int */;
+val* var101 /* : nullable MSignature */;
+long var102 /* : Int */;
+val* var103 /* : Discrete */;
+val* var104 /* : Discrete */;
+val* var105 /* : Iterator[nullable Object] */;
+short int var106 /* : Bool */;
+val* var107 /* : nullable Object */;
+long var_i /* var i: Int */;
+long var108 /* : Int */;
+val* var109 /* : nullable MSignature */;
+val* var110 /* : Array[MParameter] */;
+val* var111 /* : nullable Object */;
+val* var112 /* : MType */;
+val* var_mtype /* var mtype: MType */;
+val* var113 /* : nullable MSignature */;
+long var114 /* : Int */;
+short int var115 /* : Bool */;
+short int var117 /* : Bool */;
+static val* varonce118;
+val* var119 /* : String */;
+char* var120 /* : NativeString */;
+long var121 /* : Int */;
+val* var122 /* : String */;
+val* var123 /* : MClass */;
+val* var124 /* : Array[MType] */;
+long var125 /* : Int */;
+val* var126 /* : NativeArray[MType] */;
+val* var127 /* : MClassType */;
+val* var128 /* : MType */;
+static val* varonce129;
+val* var130 /* : String */;
+char* var131 /* : NativeString */;
+long var132 /* : Int */;
+val* var133 /* : String */;
+val* var134 /* : Array[Object] */;
+long var135 /* : Int */;
+val* var136 /* : NativeArray[Object] */;
+val* var137 /* : String */;
+static val* varonce138;
+val* var139 /* : String */;
+char* var140 /* : NativeString */;
+long var141 /* : Int */;
+val* var142 /* : String */;
+val* var143 /* : String */;
+static val* varonce144;
+val* var145 /* : String */;
+char* var146 /* : NativeString */;
+long var147 /* : Int */;
+val* var148 /* : String */;
+val* var149 /* : Array[Object] */;
+long var150 /* : Int */;
+val* var151 /* : NativeArray[Object] */;
+val* var152 /* : Object */;
+val* var153 /* : String */;
+val* var154 /* : RuntimeVariable */;
+val* var155 /* : Array[Object] */;
+long var156 /* : Int */;
+val* var_ /* var : Array[Object] */;
+static val* varonce157;
+val* var158 /* : String */;
+char* var159 /* : NativeString */;
+long var160 /* : Int */;
+val* var161 /* : String */;
+val* var162 /* : nullable Object */;
+static val* varonce163;
+val* var164 /* : String */;
+char* var165 /* : NativeString */;
+long var166 /* : Int */;
+val* var167 /* : String */;
+val* var168 /* : String */;
+val* var_argvar /* var argvar: RuntimeVariable */;
+static val* varonce169;
+val* var170 /* : String */;
+char* var171 /* : NativeString */;
+long var172 /* : Int */;
+val* var173 /* : String */;
+static val* varonce174;
+val* var175 /* : String */;
+char* var176 /* : NativeString */;
+long var177 /* : Int */;
+val* var178 /* : String */;
+val* var179 /* : null */;
+short int var180 /* : Bool */;
+static val* varonce181;
+val* var182 /* : String */;
+char* var183 /* : NativeString */;
+long var184 /* : Int */;
+val* var185 /* : String */;
+val* var186 /* : Array[Object] */;
+long var187 /* : Int */;
+val* var188 /* : NativeArray[Object] */;
+val* var189 /* : String */;
+val* var190 /* : CodeWriter */;
+static val* varonce191;
+val* var192 /* : String */;
+char* var193 /* : NativeString */;
+long var194 /* : Int */;
+val* var195 /* : String */;
+val* var196 /* : Array[Object] */;
+long var197 /* : Int */;
+val* var198 /* : NativeArray[Object] */;
+val* var199 /* : String */;
+static val* varonce200;
+val* var201 /* : String */;
+char* var202 /* : NativeString */;
+long var203 /* : Int */;
+val* var204 /* : String */;
+static val* varonce205;
+val* var206 /* : String */;
+char* var207 /* : NativeString */;
+long var208 /* : Int */;
+val* var209 /* : String */;
+static val* varonce210;
+val* var211 /* : String */;
+char* var212 /* : NativeString */;
+long var213 /* : Int */;
+val* var214 /* : String */;
+val* var215 /* : Array[Object] */;
+long var216 /* : Int */;
+val* var217 /* : NativeArray[Object] */;
+val* var218 /* : String */;
+static val* varonce219;
+val* var220 /* : String */;
+char* var221 /* : NativeString */;
+long var222 /* : Int */;
+val* var223 /* : String */;
+val* var224 /* : Array[Object] */;
+long var225 /* : Int */;
+val* var226 /* : NativeArray[Object] */;
+val* var227 /* : String */;
+val* var228 /* : null */;
+short int var229 /* : Bool */;
+val* var230 /* : RuntimeVariable */;
+static val* varonce231;
+val* var232 /* : String */;
+char* var233 /* : NativeString */;
+long var234 /* : Int */;
+val* var235 /* : String */;
+val* var236 /* : String */;
+val* var237 /* : nullable RuntimeVariable */;
+val* var238 /* : nullable String */;
+static val* varonce239;
+val* var240 /* : String */;
+char* var241 /* : NativeString */;
+long var242 /* : Int */;
+val* var243 /* : String */;
+val* var244 /* : Array[Object] */;
+long var245 /* : Int */;
+val* var246 /* : NativeArray[Object] */;
+val* var247 /* : String */;
+val* var248 /* : null */;
+short int var249 /* : Bool */;
+static val* varonce250;
+val* var251 /* : String */;
+char* var252 /* : NativeString */;
+long var253 /* : Int */;
+val* var254 /* : String */;
+val* var255 /* : nullable RuntimeVariable */;
+static val* varonce256;
+val* var257 /* : String */;
+char* var258 /* : NativeString */;
+long var259 /* : Int */;
+val* var260 /* : String */;
+val* var261 /* : Array[Object] */;
+long var262 /* : Int */;
+val* var263 /* : NativeArray[Object] */;
+val* var264 /* : String */;
+static val* varonce265;
+val* var266 /* : String */;
+char* var267 /* : NativeString */;
+long var268 /* : Int */;
+val* var269 /* : String */;
+/* Covariant cast for argument 0 (compiler) <p0:GlobalCompiler> isa COMPILER */
+/* <p0:GlobalCompiler> isa COMPILER */
+type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/global_compiler.nit", 913);
+exit(1);
+}
+var_compiler = p0;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+var_recv = var1;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var_mmethoddef = var2;
+var3 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(var_compiler) /* mainmodule on <var_compiler:GlobalCompiler>*/;
+var4 = NULL;
+var5 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
+var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__bound_mtype]))(var5) /* bound_mtype on <var5:MClassDef>*/;
+var7 = ((short int (*)(val*, val*, val*, val*))(var_recv->class->vft[COLOR_model__MType__is_subtype]))(var_recv, var3, var4, var6) /* is_subtype on <var_recv:MClassType>*/;
+var8 = !var7;
+if (var8){
+if (varonce) {
+var9 = varonce;
+} else {
+var10 = "problem: why do we compile ";
+var11 = 27;
+var12 = string__NativeString__to_s_with_length(var10, var11);
+var9 = var12;
+varonce = var9;
+}
+if (varonce13) {
+var14 = varonce13;
+} else {
+var15 = " for ";
+var16 = 5;
+var17 = string__NativeString__to_s_with_length(var15, var16);
+var14 = var17;
+varonce13 = var14;
+}
+if (varonce18) {
+var19 = varonce18;
+} else {
+var20 = "?";
+var21 = 1;
+var22 = string__NativeString__to_s_with_length(var20, var21);
+var19 = var22;
+varonce18 = var19;
+}
+var23 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var23 = array_instance Array[Object] */
+var24 = 5;
+var25 = NEW_array__NativeArray(var24, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var25)->values[0] = (val*) var9;
+((struct instance_array__NativeArray*)var25)->values[1] = (val*) self;
+((struct instance_array__NativeArray*)var25)->values[2] = (val*) var14;
+((struct instance_array__NativeArray*)var25)->values[3] = (val*) var_recv;
+((struct instance_array__NativeArray*)var25)->values[4] = (val*) var19;
+((void (*)(val*, val*, long))(var23->class->vft[COLOR_array__Array__with_native]))(var23, var25, var24) /* with_native on <var23:Array[Object]>*/;
+CHECK_NEW_array__Array(var23);
+}
+var26 = ((val* (*)(val*))(var23->class->vft[COLOR_string__Object__to_s]))(var23) /* to_s on <var23:Array[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var26) /* print on <self:CustomizedRuntimeFunction>*/;
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/global_compiler.nit", 920);
+exit(1);
+} else {
+}
+var27 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:GlobalCompiler>*/;
+var_v = var27;
+var28 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
+if (varonce29) {
+var30 = varonce29;
+} else {
+var31 = "self";
+var32 = 4;
+var33 = string__NativeString__to_s_with_length(var31, var32);
+var30 = var33;
+varonce29 = var30;
+}
+((void (*)(val*, val*, val*, val*))(var28->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var28, var30, var_recv, var_recv) /* init on <var28:RuntimeVariable>*/;
+CHECK_NEW_abstract_compiler__RuntimeVariable(var28);
+var_selfvar = var28;
+var34 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_global_compiler__GlobalCompiler__runtime_type_analysis]))(var_compiler) /* runtime_type_analysis on <var_compiler:GlobalCompiler>*/;
+var35 = ((val* (*)(val*))(var34->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var34) /* live_types on <var34:RapidTypeAnalysis>*/;
+var36 = ((short int (*)(val*, val*))(var35->class->vft[COLOR_abstract_collection__Collection__has]))(var35, var_recv) /* has on <var35:HashSet[MClassType]>*/;
+if (var36){
+var37 = 1;
+((void (*)(val*, short int))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d]))(var_selfvar, var37) /* is_exact= on <var_selfvar:RuntimeVariable>*/;
+} else {
+}
+var38 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
+((void (*)(val*))(var38->class->vft[COLOR_array__Array__init]))(var38) /* init on <var38:Array[RuntimeVariable]>*/;
+CHECK_NEW_array__Array(var38);
+var_arguments = var38;
+var39 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
+((void (*)(val*, val*, val*, val*, val*))(var39->class->vft[COLOR_abstract_compiler__Frame__init]))(var39, var_v, var_mmethoddef, var_recv, var_arguments) /* init on <var39:Frame>*/;
+CHECK_NEW_abstract_compiler__Frame(var39);
+var_frame = var39;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:GlobalCompilerVisitor>*/;
+var40 = NEW_string__Buffer(&type_string__Buffer);
+((void (*)(val*))(var40->class->vft[COLOR_string__Buffer__init]))(var40) /* init on <var40:Buffer>*/;
+CHECK_NEW_string__Buffer(var40);
+var_sig = var40;
+var41 = NEW_string__Buffer(&type_string__Buffer);
+((void (*)(val*))(var41->class->vft[COLOR_string__Buffer__init]))(var41) /* init on <var41:Buffer>*/;
+CHECK_NEW_string__Buffer(var41);
+var_comment = var41;
+var42 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
+if (var42 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/global_compiler.nit", 934);
+exit(1);
+} else {
+var43 = ((val* (*)(val*))(var42->class->vft[COLOR_model__MSignature__return_mtype]))(var42) /* return_mtype on <var42:nullable MSignature>*/;
+}
+var_ret = var43;
+var44 = NULL;
+if (var_ret == NULL) {
+var45 = 0; /* is null */
+} else {
+var45 = 1; /* arg is null and recv is not */
+}
+if (var45){
+var46 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__resolve_for]))(var_v, var_ret, var_selfvar) /* resolve_for on <var_v:GlobalCompilerVisitor>*/;
+var_ret = var46;
+var47 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
+if (varonce48) {
+var49 = varonce48;
+} else {
+var50 = " ";
+var51 = 1;
+var52 = string__NativeString__to_s_with_length(var50, var51);
+var49 = var52;
+varonce48 = var49;
+}
+var53 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var53 = array_instance Array[Object] */
+var54 = 2;
+var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var55)->values[0] = (val*) var47;
+((struct instance_array__NativeArray*)var55)->values[1] = (val*) var49;
+((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
+CHECK_NEW_array__Array(var53);
+}
+var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
+((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var56) /* append on <var_sig:Buffer>*/;
+} else {
+var57 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
+var58 = ((short int (*)(val*))(var57->class->vft[COLOR_model__MMethod__is_new]))(var57) /* is_new on <var57:MProperty(MMethod)>*/;
+if (var58){
+var_ret = var_recv;
+var59 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MClassType)>*/;
+if (varonce60) {
+var61 = varonce60;
+} else {
+var62 = " ";
+var63 = 1;
+var64 = string__NativeString__to_s_with_length(var62, var63);
+var61 = var64;
+varonce60 = var61;
+}
+var65 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var65 = array_instance Array[Object] */
+var66 = 2;
+var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var67)->values[0] = (val*) var59;
+((struct instance_array__NativeArray*)var67)->values[1] = (val*) var61;
+((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
+CHECK_NEW_array__Array(var65);
+}
+var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
+((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var68) /* append on <var_sig:Buffer>*/;
+} else {
+if (varonce69) {
+var70 = varonce69;
+} else {
+var71 = "void ";
+var72 = 5;
+var73 = string__NativeString__to_s_with_length(var71, var72);
+var70 = var73;
+varonce69 = var70;
+}
+((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var70) /* append on <var_sig:Buffer>*/;
+}
+}
+var74 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:CustomizedRuntimeFunction>*/;
+((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var74) /* append on <var_sig:Buffer>*/;
+if (varonce75) {
+var76 = varonce75;
+} else {
+var77 = "(";
+var78 = 1;
+var79 = string__NativeString__to_s_with_length(var77, var78);
+var76 = var79;
+varonce75 = var76;
+}
+var80 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_recv) /* ctype on <var_recv:MClassType>*/;
+if (varonce81) {
+var82 = varonce81;
+} else {
+var83 = " ";
+var84 = 1;
+var85 = string__NativeString__to_s_with_length(var83, var84);
+var82 = var85;
+varonce81 = var82;
+}
+var86 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var86 = array_instance Array[Object] */
+var87 = 4;
+var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var88)->values[0] = (val*) var76;
+((struct instance_array__NativeArray*)var88)->values[1] = (val*) var80;
+((struct instance_array__NativeArray*)var88)->values[2] = (val*) var82;
+((struct instance_array__NativeArray*)var88)->values[3] = (val*) var_selfvar;
+((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
+CHECK_NEW_array__Array(var86);
+}
+var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
+((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var89) /* append on <var_sig:Buffer>*/;
+if (varonce90) {
+var91 = varonce90;
+} else {
+var92 = "(self: ";
+var93 = 7;
+var94 = string__NativeString__to_s_with_length(var92, var93);
+var91 = var94;
+varonce90 = var91;
+}
+var95 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var95 = array_instance Array[Object] */
+var96 = 2;
+var97 = NEW_array__NativeArray(var96, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var97)->values[0] = (val*) var91;
+((struct instance_array__NativeArray*)var97)->values[1] = (val*) var_recv;
+((void (*)(val*, val*, long))(var95->class->vft[COLOR_array__Array__with_native]))(var95, var97, var96) /* with_native on <var95:Array[Object]>*/;
+CHECK_NEW_array__Array(var95);
+}
+var98 = ((val* (*)(val*))(var95->class->vft[COLOR_string__Object__to_s]))(var95) /* to_s on <var95:Array[Object]>*/;
+((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var98) /* append on <var_comment:Buffer>*/;
+((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
+var99 = NEW_range__Range(&type_range__Rangekernel__Int);
+var100 = 0;
+var101 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
+if (var101 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/global_compiler.nit", 948);
+exit(1);
+} else {
+var102 = ((long (*)(val*))(var101->class->vft[COLOR_model__MSignature__arity]))(var101) /* arity on <var101:nullable MSignature>*/;
+}
+var103 = BOX_kernel__Int(var100); /* autobox from Int to Discrete */
+var104 = BOX_kernel__Int(var102); /* autobox from Int to Discrete */
+((void (*)(val*, val*, val*))(var99->class->vft[COLOR_range__Range__without_last]))(var99, var103, var104) /* without_last on <var99:Range[Int]>*/;
+CHECK_NEW_range__Range(var99);
+var105 = ((val* (*)(val*))(var99->class->vft[COLOR_abstract_collection__Collection__iterator]))(var99) /* iterator on <var99:Range[Int]>*/;
+for(;;) {
+var106 = ((short int (*)(val*))(var105->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var105) /* is_ok on <var105:Iterator[nullable Object]>*/;
+if(!var106) break;
+var107 = ((val* (*)(val*))(var105->class->vft[COLOR_abstract_collection__Iterator__item]))(var105) /* item on <var105:Iterator[nullable Object]>*/;
+var108 = ((struct instance_kernel__Int*)var107)->value; /* autounbox from nullable Object to Int */;
+var_i = var108;
+var109 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
+if (var109 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/global_compiler.nit", 949);
+exit(1);
+} else {
+var110 = ((val* (*)(val*))(var109->class->vft[COLOR_model__MSignature__mparameters]))(var109) /* mparameters on <var109:nullable MSignature>*/;
+}
+var111 = ((val* (*)(val*, long))(var110->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var110, var_i) /* [] on <var110:Array[MParameter]>*/;
+var112 = ((val* (*)(val*))(var111->class->vft[COLOR_model__MParameter__mtype]))(var111) /* mtype on <var111:nullable Object(MParameter)>*/;
+var_mtype = var112;
+var113 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
+if (var113 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/global_compiler.nit", 950);
+exit(1);
+} else {
+var114 = ((long (*)(val*))(var113->class->vft[COLOR_model__MSignature__vararg_rank]))(var113) /* vararg_rank on <var113:nullable MSignature>*/;
+}
+{ /* Inline kernel#Int#== (var_i,var114) */
+var117 = var_i == var114;
+var115 = var117;
+goto RET_LABEL116;
+RET_LABEL116:(void)0;
+}
+if (var115){
+if (varonce118) {
+var119 = varonce118;
+} else {
+var120 = "Array";
+var121 = 5;
+var122 = string__NativeString__to_s_with_length(var120, var121);
+var119 = var122;
+varonce118 = var119;
+}
+var123 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var119) /* get_class on <var_v:GlobalCompilerVisitor>*/;
+var124 = NEW_array__Array(&type_array__Arraymodel__MType);
+{ /* var124 = array_instance Array[MType] */
+var125 = 1;
+var126 = NEW_array__NativeArray(var125, &type_array__NativeArraymodel__MType);
+((struct instance_array__NativeArray*)var126)->values[0] = (val*) var_mtype;
+((void (*)(val*, val*, long))(var124->class->vft[COLOR_array__Array__with_native]))(var124, var126, var125) /* with_native on <var124:Array[MType]>*/;
+CHECK_NEW_array__Array(var124);
+}
+var127 = ((val* (*)(val*, val*))(var123->class->vft[COLOR_model__MClass__get_mtype]))(var123, var124) /* get_mtype on <var123:MClass>*/;
+var_mtype = var127;
+} else {
+}
+var128 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__resolve_for]))(var_v, var_mtype, var_selfvar) /* resolve_for on <var_v:GlobalCompilerVisitor>*/;
+var_mtype = var128;
+if (varonce129) {
+var130 = varonce129;
+} else {
+var131 = ", ";
+var132 = 2;
+var133 = string__NativeString__to_s_with_length(var131, var132);
+var130 = var133;
+varonce129 = var130;
+}
+var134 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var134 = array_instance Array[Object] */
+var135 = 2;
+var136 = NEW_array__NativeArray(var135, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var136)->values[0] = (val*) var130;
+((struct instance_array__NativeArray*)var136)->values[1] = (val*) var_mtype;
+((void (*)(val*, val*, long))(var134->class->vft[COLOR_array__Array__with_native]))(var134, var136, var135) /* with_native on <var134:Array[Object]>*/;
+CHECK_NEW_array__Array(var134);
+}
+var137 = ((val* (*)(val*))(var134->class->vft[COLOR_string__Object__to_s]))(var134) /* to_s on <var134:Array[Object]>*/;
+((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var137) /* append on <var_comment:Buffer>*/;
+if (varonce138) {
+var139 = varonce138;
+} else {
+var140 = ", ";
+var141 = 2;
+var142 = string__NativeString__to_s_with_length(var140, var141);
+var139 = var142;
+varonce138 = var139;
+}
+var143 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
+if (varonce144) {
+var145 = varonce144;
+} else {
+var146 = " p";
+var147 = 2;
+var148 = string__NativeString__to_s_with_length(var146, var147);
+var145 = var148;
+varonce144 = var145;
+}
+var149 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var149 = array_instance Array[Object] */
+var150 = 4;
+var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var151)->values[0] = (val*) var139;
+((struct instance_array__NativeArray*)var151)->values[1] = (val*) var143;
+((struct instance_array__NativeArray*)var151)->values[2] = (val*) var145;
+var152 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var151)->values[3] = (val*) var152;
+((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on <var149:Array[Object]>*/;
+CHECK_NEW_array__Array(var149);
+}
+var153 = ((val* (*)(val*))(var149->class->vft[COLOR_string__Object__to_s]))(var149) /* to_s on <var149:Array[Object]>*/;
+((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var153) /* append on <var_sig:Buffer>*/;
+var154 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
+var155 = NEW_array__Array(&type_array__Arraykernel__Object);
+var156 = 3;
+((void (*)(val*, long))(var155->class->vft[COLOR_array__Array__with_capacity]))(var155, var156) /* with_capacity on <var155:Array[Object]>*/;
+CHECK_NEW_array__Array(var155);
+var_ = var155;
+if (varonce157) {
+var158 = varonce157;
+} else {
+var159 = "p";
+var160 = 1;
+var161 = string__NativeString__to_s_with_length(var159, var160);
+var158 = var161;
+varonce157 = var158;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var158) /* add on <var_:Array[Object]>*/;
+var162 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var162) /* add on <var_:Array[Object]>*/;
+if (varonce163) {
+var164 = varonce163;
+} else {
+var165 = "";
+var166 = 0;
+var167 = string__NativeString__to_s_with_length(var165, var166);
+var164 = var167;
+varonce163 = var164;
+}
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var164) /* add on <var_:Array[Object]>*/;
+var168 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
+((void (*)(val*, val*, val*, val*))(var154->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var154, var168, var_mtype, var_mtype) /* init on <var154:RuntimeVariable>*/;
+CHECK_NEW_abstract_compiler__RuntimeVariable(var154);
+var_argvar = var154;
+((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var105->class->vft[COLOR_abstract_collection__Iterator__next]))(var105) /* next on <var105:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+if (varonce169) {
+var170 = varonce169;
+} else {
+var171 = ")";
+var172 = 1;
+var173 = string__NativeString__to_s_with_length(var171, var172);
+var170 = var173;
+varonce169 = var170;
+}
+((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var170) /* append on <var_sig:Buffer>*/;
+if (varonce174) {
+var175 = varonce174;
+} else {
+var176 = ")";
+var177 = 1;
+var178 = string__NativeString__to_s_with_length(var176, var177);
+var175 = var178;
+varonce174 = var175;
+}
+((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var175) /* append on <var_comment:Buffer>*/;
+var179 = NULL;
+if (var_ret == NULL) {
+var180 = 0; /* is null */
+} else {
+var180 = 1; /* arg is null and recv is not */
+}
+if (var180){
+if (varonce181) {
+var182 = varonce181;
+} else {
+var183 = ": ";
+var184 = 2;
+var185 = string__NativeString__to_s_with_length(var183, var184);
+var182 = var185;
+varonce181 = var182;
+}
+var186 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var186 = array_instance Array[Object] */
+var187 = 2;
+var188 = NEW_array__NativeArray(var187, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var188)->values[0] = (val*) var182;
+((struct instance_array__NativeArray*)var188)->values[1] = (val*) var_ret;
+((void (*)(val*, val*, long))(var186->class->vft[COLOR_array__Array__with_native]))(var186, var188, var187) /* with_native on <var186:Array[Object]>*/;
+CHECK_NEW_array__Array(var186);
+}
+var189 = ((val* (*)(val*))(var186->class->vft[COLOR_string__Object__to_s]))(var186) /* to_s on <var186:Array[Object]>*/;
+((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var189) /* append on <var_comment:Buffer>*/;
+} else {
+}
+var190 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(var_compiler) /* header on <var_compiler:GlobalCompiler>*/;
+if (varonce191) {
+var192 = varonce191;
+} else {
+var193 = ";";
+var194 = 1;
+var195 = string__NativeString__to_s_with_length(var193, var194);
+var192 = var195;
+varonce191 = var192;
+}
+var196 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var196 = array_instance Array[Object] */
+var197 = 2;
+var198 = NEW_array__NativeArray(var197, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var198)->values[0] = (val*) var_sig;
+((struct instance_array__NativeArray*)var198)->values[1] = (val*) var192;
+((void (*)(val*, val*, long))(var196->class->vft[COLOR_array__Array__with_native]))(var196, var198, var197) /* with_native on <var196:Array[Object]>*/;
+CHECK_NEW_array__Array(var196);
+}
+var199 = ((val* (*)(val*))(var196->class->vft[COLOR_string__Object__to_s]))(var196) /* to_s on <var196:Array[Object]>*/;
+((void (*)(val*, val*))(var190->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var190, var199) /* add_decl on <var190:CodeWriter>*/;
+if (varonce200) {
+var201 = varonce200;
+} else {
+var202 = "/* method ";
+var203 = 10;
+var204 = string__NativeString__to_s_with_length(var202, var203);
+var201 = var204;
+varonce200 = var201;
+}
+if (varonce205) {
+var206 = varonce205;
+} else {
+var207 = " for ";
+var208 = 5;
+var209 = string__NativeString__to_s_with_length(var207, var208);
+var206 = var209;
+varonce205 = var206;
+}
+if (varonce210) {
+var211 = varonce210;
+} else {
+var212 = " */";
+var213 = 3;
+var214 = string__NativeString__to_s_with_length(var212, var213);
+var211 = var214;
+varonce210 = var211;
+}
+var215 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var215 = array_instance Array[Object] */
+var216 = 5;
+var217 = NEW_array__NativeArray(var216, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var217)->values[0] = (val*) var201;
+((struct instance_array__NativeArray*)var217)->values[1] = (val*) self;
+((struct instance_array__NativeArray*)var217)->values[2] = (val*) var206;
+((struct instance_array__NativeArray*)var217)->values[3] = (val*) var_comment;
+((struct instance_array__NativeArray*)var217)->values[4] = (val*) var211;
+((void (*)(val*, val*, long))(var215->class->vft[COLOR_array__Array__with_native]))(var215, var217, var216) /* with_native on <var215:Array[Object]>*/;
+CHECK_NEW_array__Array(var215);
+}
+var218 = ((val* (*)(val*))(var215->class->vft[COLOR_string__Object__to_s]))(var215) /* to_s on <var215:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var218) /* add_decl on <var_v:GlobalCompilerVisitor>*/;
+if (varonce219) {
+var220 = varonce219;
+} else {
+var221 = " {";
+var222 = 2;
+var223 = string__NativeString__to_s_with_length(var221, var222);
+var220 = var223;
+varonce219 = var220;
+}
+var224 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var224 = array_instance Array[Object] */
+var225 = 2;
+var226 = NEW_array__NativeArray(var225, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var226)->values[0] = (val*) var_sig;
+((struct instance_array__NativeArray*)var226)->values[1] = (val*) var220;
+((void (*)(val*, val*, long))(var224->class->vft[COLOR_array__Array__with_native]))(var224, var226, var225) /* with_native on <var224:Array[Object]>*/;
+CHECK_NEW_array__Array(var224);
+}
+var227 = ((val* (*)(val*))(var224->class->vft[COLOR_string__Object__to_s]))(var224) /* to_s on <var224:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var227) /* add_decl on <var_v:GlobalCompilerVisitor>*/;
+var228 = NULL;
+if (var_ret == NULL) {
+var229 = 0; /* is null */
+} else {
+var229 = 1; /* arg is null and recv is not */
+}
+if (var229){
+var230 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:GlobalCompilerVisitor>*/;
+((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var230) /* returnvar= on <var_frame:Frame>*/;
+} else {
+}
+if (varonce231) {
+var232 = varonce231;
+} else {
+var233 = "RET_LABEL";
+var234 = 9;
+var235 = string__NativeString__to_s_with_length(var233, var234);
+var232 = var235;
+varonce231 = var232;
+}
+var236 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var232) /* get_name on <var_v:GlobalCompilerVisitor>*/;
+((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var236) /* returnlabel= on <var_frame:Frame>*/;
+var237 = ((val* (*)(val*, val*, val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MMethodDef__compile_inside_to_c]))(var_mmethoddef, var_v, var_arguments) /* compile_inside_to_c on <var_mmethoddef:MMethodDef>*/;
+var237;
+var238 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
+if (var238 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/global_compiler.nit", 976);
+exit(1);
+}
+if (varonce239) {
+var240 = varonce239;
+} else {
+var241 = ":;";
+var242 = 2;
+var243 = string__NativeString__to_s_with_length(var241, var242);
+var240 = var243;
+varonce239 = var240;
+}
+var244 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var244 = array_instance Array[Object] */
+var245 = 2;
+var246 = NEW_array__NativeArray(var245, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var246)->values[0] = (val*) var238;
+((struct instance_array__NativeArray*)var246)->values[1] = (val*) var240;
+((void (*)(val*, val*, long))(var244->class->vft[COLOR_array__Array__with_native]))(var244, var246, var245) /* with_native on <var244:Array[Object]>*/;
+CHECK_NEW_array__Array(var244);
+}
+var247 = ((val* (*)(val*))(var244->class->vft[COLOR_string__Object__to_s]))(var244) /* to_s on <var244:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var247) /* add on <var_v:GlobalCompilerVisitor>*/;
+var248 = NULL;
+if (var_ret == NULL) {
+var249 = 0; /* is null */
+} else {
+var249 = 1; /* arg is null and recv is not */
+}
+if (var249){
+if (varonce250) {
+var251 = varonce250;
+} else {
+var252 = "return ";
+var253 = 7;
+var254 = string__NativeString__to_s_with_length(var252, var253);
+var251 = var254;
+varonce250 = var251;
+}
+var255 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
+if (var255 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/global_compiler.nit", 978);
+exit(1);
+}
+if (varonce256) {
+var257 = varonce256;
+} else {
+var258 = ";";
+var259 = 1;
+var260 = string__NativeString__to_s_with_length(var258, var259);
+var257 = var260;
+varonce256 = var257;
+}
+var261 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var261 = array_instance Array[Object] */
+var262 = 3;
+var263 = NEW_array__NativeArray(var262, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var263)->values[0] = (val*) var251;
+((struct instance_array__NativeArray*)var263)->values[1] = (val*) var255;
+((struct instance_array__NativeArray*)var263)->values[2] = (val*) var257;
+((void (*)(val*, val*, long))(var261->class->vft[COLOR_array__Array__with_native]))(var261, var263, var262) /* with_native on <var261:Array[Object]>*/;
+CHECK_NEW_array__Array(var261);
+}
+var264 = ((val* (*)(val*))(var261->class->vft[COLOR_string__Object__to_s]))(var261) /* to_s on <var261:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var264) /* add on <var_v:GlobalCompilerVisitor>*/;
+} else {
+}
+if (varonce265) {
+var266 = varonce265;
+} else {
+var267 = "}";
+var268 = 1;
+var269 = string__NativeString__to_s_with_length(var267, var268);
+var266 = var269;
+varonce265 = var266;
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var266) /* add on <var_v:GlobalCompilerVisitor>*/;
+RET_LABEL:;
+}
+/* method global_compiler#CustomizedRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
+void VIRTUAL_global_compiler__CustomizedRuntimeFunction__compile_to_c(val* self, val* p0) {
+global_compiler__CustomizedRuntimeFunction__compile_to_c(self, p0);
+RET_LABEL:;
+}
+/* method global_compiler#CustomizedRuntimeFunction#call for (self: CustomizedRuntimeFunction, GlobalCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
+val* global_compiler__CustomizedRuntimeFunction__call(val* self, val* p0, val* p1) {
+val* var /* : nullable RuntimeVariable */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_v /* var v: GlobalCompilerVisitor */;
+val* var_arguments /* var arguments: Array[RuntimeVariable] */;
+val* var2 /* : MMethodDef */;
+val* var3 /* : nullable MSignature */;
+val* var4 /* : nullable MType */;
+val* var_ret /* var ret: nullable MType */;
+val* var5 /* : MMethodDef */;
+val* var6 /* : MProperty */;
+short int var7 /* : Bool */;
+val* var8 /* : MClassType */;
+val* var9 /* : null */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable Object */;
+val* var12 /* : MType */;
+val* var13 /* : MMethodDef */;
+short int var14 /* : Bool */;
+val* var15 /* : Frame */;
+val* var16 /* : MMethodDef */;
+val* var17 /* : MClassType */;
+val* var_frame /* var frame: Frame */;
+static val* varonce;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : String */;
+val* var22 /* : String */;
+val* var23 /* : null */;
+short int var24 /* : Bool */;
+val* var25 /* : RuntimeVariable */;
+val* var26 /* : nullable Frame */;
+val* var_old_frame /* var old_frame: nullable Frame */;
+static val* varonce27;
+val* var28 /* : String */;
+char* var29 /* : NativeString */;
+long var30 /* : Int */;
+val* var31 /* : String */;
+static val* varonce32;
+val* var33 /* : String */;
+char* var34 /* : NativeString */;
+long var35 /* : Int */;
+val* var36 /* : String */;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+long var40 /* : Int */;
+val* var41 /* : String */;
+val* var42 /* : String */;
+static val* varonce43;
+val* var44 /* : String */;
+char* var45 /* : NativeString */;
+long var46 /* : Int */;
+val* var47 /* : String */;
+val* var48 /* : Array[Object] */;
+long var49 /* : Int */;
+val* var50 /* : NativeArray[Object] */;
+val* var51 /* : String */;
+val* var52 /* : MMethodDef */;
+val* var53 /* : nullable RuntimeVariable */;
+val* var54 /* : nullable String */;
+static val* varonce55;
+val* var56 /* : String */;
+char* var57 /* : NativeString */;
+long var58 /* : Int */;
+val* var59 /* : String */;
+val* var60 /* : Array[Object] */;
+long var61 /* : Int */;
+val* var62 /* : NativeArray[Object] */;
+val* var63 /* : String */;
+static val* varonce64;
+val* var65 /* : String */;
+char* var66 /* : NativeString */;
+long var67 /* : Int */;
+val* var68 /* : String */;
+val* var69 /* : nullable RuntimeVariable */;
+val* var70 /* : MMethodDef */;
+val* var71 /* : AbstractCompiler */;
+val* var72 /* : null */;
+short int var73 /* : Bool */;
+val* var74 /* : String */;
+static val* varonce75;
+val* var76 /* : String */;
+char* var77 /* : NativeString */;
+long var78 /* : Int */;
+val* var79 /* : String */;
+static val* varonce80;
+val* var81 /* : String */;
+char* var82 /* : NativeString */;
+long var83 /* : Int */;
+val* var84 /* : String */;
+val* var85 /* : String */;
+static val* varonce86;
+val* var87 /* : String */;
+char* var88 /* : NativeString */;
+long var89 /* : Int */;
+val* var90 /* : String */;
+val* var91 /* : Array[Object] */;
+long var92 /* : Int */;
+val* var93 /* : NativeArray[Object] */;
+val* var94 /* : String */;
+val* var95 /* : null */;
+val* var96 /* : RuntimeVariable */;
+val* var_res /* var res: RuntimeVariable */;
+static val* varonce97;
+val* var98 /* : String */;
+char* var99 /* : NativeString */;
+long var100 /* : Int */;
+val* var101 /* : String */;
+val* var102 /* : String */;
+static val* varonce103;
+val* var104 /* : String */;
+char* var105 /* : NativeString */;
+long var106 /* : Int */;
+val* var107 /* : String */;
+static val* varonce108;
+val* var109 /* : String */;
+char* var110 /* : NativeString */;
+long var111 /* : Int */;
+val* var112 /* : String */;
+val* var113 /* : String */;
+static val* varonce114;
+val* var115 /* : String */;
+char* var116 /* : NativeString */;
+long var117 /* : Int */;
+val* var118 /* : String */;
+val* var119 /* : Array[Object] */;
+long var120 /* : Int */;
+val* var121 /* : NativeArray[Object] */;
+val* var122 /* : String */;
+/* Covariant cast for argument 0 (v) <p0:GlobalCompilerVisitor> isa VISITOR */
+/* <p0:GlobalCompilerVisitor> isa VISITOR */
+type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTVISITOR];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/global_compiler.nit", 983);
+exit(1);
+}
+var_v = p0;
+var_arguments = p1;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MMethodDef__msignature]))(var2) /* msignature on <var2:MMethodDef>*/;
+if (var3 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/global_compiler.nit", 985);
+exit(1);
+} else {
+var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MSignature__return_mtype]))(var3) /* return_mtype on <var3:nullable MSignature>*/;
+}
+var_ret = var4;
+var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MPropDef__mproperty]))(var5) /* mproperty on <var5:MMethodDef>*/;
+var7 = ((short int (*)(val*))(var6->class->vft[COLOR_model__MMethod__is_new]))(var6) /* is_new on <var6:MProperty(MMethod)>*/;
+if (var7){
+var8 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+var_ret = var8;
+} else {
+}
+var9 = NULL;
+if (var_ret == NULL) {
+var10 = 0; /* is null */
+} else {
+var10 = 1; /* arg is null and recv is not */
+}
+if (var10){
+var11 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
+var12 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__resolve_for]))(var_v, var_ret, var11) /* resolve_for on <var_v:GlobalCompilerVisitor>*/;
+var_ret = var12;
+} else {
+}
+var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_abstract_compiler__MMethodDef__can_inline]))(var13, var_v) /* can_inline on <var13:MMethodDef>*/;
+if (var14){
+var15 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
+var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var17 = ((val* (*)(val*))(self->class->vft[COLOR_global_compiler__CustomizedRuntimeFunction__recv]))(self) /* recv on <self:CustomizedRuntimeFunction>*/;
+((void (*)(val*, val*, val*, val*, val*))(var15->class->vft[COLOR_abstract_compiler__Frame__init]))(var15, var_v, var16, var17, var_arguments) /* init on <var15:Frame>*/;
+CHECK_NEW_abstract_compiler__Frame(var15);
+var_frame = var15;
+if (varonce) {
+var18 = varonce;
+} else {
+var19 = "RET_LABEL";
+var20 = 9;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce = var18;
+}
+var22 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var18) /* get_name on <var_v:GlobalCompilerVisitor>*/;
+((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var22) /* returnlabel= on <var_frame:Frame>*/;
+var23 = NULL;
+if (var_ret == NULL) {
+var24 = 0; /* is null */
+} else {
+var24 = 1; /* arg is null and recv is not */
+}
+if (var24){
+var25 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:GlobalCompilerVisitor>*/;
+((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var25) /* returnvar= on <var_frame:Frame>*/;
+} else {
+}
+var26 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(var_v) /* frame on <var_v:GlobalCompilerVisitor>*/;
+var_old_frame = var26;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:GlobalCompilerVisitor>*/;
+if (varonce27) {
+var28 = varonce27;
+} else {
+var29 = "{ /* Inline ";
+var30 = 12;
+var31 = string__NativeString__to_s_with_length(var29, var30);
+var28 = var31;
+varonce27 = var28;
+}
+if (varonce32) {
+var33 = varonce32;
+} else {
+var34 = " (";
+var35 = 2;
+var36 = string__NativeString__to_s_with_length(var34, var35);
+var33 = var36;
+varonce32 = var33;
+}
+if (varonce37) {
+var38 = varonce37;
+} else {
+var39 = ",";
+var40 = 1;
+var41 = string__NativeString__to_s_with_length(var39, var40);
+var38 = var41;
+varonce37 = var38;
+}
+var42 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var38) /* join on <var_arguments:Array[RuntimeVariable]>*/;
+if (varonce43) {
+var44 = varonce43;
+} else {
+var45 = ") */";
+var46 = 4;
+var47 = string__NativeString__to_s_with_length(var45, var46);
+var44 = var47;
+varonce43 = var44;
+}
+var48 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var48 = array_instance Array[Object] */
+var49 = 5;
+var50 = NEW_array__NativeArray(var49, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var50)->values[0] = (val*) var28;
+((struct instance_array__NativeArray*)var50)->values[1] = (val*) self;
+((struct instance_array__NativeArray*)var50)->values[2] = (val*) var33;
+((struct instance_array__NativeArray*)var50)->values[3] = (val*) var42;
+((struct instance_array__NativeArray*)var50)->values[4] = (val*) var44;
+((void (*)(val*, val*, long))(var48->class->vft[COLOR_array__Array__with_native]))(var48, var50, var49) /* with_native on <var48:Array[Object]>*/;
+CHECK_NEW_array__Array(var48);
+}
+var51 = ((val* (*)(val*))(var48->class->vft[COLOR_string__Object__to_s]))(var48) /* to_s on <var48:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var51) /* add on <var_v:GlobalCompilerVisitor>*/;
+var52 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+var53 = ((val* (*)(val*, val*, val*))(var52->class->vft[COLOR_abstract_compiler__MMethodDef__compile_inside_to_c]))(var52, var_v, var_arguments) /* compile_inside_to_c on <var52:MMethodDef>*/;
+var53;
+var54 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
+if (var54 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/global_compiler.nit", 1002);
+exit(1);
+}
+if (varonce55) {
+var56 = varonce55;
+} else {
+var57 = ":(void)0;";
+var58 = 9;
+var59 = string__NativeString__to_s_with_length(var57, var58);
+var56 = var59;
+varonce55 = var56;
+}
+var60 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var60 = array_instance Array[Object] */
+var61 = 2;
+var62 = NEW_array__NativeArray(var61, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var62)->values[0] = (val*) var54;
+((struct instance_array__NativeArray*)var62)->values[1] = (val*) var56;
+((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on <var60:Array[Object]>*/;
+CHECK_NEW_array__Array(var60);
+}
+var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on <var60:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var63) /* add on <var_v:GlobalCompilerVisitor>*/;
+if (varonce64) {
+var65 = varonce64;
+} else {
+var66 = "}";
+var67 = 1;
+var68 = string__NativeString__to_s_with_length(var66, var67);
+var65 = var68;
+varonce64 = var65;
+}
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var65) /* add on <var_v:GlobalCompilerVisitor>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_old_frame) /* frame= on <var_v:GlobalCompilerVisitor>*/;
+var69 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
+var = var69;
+goto RET_LABEL;
+} else {
+}
+var70 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:CustomizedRuntimeFunction>*/;
+((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__adapt_signature]))(var_v, var70, var_arguments) /* adapt_signature on <var_v:GlobalCompilerVisitor>*/;
+var71 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:GlobalCompilerVisitor>*/;
+((void (*)(val*, val*))(var71->class->vft[COLOR_global_compiler__GlobalCompiler__todo]))(var71, self) /* todo on <var71:AbstractCompiler(GlobalCompiler)>*/;
+var72 = NULL;
+if (var_ret == NULL) {
+var73 = 1; /* is null */
+} else {
+var73 = 0; /* arg is null but recv is not */
+}
+if (var73){
+var74 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:CustomizedRuntimeFunction>*/;
+if (varonce75) {
+var76 = varonce75;
+} else {
+var77 = "(";
+var78 = 1;
+var79 = string__NativeString__to_s_with_length(var77, var78);
+var76 = var79;
+varonce75 = var76;
+}
+if (varonce80) {
+var81 = varonce80;
+} else {
+var82 = ",";
+var83 = 1;
+var84 = string__NativeString__to_s_with_length(var82, var83);
+var81 = var84;
+varonce80 = var81;
+}
+var85 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var81) /* join on <var_arguments:Array[RuntimeVariable]>*/;
+if (varonce86) {
+var87 = varonce86;
+} else {
+var88 = ");";
+var89 = 2;
+var90 = string__NativeString__to_s_with_length(var88, var89);
+var87 = var90;
+varonce86 = var87;
+}
+var91 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var91 = array_instance Array[Object] */
+var92 = 4;
+var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var93)->values[0] = (val*) var74;
+((struct instance_array__NativeArray*)var93)->values[1] = (val*) var76;
+((struct instance_array__NativeArray*)var93)->values[2] = (val*) var85;
+((struct instance_array__NativeArray*)var93)->values[3] = (val*) var87;
+((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
+CHECK_NEW_array__Array(var91);
+}
+var94 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var94) /* add on <var_v:GlobalCompilerVisitor>*/;
+var95 = NULL;
+var = var95;
+goto RET_LABEL;
+} else {
+var96 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:GlobalCompilerVisitor>*/;
+var_res = var96;
+if (varonce97) {
+var98 = varonce97;
+} else {
+var99 = " = ";
+var100 = 3;
+var101 = string__NativeString__to_s_with_length(var99, var100);
+var98 = var101;
+varonce97 = var98;
+}
+var102 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:CustomizedRuntimeFunction>*/;
+if (varonce103) {
+var104 = varonce103;
+} else {
+var105 = "(";
+var106 = 1;
+var107 = string__NativeString__to_s_with_length(var105, var106);
+var104 = var107;
+varonce103 = var104;
+}
+if (varonce108) {
+var109 = varonce108;
+} else {
+var110 = ",";
+var111 = 1;
+var112 = string__NativeString__to_s_with_length(var110, var111);
+var109 = var112;
+varonce108 = var109;
+}
+var113 = ((val* (*)(val*, val*))(var_arguments->class->vft[COLOR_string__Collection__join]))(var_arguments, var109) /* join on <var_arguments:Array[RuntimeVariable]>*/;
+if (varonce114) {
+var115 = varonce114;
+} else {
+var116 = ");";
+var117 = 2;
+var118 = string__NativeString__to_s_with_length(var116, var117);
+var115 = var118;
+varonce114 = var115;
+}
+var119 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var119 = array_instance Array[Object] */
+var120 = 6;
+var121 = NEW_array__NativeArray(var120, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var121)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var121)->values[1] = (val*) var98;
+((struct instance_array__NativeArray*)var121)->values[2] = (val*) var102;
+((struct instance_array__NativeArray*)var121)->values[3] = (val*) var104;
+((struct instance_array__NativeArray*)var121)->values[4] = (val*) var113;
+((struct instance_array__NativeArray*)var121)->values[5] = (val*) var115;
+((void (*)(val*, val*, long))(var119->class->vft[COLOR_array__Array__with_native]))(var119, var121, var120) /* with_native on <var119:Array[Object]>*/;
+CHECK_NEW_array__Array(var119);
+}
+var122 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on <var119:Array[Object]>*/;
+((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var122) /* add on <var_v:GlobalCompilerVisitor>*/;
+var = var_res;
+goto RET_LABEL;
+}
+RET_LABEL:;
+return var;
+}
+/* method global_compiler#CustomizedRuntimeFunction#call for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
+val* VIRTUAL_global_compiler__CustomizedRuntimeFunction__call(val* self, val* p0, val* p1) {
+val* var /* : nullable RuntimeVariable */;
+val* var1 /* : nullable RuntimeVariable */;
+var1 = global_compiler__CustomizedRuntimeFunction__call(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}