Added README and Makefile
[nit.git] / c_src / separate_compiler.sep.3.c
index 8e8ca2a..06f8668 100644 (file)
@@ -170,7 +170,6 @@ var_nclass = var6;
 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
 var8 = 5;
 ((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on <var7:Array[Object]>*/;
-CHECK_NEW_array__Array(var7);
 var_ = var7;
 if (varonce9) {
 var10 = varonce9;
@@ -182,7 +181,7 @@ var10 = var13;
 varonce9 = var10;
 }
 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
-var14 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
+var14 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_nclass) /* c_instance_name on <var_nclass:MClass>*/;
 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
 if (varonce15) {
 var16 = varonce15;
@@ -249,13 +248,12 @@ var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var40;
 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42;
 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
-CHECK_NEW_array__Array(var46);
 }
 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
 if (var_ret_type == NULL) {
 fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1567);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1623);
+show_backtrace(1);
 }
 var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var49, var_ret_type) /* new_expr on <self:SeparateCompilerVisitor>*/;
 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var50) /* ret on <self:SeparateCompilerVisitor>*/;
@@ -314,7 +312,6 @@ var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70;
 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72;
 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
-CHECK_NEW_array__Array(var76);
 }
 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on <self:SeparateCompilerVisitor>*/;
@@ -334,7 +331,6 @@ if (var85){
 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
 var87 = 5;
 ((void (*)(val*, long))(var86->class->vft[COLOR_array__Array__with_capacity]))(var86, var87) /* with_capacity on <var86:Array[Object]>*/;
-CHECK_NEW_array__Array(var86);
 var_88 = var86;
 if (varonce89) {
 var90 = varonce89;
@@ -346,7 +342,7 @@ var90 = var93;
 varonce89 = var90;
 }
 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var90) /* add on <var_88:Array[Object]>*/;
-var94 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
+var94 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_nclass) /* c_instance_name on <var_nclass:MClass>*/;
 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var94) /* add on <var_88:Array[Object]>*/;
 if (varonce95) {
 var96 = varonce95;
@@ -435,7 +431,6 @@ var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var138)->values[7] = (val*) var130;
 ((struct instance_array__NativeArray*)var138)->values[8] = (val*) var132;
 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
-CHECK_NEW_array__Array(var136);
 }
 var139 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var139) /* add on <self:SeparateCompilerVisitor>*/;
@@ -501,8 +496,8 @@ var8 = var7->type->type_table[cltype] == idtype;
 if (!var8) {
 var_class_name = var7 == NULL ? "null" : var7->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MParameterType", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1582);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1638);
+show_backtrace(1);
 }
 var_ft = var7;
 var9 = 1;
@@ -545,17 +540,17 @@ var_mtype = p1;
 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
 if (!var) {
 fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1588);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1644);
+show_backtrace(1);
 }
 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
 var_compiler = var1;
 var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
 if (var3 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1590);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1646);
+show_backtrace(1);
 } else {
 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var3) /* mpropdef on <var3:nullable Frame>*/;
 }
@@ -566,25 +561,24 @@ if (var7){
 var8 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
 if (var9 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1591);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1647);
+show_backtrace(1);
 } else {
 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var9) /* mpropdef on <var9:nullable Frame>*/;
 }
 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MPropDef__mclassdef]))(var10) /* mclassdef on <var10:MPropDef>*/;
 var12 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
 ((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashSet__init]))(var12) /* init on <var12:HashSet[MType]>*/;
-CHECK_NEW_hash_collection__HashSet(var12);
 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var11, var12) /* []= on <var8:Map[MClassDef, Set[MType]]>*/;
 } else {
 }
 var13 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
 if (var14 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1593);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1649);
+show_backtrace(1);
 } else {
 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var14) /* mpropdef on <var14:nullable Frame>*/;
 }
@@ -617,7 +611,6 @@ var3 = 0; /* arg is null but recv is not */
 if (var3){
 var4 = NEW_separate_compiler__SeparateRuntimeFunction(&type_separate_compiler__SeparateRuntimeFunction);
 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:SeparateRuntimeFunction>*/;
-CHECK_NEW_separate_compiler__SeparateRuntimeFunction(var4);
 var_res = var4;
 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache_61d]))(self, var_res) /* separate_runtime_function_cache= on <self:MMethodDef>*/;
 } else {
@@ -683,7 +676,6 @@ var3 = 0; /* arg is null but recv is not */
 if (var3){
 var4 = NEW_separate_compiler__VirtualRuntimeFunction(&type_separate_compiler__VirtualRuntimeFunction);
 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:VirtualRuntimeFunction>*/;
-CHECK_NEW_separate_compiler__VirtualRuntimeFunction(var4);
 var_res = var4;
 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d]))(self, var_res) /* virtual_runtime_function_cache= on <self:MMethodDef>*/;
 } else {
@@ -752,7 +744,6 @@ val* var14 /* : String */;
 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
 var2 = 3;
 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
 var_ = var1;
 if (varonce) {
 var3 = varonce;
@@ -1090,6 +1081,60 @@ val* var252 /* : String */;
 char* var253 /* : NativeString */;
 long var254 /* : Int */;
 val* var255 /* : String */;
+val* var256 /* : String */;
+static val* varonce257;
+val* var258 /* : String */;
+char* var259 /* : NativeString */;
+long var260 /* : Int */;
+val* var261 /* : String */;
+long var262 /* : Int */;
+short int var263 /* : Bool */;
+short int var264 /* : Bool */;
+val* var265 /* : HashMap[String, String] */;
+val* var266 /* : String */;
+val* var267 /* : MClassDef */;
+val* var268 /* : MModule */;
+val* var269 /* : String */;
+static val* varonce270;
+val* var271 /* : String */;
+char* var272 /* : NativeString */;
+long var273 /* : Int */;
+val* var274 /* : String */;
+val* var275 /* : MClassDef */;
+val* var276 /* : MClass */;
+val* var277 /* : String */;
+static val* varonce278;
+val* var279 /* : String */;
+char* var280 /* : NativeString */;
+long var281 /* : Int */;
+val* var282 /* : String */;
+val* var283 /* : MProperty */;
+val* var284 /* : String */;
+static val* varonce285;
+val* var286 /* : String */;
+char* var287 /* : NativeString */;
+long var288 /* : Int */;
+val* var289 /* : String */;
+val* var290 /* : Location */;
+val* var291 /* : nullable SourceFile */;
+val* var292 /* : String */;
+static val* varonce293;
+val* var294 /* : String */;
+char* var295 /* : NativeString */;
+long var296 /* : Int */;
+val* var297 /* : String */;
+val* var298 /* : Location */;
+long var299 /* : Int */;
+static val* varonce300;
+val* var301 /* : String */;
+char* var302 /* : NativeString */;
+long var303 /* : Int */;
+val* var304 /* : String */;
+val* var305 /* : Array[Object] */;
+long var306 /* : Int */;
+val* var307 /* : NativeArray[Object] */;
+val* var308 /* : Object */;
+val* var309 /* : String */;
 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
 /* <p0:AbstractCompiler> isa COMPILER */
 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
@@ -1103,8 +1148,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1629);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1685);
+show_backtrace(1);
 }
 var_compiler = p0;
 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
@@ -1126,15 +1171,12 @@ var7 = var10;
 varonce = var7;
 }
 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var_recv, var_recv) /* init on <var6:RuntimeVariable>*/;
-CHECK_NEW_abstract_compiler__RuntimeVariable(var6);
 var_selfvar = var6;
 var11 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
 ((void (*)(val*))(var11->class->vft[COLOR_array__Array__init]))(var11) /* init on <var11:Array[RuntimeVariable]>*/;
-CHECK_NEW_array__Array(var11);
 var_arguments = var11;
 var12 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
 ((void (*)(val*, val*, val*, val*, val*))(var12->class->vft[COLOR_abstract_compiler__Frame__init]))(var12, var_v, var_mmethoddef, var_recv, var_arguments) /* init on <var12:Frame>*/;
-CHECK_NEW_abstract_compiler__Frame(var12);
 var_frame = var12;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
 var13 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
@@ -1146,20 +1188,18 @@ var18 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mcla
 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MClassDef__mmodule]))(var18) /* mmodule on <var18:MClassDef>*/;
 var20 = 1;
 if (var13 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1640);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1696);
+show_backtrace(1);
 } else {
 var21 = ((val* (*)(val*, val*, val*, val*, short int))(var13->class->vft[COLOR_model__MType__resolve_for]))(var13, var15, var17, var19, var20) /* resolve_for on <var13:nullable MSignature>*/;
 }
 var_msignature = var21;
 var22 = NEW_string__Buffer(&type_string__Buffer);
 ((void (*)(val*))(var22->class->vft[COLOR_string__Buffer__init]))(var22) /* init on <var22:Buffer>*/;
-CHECK_NEW_string__Buffer(var22);
 var_sig = var22;
 var23 = NEW_string__Buffer(&type_string__Buffer);
 ((void (*)(val*))(var23->class->vft[COLOR_string__Buffer__init]))(var23) /* init on <var23:Buffer>*/;
-CHECK_NEW_string__Buffer(var23);
 var_comment = var23;
 var24 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
 var_ret = var24;
@@ -1187,7 +1227,6 @@ var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var27;
 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var29;
 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
-CHECK_NEW_array__Array(var33);
 }
 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var36) /* append on <var_sig:Buffer>*/;
@@ -1213,7 +1252,6 @@ var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var39;
 ((struct instance_array__NativeArray*)var47)->values[1] = (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*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var48) /* append on <var_sig:Buffer>*/;
@@ -1261,7 +1299,6 @@ var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var69)->values[2] = (val*) var63;
 ((struct instance_array__NativeArray*)var69)->values[3] = (val*) var_selfvar;
 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
-CHECK_NEW_array__Array(var67);
 }
 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var70) /* append on <var_sig:Buffer>*/;
@@ -1293,7 +1330,6 @@ var84 = NEW_array__NativeArray(var83, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var84)->values[2] = (val*) var77;
 ((struct instance_array__NativeArray*)var84)->values[3] = (val*) var81;
 ((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on <var82:Array[Object]>*/;
-CHECK_NEW_array__Array(var82);
 }
 var85 = ((val* (*)(val*))(var82->class->vft[COLOR_string__Object__to_s]))(var82) /* to_s on <var82:Array[Object]>*/;
 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var85) /* append on <var_comment:Buffer>*/;
@@ -1304,7 +1340,6 @@ var88 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__ar
 var89 = BOX_kernel__Int(var87); /* autobox from Int to Discrete */
 var90 = BOX_kernel__Int(var88); /* autobox from Int to Discrete */
 ((void (*)(val*, val*, val*))(var86->class->vft[COLOR_range__Range__without_last]))(var86, var89, var90) /* without_last on <var86:Range[Int]>*/;
-CHECK_NEW_range__Range(var86);
 var91 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_collection__Collection__iterator]))(var86) /* iterator on <var86:Range[Int]>*/;
 for(;;) {
 var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on <var91:Iterator[nullable Object]>*/;
@@ -1340,7 +1375,6 @@ var109 = 1;
 var110 = NEW_array__NativeArray(var109, &type_array__NativeArraymodel__MType);
 ((struct instance_array__NativeArray*)var110)->values[0] = (val*) var_mtype;
 ((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[MType]>*/;
-CHECK_NEW_array__Array(var108);
 }
 var111 = ((val* (*)(val*, val*))(var107->class->vft[COLOR_model__MClass__get_mtype]))(var107, var108) /* get_mtype on <var107:MClass>*/;
 var_mtype = var111;
@@ -1362,7 +1396,6 @@ var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var119)->values[0] = (val*) var113;
 ((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_mtype;
 ((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
-CHECK_NEW_array__Array(var117);
 }
 var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var120) /* append on <var_comment:Buffer>*/;
@@ -1395,7 +1428,6 @@ var134 = NEW_array__NativeArray(var133, &type_array__NativeArraykernel__Object);
 var135 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
 ((struct instance_array__NativeArray*)var134)->values[3] = (val*) var135;
 ((void (*)(val*, val*, long))(var132->class->vft[COLOR_array__Array__with_native]))(var132, var134, var133) /* with_native on <var132:Array[Object]>*/;
-CHECK_NEW_array__Array(var132);
 }
 var136 = ((val* (*)(val*))(var132->class->vft[COLOR_string__Object__to_s]))(var132) /* to_s on <var132:Array[Object]>*/;
 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var136) /* append on <var_sig:Buffer>*/;
@@ -1403,7 +1435,6 @@ var137 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__Runtime
 var138 = NEW_array__Array(&type_array__Arraykernel__Object);
 var139 = 3;
 ((void (*)(val*, long))(var138->class->vft[COLOR_array__Array__with_capacity]))(var138, var139) /* with_capacity on <var138:Array[Object]>*/;
-CHECK_NEW_array__Array(var138);
 var_ = var138;
 if (varonce140) {
 var141 = varonce140;
@@ -1429,7 +1460,6 @@ varonce146 = var147;
 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var147) /* add on <var_:Array[Object]>*/;
 var151 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
 ((void (*)(val*, val*, val*, val*))(var137->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var137, var151, var_mtype, var_mtype) /* init on <var137:RuntimeVariable>*/;
-CHECK_NEW_abstract_compiler__RuntimeVariable(var137);
 var_argvar = var137;
 ((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;
@@ -1479,7 +1509,6 @@ var171 = NEW_array__NativeArray(var170, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var171)->values[0] = (val*) var165;
 ((struct instance_array__NativeArray*)var171)->values[1] = (val*) var_ret;
 ((void (*)(val*, val*, long))(var169->class->vft[COLOR_array__Array__with_native]))(var169, var171, var170) /* with_native on <var169:Array[Object]>*/;
-CHECK_NEW_array__Array(var169);
 }
 var172 = ((val* (*)(val*))(var169->class->vft[COLOR_string__Object__to_s]))(var169) /* to_s on <var169:Array[Object]>*/;
 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var172) /* append on <var_comment:Buffer>*/;
@@ -1502,7 +1531,6 @@ var181 = NEW_array__NativeArray(var180, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var181)->values[0] = (val*) var_sig;
 ((struct instance_array__NativeArray*)var181)->values[1] = (val*) var175;
 ((void (*)(val*, val*, long))(var179->class->vft[COLOR_array__Array__with_native]))(var179, var181, var180) /* with_native on <var179:Array[Object]>*/;
-CHECK_NEW_array__Array(var179);
 }
 var182 = ((val* (*)(val*))(var179->class->vft[COLOR_string__Object__to_s]))(var179) /* to_s on <var179:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var173, var182) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
@@ -1543,7 +1571,6 @@ var200 = NEW_array__NativeArray(var199, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var200)->values[3] = (val*) var_comment;
 ((struct instance_array__NativeArray*)var200)->values[4] = (val*) var194;
 ((void (*)(val*, val*, long))(var198->class->vft[COLOR_array__Array__with_native]))(var198, var200, var199) /* with_native on <var198:Array[Object]>*/;
-CHECK_NEW_array__Array(var198);
 }
 var201 = ((val* (*)(val*))(var198->class->vft[COLOR_string__Object__to_s]))(var198) /* to_s on <var198:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var201) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
@@ -1563,7 +1590,6 @@ var209 = NEW_array__NativeArray(var208, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var209)->values[0] = (val*) var_sig;
 ((struct instance_array__NativeArray*)var209)->values[1] = (val*) var203;
 ((void (*)(val*, val*, long))(var207->class->vft[COLOR_array__Array__with_native]))(var207, var209, var208) /* with_native on <var207:Array[Object]>*/;
-CHECK_NEW_array__Array(var207);
 }
 var210 = ((val* (*)(val*))(var207->class->vft[COLOR_string__Object__to_s]))(var207) /* to_s on <var207:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var210) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
@@ -1600,8 +1626,8 @@ var223;
 var224 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
 if (var224 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1686);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1742);
+show_backtrace(1);
 }
 if (varonce225) {
 var226 = varonce225;
@@ -1619,7 +1645,6 @@ var232 = NEW_array__NativeArray(var231, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var232)->values[0] = (val*) var224;
 ((struct instance_array__NativeArray*)var232)->values[1] = (val*) var226;
 ((void (*)(val*, val*, long))(var230->class->vft[COLOR_array__Array__with_native]))(var230, var232, var231) /* with_native on <var230:Array[Object]>*/;
-CHECK_NEW_array__Array(var230);
 }
 var233 = ((val* (*)(val*))(var230->class->vft[COLOR_string__Object__to_s]))(var230) /* to_s on <var230:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var233) /* add on <var_v:AbstractCompilerVisitor>*/;
@@ -1642,8 +1667,8 @@ varonce236 = var237;
 var241 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
 if (var241 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1688);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1744);
+show_backtrace(1);
 }
 if (varonce242) {
 var243 = varonce242;
@@ -1662,7 +1687,6 @@ var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var241;
 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243;
 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
-CHECK_NEW_array__Array(var247);
 }
 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var250) /* add on <var_v:AbstractCompilerVisitor>*/;
@@ -1678,6 +1702,107 @@ var252 = var255;
 varonce251 = var252;
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var252) /* add on <var_v:AbstractCompilerVisitor>*/;
+var256 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
+if (varonce257) {
+var258 = varonce257;
+} else {
+var259 = "VIRTUAL";
+var260 = 7;
+var261 = string__NativeString__to_s_with_length(var259, var260);
+var258 = var261;
+varonce257 = var258;
+}
+var262 = 0;
+var263 = ((short int (*)(val*, val*, long))(var256->class->vft[COLOR_string__AbstractString__has_substring]))(var256, var258, var262) /* has_substring on <var256:String>*/;
+var264 = !var263;
+if (var264){
+var265 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on <var_compiler:AbstractCompiler>*/;
+var266 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
+var267 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
+var268 = ((val* (*)(val*))(var267->class->vft[COLOR_model__MClassDef__mmodule]))(var267) /* mmodule on <var267:MClassDef>*/;
+var269 = ((val* (*)(val*))(var268->class->vft[COLOR_mmodule__MModule__name]))(var268) /* name on <var268:MModule>*/;
+if (varonce270) {
+var271 = varonce270;
+} else {
+var272 = "::";
+var273 = 2;
+var274 = string__NativeString__to_s_with_length(var272, var273);
+var271 = var274;
+varonce270 = var271;
+}
+var275 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
+var276 = ((val* (*)(val*))(var275->class->vft[COLOR_model__MClassDef__mclass]))(var275) /* mclass on <var275:MClassDef>*/;
+var277 = ((val* (*)(val*))(var276->class->vft[COLOR_model__MClass__name]))(var276) /* name on <var276:MClass>*/;
+if (varonce278) {
+var279 = varonce278;
+} else {
+var280 = "::";
+var281 = 2;
+var282 = string__NativeString__to_s_with_length(var280, var281);
+var279 = var282;
+varonce278 = var279;
+}
+var283 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
+var284 = ((val* (*)(val*))(var283->class->vft[COLOR_model__MProperty__name]))(var283) /* name on <var283:MProperty(MMethod)>*/;
+if (varonce285) {
+var286 = varonce285;
+} else {
+var287 = " (";
+var288 = 2;
+var289 = string__NativeString__to_s_with_length(var287, var288);
+var286 = var289;
+varonce285 = var286;
+}
+var290 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
+var291 = ((val* (*)(val*))(var290->class->vft[COLOR_location__Location__file]))(var290) /* file on <var290:Location>*/;
+if (var291 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1747);
+show_backtrace(1);
+} else {
+var292 = ((val* (*)(val*))(var291->class->vft[COLOR_location__SourceFile__filename]))(var291) /* filename on <var291:nullable SourceFile>*/;
+}
+if (varonce293) {
+var294 = varonce293;
+} else {
+var295 = ":";
+var296 = 1;
+var297 = string__NativeString__to_s_with_length(var295, var296);
+var294 = var297;
+varonce293 = var294;
+}
+var298 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
+var299 = ((long (*)(val*))(var298->class->vft[COLOR_location__Location__line_start]))(var298) /* line_start on <var298:Location>*/;
+if (varonce300) {
+var301 = varonce300;
+} else {
+var302 = ")";
+var303 = 1;
+var304 = string__NativeString__to_s_with_length(var302, var303);
+var301 = var304;
+varonce300 = var301;
+}
+var305 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var305 = array_instance Array[Object] */
+var306 = 10;
+var307 = NEW_array__NativeArray(var306, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var307)->values[0] = (val*) var269;
+((struct instance_array__NativeArray*)var307)->values[1] = (val*) var271;
+((struct instance_array__NativeArray*)var307)->values[2] = (val*) var277;
+((struct instance_array__NativeArray*)var307)->values[3] = (val*) var279;
+((struct instance_array__NativeArray*)var307)->values[4] = (val*) var284;
+((struct instance_array__NativeArray*)var307)->values[5] = (val*) var286;
+((struct instance_array__NativeArray*)var307)->values[6] = (val*) var292;
+((struct instance_array__NativeArray*)var307)->values[7] = (val*) var294;
+var308 = BOX_kernel__Int(var299); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var307)->values[8] = (val*) var308;
+((struct instance_array__NativeArray*)var307)->values[9] = (val*) var301;
+((void (*)(val*, val*, long))(var305->class->vft[COLOR_array__Array__with_native]))(var305, var307, var306) /* with_native on <var305:Array[Object]>*/;
+}
+var309 = ((val* (*)(val*))(var305->class->vft[COLOR_string__Object__to_s]))(var305) /* to_s on <var305:Array[Object]>*/;
+((void (*)(val*, val*, val*))(var265->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var265, var266, var309) /* []= on <var265:HashMap[String, String]>*/;
+} else {
+}
 RET_LABEL:;
 }
 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
@@ -1707,7 +1832,6 @@ val* var14 /* : String */;
 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
 var2 = 3;
 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
 var_ = var1;
 if (varonce) {
 var3 = varonce;
@@ -2053,6 +2177,60 @@ val* var258 /* : String */;
 char* var259 /* : NativeString */;
 long var260 /* : Int */;
 val* var261 /* : String */;
+val* var262 /* : String */;
+static val* varonce263;
+val* var264 /* : String */;
+char* var265 /* : NativeString */;
+long var266 /* : Int */;
+val* var267 /* : String */;
+long var268 /* : Int */;
+short int var269 /* : Bool */;
+short int var270 /* : Bool */;
+val* var271 /* : HashMap[String, String] */;
+val* var272 /* : String */;
+val* var273 /* : MClassDef */;
+val* var274 /* : MModule */;
+val* var275 /* : String */;
+static val* varonce276;
+val* var277 /* : String */;
+char* var278 /* : NativeString */;
+long var279 /* : Int */;
+val* var280 /* : String */;
+val* var281 /* : MClassDef */;
+val* var282 /* : MClass */;
+val* var283 /* : String */;
+static val* varonce284;
+val* var285 /* : String */;
+char* var286 /* : NativeString */;
+long var287 /* : Int */;
+val* var288 /* : String */;
+val* var289 /* : MProperty */;
+val* var290 /* : String */;
+static val* varonce291;
+val* var292 /* : String */;
+char* var293 /* : NativeString */;
+long var294 /* : Int */;
+val* var295 /* : String */;
+val* var296 /* : Location */;
+val* var297 /* : nullable SourceFile */;
+val* var298 /* : String */;
+static val* varonce299;
+val* var300 /* : String */;
+char* var301 /* : NativeString */;
+long var302 /* : Int */;
+val* var303 /* : String */;
+val* var304 /* : Location */;
+long var305 /* : Int */;
+static val* varonce306;
+val* var307 /* : String */;
+char* var308 /* : NativeString */;
+long var309 /* : Int */;
+val* var310 /* : String */;
+val* var311 /* : Array[Object] */;
+long var312 /* : Int */;
+val* var313 /* : NativeArray[Object] */;
+val* var314 /* : Object */;
+val* var315 /* : String */;
 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
 /* <p0:AbstractCompiler> isa COMPILER */
 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
@@ -2066,8 +2244,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (!var) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1703);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1760);
+show_backtrace(1);
 }
 var_compiler = p0;
 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
@@ -2090,24 +2268,19 @@ varonce = var7;
 }
 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(var_v) /* object_type on <var_v:AbstractCompilerVisitor>*/;
 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var11, var_recv) /* init on <var6:RuntimeVariable>*/;
-CHECK_NEW_abstract_compiler__RuntimeVariable(var6);
 var_selfvar = var6;
 var12 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
 ((void (*)(val*))(var12->class->vft[COLOR_array__Array__init]))(var12) /* init on <var12:Array[RuntimeVariable]>*/;
-CHECK_NEW_array__Array(var12);
 var_arguments = var12;
 var13 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
 ((void (*)(val*, val*, val*, val*, val*))(var13->class->vft[COLOR_abstract_compiler__Frame__init]))(var13, var_v, var_mmethoddef, var_recv, var_arguments) /* init on <var13:Frame>*/;
-CHECK_NEW_abstract_compiler__Frame(var13);
 var_frame = var13;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
 var14 = NEW_string__Buffer(&type_string__Buffer);
 ((void (*)(val*))(var14->class->vft[COLOR_string__Buffer__init]))(var14) /* init on <var14:Buffer>*/;
-CHECK_NEW_string__Buffer(var14);
 var_sig = var14;
 var15 = NEW_string__Buffer(&type_string__Buffer);
 ((void (*)(val*))(var15->class->vft[COLOR_string__Buffer__init]))(var15) /* init on <var15:Buffer>*/;
-CHECK_NEW_string__Buffer(var15);
 var_comment = var15;
 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mproperty]))(var16) /* mproperty on <var16:MMethodDef>*/;
@@ -2122,9 +2295,9 @@ var24 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef_
 var25 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
 var26 = 1;
 if (var22 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Reciever is null");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1719);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1776);
+show_backtrace(1);
 } else {
 var27 = ((val* (*)(val*, val*, val*, val*, short int))(var22->class->vft[COLOR_model__MType__resolve_for]))(var22, var23, var24, var25, var26) /* resolve_for on <var22:nullable MSignature>*/;
 }
@@ -2155,7 +2328,6 @@ var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var31;
 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var33;
 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
-CHECK_NEW_array__Array(var37);
 }
 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var40) /* append on <var_sig:Buffer>*/;
@@ -2181,7 +2353,6 @@ var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var43;
 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var45;
 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
-CHECK_NEW_array__Array(var49);
 }
 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var52) /* append on <var_sig:Buffer>*/;
@@ -2229,7 +2400,6 @@ var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var73)->values[2] = (val*) var67;
 ((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_selfvar;
 ((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
-CHECK_NEW_array__Array(var71);
 }
 var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var74) /* append on <var_sig:Buffer>*/;
@@ -2261,7 +2431,6 @@ var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var81;
 ((struct instance_array__NativeArray*)var88)->values[3] = (val*) var85;
 ((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_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var89) /* append on <var_comment:Buffer>*/;
@@ -2272,7 +2441,6 @@ var92 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__ar
 var93 = BOX_kernel__Int(var91); /* autobox from Int to Discrete */
 var94 = BOX_kernel__Int(var92); /* autobox from Int to Discrete */
 ((void (*)(val*, val*, val*))(var90->class->vft[COLOR_range__Range__without_last]))(var90, var93, var94) /* without_last on <var90:Range[Int]>*/;
-CHECK_NEW_range__Range(var90);
 var95 = ((val* (*)(val*))(var90->class->vft[COLOR_abstract_collection__Collection__iterator]))(var90) /* iterator on <var90:Range[Int]>*/;
 for(;;) {
 var96 = ((short int (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var95) /* is_ok on <var95:Iterator[nullable Object]>*/;
@@ -2308,7 +2476,6 @@ var113 = 1;
 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraymodel__MType);
 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_mtype;
 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[MType]>*/;
-CHECK_NEW_array__Array(var112);
 }
 var115 = ((val* (*)(val*, val*))(var111->class->vft[COLOR_model__MClass__get_mtype]))(var111, var112) /* get_mtype on <var111:MClass>*/;
 var_mtype = var115;
@@ -2330,7 +2497,6 @@ var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var117;
 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var_mtype;
 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
-CHECK_NEW_array__Array(var121);
 }
 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var124) /* append on <var_comment:Buffer>*/;
@@ -2363,7 +2529,6 @@ var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
 var139 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
 ((struct instance_array__NativeArray*)var138)->values[3] = (val*) var139;
 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
-CHECK_NEW_array__Array(var136);
 }
 var140 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var140) /* append on <var_sig:Buffer>*/;
@@ -2371,7 +2536,6 @@ var141 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__Runtime
 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
 var143 = 3;
 ((void (*)(val*, long))(var142->class->vft[COLOR_array__Array__with_capacity]))(var142, var143) /* with_capacity on <var142:Array[Object]>*/;
-CHECK_NEW_array__Array(var142);
 var_ = var142;
 if (varonce144) {
 var145 = varonce144;
@@ -2397,7 +2561,6 @@ varonce150 = var151;
 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var151) /* add on <var_:Array[Object]>*/;
 var155 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
 ((void (*)(val*, val*, val*, val*))(var141->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var141, var155, var_mtype, var_mtype) /* init on <var141:RuntimeVariable>*/;
-CHECK_NEW_abstract_compiler__RuntimeVariable(var141);
 var_argvar = var141;
 ((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;
@@ -2447,7 +2610,6 @@ var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var175)->values[0] = (val*) var169;
 ((struct instance_array__NativeArray*)var175)->values[1] = (val*) var_ret;
 ((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
-CHECK_NEW_array__Array(var173);
 }
 var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var176) /* append on <var_comment:Buffer>*/;
@@ -2470,7 +2632,6 @@ var185 = NEW_array__NativeArray(var184, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var185)->values[0] = (val*) var_sig;
 ((struct instance_array__NativeArray*)var185)->values[1] = (val*) var179;
 ((void (*)(val*, val*, long))(var183->class->vft[COLOR_array__Array__with_native]))(var183, var185, var184) /* with_native on <var183:Array[Object]>*/;
-CHECK_NEW_array__Array(var183);
 }
 var186 = ((val* (*)(val*))(var183->class->vft[COLOR_string__Object__to_s]))(var183) /* to_s on <var183:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var177, var186) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
@@ -2511,7 +2672,6 @@ var204 = NEW_array__NativeArray(var203, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var204)->values[3] = (val*) var_comment;
 ((struct instance_array__NativeArray*)var204)->values[4] = (val*) var198;
 ((void (*)(val*, val*, long))(var202->class->vft[COLOR_array__Array__with_native]))(var202, var204, var203) /* with_native on <var202:Array[Object]>*/;
-CHECK_NEW_array__Array(var202);
 }
 var205 = ((val* (*)(val*))(var202->class->vft[COLOR_string__Object__to_s]))(var202) /* to_s on <var202:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var205) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
@@ -2531,7 +2691,6 @@ var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var213)->values[0] = (val*) var_sig;
 ((struct instance_array__NativeArray*)var213)->values[1] = (val*) var207;
 ((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
-CHECK_NEW_array__Array(var211);
 }
 var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on <var211:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var214) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
@@ -2574,14 +2733,14 @@ var228 = 1; /* arg is null and recv is not */
 }
 if (!var228) {
 fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1759);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1816);
+show_backtrace(1);
 }
 var229 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
 if (var229 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1760);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1817);
+show_backtrace(1);
 }
 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var229, var_subret) /* assign on <var_v:AbstractCompilerVisitor>*/;
 } else {
@@ -2589,8 +2748,8 @@ exit(1);
 var230 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
 if (var230 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1763);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1820);
+show_backtrace(1);
 }
 if (varonce231) {
 var232 = varonce231;
@@ -2608,7 +2767,6 @@ var238 = NEW_array__NativeArray(var237, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var238)->values[0] = (val*) var230;
 ((struct instance_array__NativeArray*)var238)->values[1] = (val*) var232;
 ((void (*)(val*, val*, long))(var236->class->vft[COLOR_array__Array__with_native]))(var236, var238, var237) /* with_native on <var236:Array[Object]>*/;
-CHECK_NEW_array__Array(var236);
 }
 var239 = ((val* (*)(val*))(var236->class->vft[COLOR_string__Object__to_s]))(var236) /* to_s on <var236:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var239) /* add on <var_v:AbstractCompilerVisitor>*/;
@@ -2631,8 +2789,8 @@ varonce242 = var243;
 var247 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
 if (var247 == NULL) {
 fprintf(stderr, "Runtime error: %s", "Cast failed");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1765);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1822);
+show_backtrace(1);
 }
 if (varonce248) {
 var249 = varonce248;
@@ -2651,7 +2809,6 @@ var255 = NEW_array__NativeArray(var254, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var255)->values[1] = (val*) var247;
 ((struct instance_array__NativeArray*)var255)->values[2] = (val*) var249;
 ((void (*)(val*, val*, long))(var253->class->vft[COLOR_array__Array__with_native]))(var253, var255, var254) /* with_native on <var253:Array[Object]>*/;
-CHECK_NEW_array__Array(var253);
 }
 var256 = ((val* (*)(val*))(var253->class->vft[COLOR_string__Object__to_s]))(var253) /* to_s on <var253:Array[Object]>*/;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var256) /* add on <var_v:AbstractCompilerVisitor>*/;
@@ -2667,6 +2824,107 @@ var258 = var261;
 varonce257 = var258;
 }
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var258) /* add on <var_v:AbstractCompilerVisitor>*/;
+var262 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
+if (varonce263) {
+var264 = varonce263;
+} else {
+var265 = "VIRTUAL";
+var266 = 7;
+var267 = string__NativeString__to_s_with_length(var265, var266);
+var264 = var267;
+varonce263 = var264;
+}
+var268 = 0;
+var269 = ((short int (*)(val*, val*, long))(var262->class->vft[COLOR_string__AbstractString__has_substring]))(var262, var264, var268) /* has_substring on <var262:String>*/;
+var270 = !var269;
+if (var270){
+var271 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__names]))(var_compiler) /* names on <var_compiler:AbstractCompiler>*/;
+var272 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
+var273 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
+var274 = ((val* (*)(val*))(var273->class->vft[COLOR_model__MClassDef__mmodule]))(var273) /* mmodule on <var273:MClassDef>*/;
+var275 = ((val* (*)(val*))(var274->class->vft[COLOR_mmodule__MModule__name]))(var274) /* name on <var274:MModule>*/;
+if (varonce276) {
+var277 = varonce276;
+} else {
+var278 = "::";
+var279 = 2;
+var280 = string__NativeString__to_s_with_length(var278, var279);
+var277 = var280;
+varonce276 = var277;
+}
+var281 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
+var282 = ((val* (*)(val*))(var281->class->vft[COLOR_model__MClassDef__mclass]))(var281) /* mclass on <var281:MClassDef>*/;
+var283 = ((val* (*)(val*))(var282->class->vft[COLOR_model__MClass__name]))(var282) /* name on <var282:MClass>*/;
+if (varonce284) {
+var285 = varonce284;
+} else {
+var286 = "::";
+var287 = 2;
+var288 = string__NativeString__to_s_with_length(var286, var287);
+var285 = var288;
+varonce284 = var285;
+}
+var289 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
+var290 = ((val* (*)(val*))(var289->class->vft[COLOR_model__MProperty__name]))(var289) /* name on <var289:MProperty(MMethod)>*/;
+if (varonce291) {
+var292 = varonce291;
+} else {
+var293 = " (";
+var294 = 2;
+var295 = string__NativeString__to_s_with_length(var293, var294);
+var292 = var295;
+varonce291 = var292;
+}
+var296 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
+var297 = ((val* (*)(val*))(var296->class->vft[COLOR_location__Location__file]))(var296) /* file on <var296:Location>*/;
+if (var297 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1825);
+show_backtrace(1);
+} else {
+var298 = ((val* (*)(val*))(var297->class->vft[COLOR_location__SourceFile__filename]))(var297) /* filename on <var297:nullable SourceFile>*/;
+}
+if (varonce299) {
+var300 = varonce299;
+} else {
+var301 = "--";
+var302 = 2;
+var303 = string__NativeString__to_s_with_length(var301, var302);
+var300 = var303;
+varonce299 = var300;
+}
+var304 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__location]))(var_mmethoddef) /* location on <var_mmethoddef:MMethodDef>*/;
+var305 = ((long (*)(val*))(var304->class->vft[COLOR_location__Location__line_start]))(var304) /* line_start on <var304:Location>*/;
+if (varonce306) {
+var307 = varonce306;
+} else {
+var308 = ")";
+var309 = 1;
+var310 = string__NativeString__to_s_with_length(var308, var309);
+var307 = var310;
+varonce306 = var307;
+}
+var311 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var311 = array_instance Array[Object] */
+var312 = 10;
+var313 = NEW_array__NativeArray(var312, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var313)->values[0] = (val*) var275;
+((struct instance_array__NativeArray*)var313)->values[1] = (val*) var277;
+((struct instance_array__NativeArray*)var313)->values[2] = (val*) var283;
+((struct instance_array__NativeArray*)var313)->values[3] = (val*) var285;
+((struct instance_array__NativeArray*)var313)->values[4] = (val*) var290;
+((struct instance_array__NativeArray*)var313)->values[5] = (val*) var292;
+((struct instance_array__NativeArray*)var313)->values[6] = (val*) var298;
+((struct instance_array__NativeArray*)var313)->values[7] = (val*) var300;
+var314 = BOX_kernel__Int(var305); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var313)->values[8] = (val*) var314;
+((struct instance_array__NativeArray*)var313)->values[9] = (val*) var307;
+((void (*)(val*, val*, long))(var311->class->vft[COLOR_array__Array__with_native]))(var311, var313, var312) /* with_native on <var311:Array[Object]>*/;
+}
+var315 = ((val* (*)(val*))(var311->class->vft[COLOR_string__Object__to_s]))(var311) /* to_s on <var311:Array[Object]>*/;
+((void (*)(val*, val*, val*))(var271->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var271, var272, var315) /* []= on <var271:HashMap[String, String]>*/;
+} else {
+}
 RET_LABEL:;
 }
 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
@@ -2697,14 +2955,14 @@ var1 = p0->type->type_table[cltype] == idtype;
 if (!var1) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1770);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1828);
+show_backtrace(1);
 }
 var_v = p0;
 var_arguments = p1;
 fprintf(stderr, "Runtime error: %s", "Aborted");
-fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1771);
-exit(1);
+fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1829);
+show_backtrace(1);
 RET_LABEL:;
 return var;
 }
@@ -2738,7 +2996,6 @@ val* var13 /* : String */;
 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
 var2 = 3;
 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
 var_ = var1;
 if (varonce) {
 var3 = varonce;
@@ -2777,6 +3034,90 @@ var = var1;
 RET_LABEL:;
 return var;
 }
+/* method separate_compiler#MType#c_instance_name for (self: MType): String */
+val* separate_compiler__MType__c_instance_name(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on <self:MType>*/;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#MType#c_instance_name for (self: Object): String */
+val* VIRTUAL_separate_compiler__MType__c_instance_name(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = separate_compiler__MType__c_instance_name(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#MClassType#c_instance_name for (self: MClassType): String */
+val* separate_compiler__MClassType__c_instance_name(val* self) {
+val* var /* : String */;
+val* var1 /* : MClass */;
+val* var2 /* : String */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClassType__mclass]))(self) /* mclass on <self:MClassType>*/;
+var2 = ((val* (*)(val*))(var1->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var1) /* c_instance_name on <var1:MClass>*/;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#MClassType#c_instance_name for (self: Object): String */
+val* VIRTUAL_separate_compiler__MClassType__c_instance_name(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = separate_compiler__MClassType__c_instance_name(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#MClass#c_instance_name for (self: MClass): String */
+val* separate_compiler__MClass__c_instance_name(val* self) {
+val* var /* : String */;
+val* var1 /* : MClassKind */;
+val* var2 /* : MClassKind */;
+short int var3 /* : Bool */;
+static val* varonce;
+val* var4 /* : String */;
+char* var5 /* : NativeString */;
+long var6 /* : Int */;
+val* var7 /* : String */;
+val* var8 /* : String */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MClass__kind]))(self) /* kind on <self:MClass>*/;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:MClass>*/;
+var3 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var2) /* == on <var1:MClassKind>*/;
+if (var3){
+if (varonce) {
+var4 = varonce;
+} else {
+var5 = "kernel__Pointer";
+var6 = 15;
+var7 = string__NativeString__to_s_with_length(var5, var6);
+var4 = var7;
+varonce = var4;
+}
+var = var4;
+goto RET_LABEL;
+} else {
+var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MClass__c_name]))(self) /* c_name on <self:MClass>*/;
+var = var8;
+goto RET_LABEL;
+}
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#MClass#c_instance_name for (self: Object): String */
+val* VIRTUAL_separate_compiler__MClass__c_instance_name(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = separate_compiler__MClass__c_instance_name(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
 /* method separate_compiler#MProperty#const_color for (self: MProperty): String */
 val* separate_compiler__MProperty__const_color(val* self) {
 val* var /* : String */;
@@ -2798,7 +3139,6 @@ val* var13 /* : String */;
 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
 var2 = 3;
 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
 var_ = var1;
 if (varonce) {
 var3 = varonce;
@@ -2858,7 +3198,6 @@ val* var13 /* : String */;
 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
 var2 = 3;
 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
 var_ = var1;
 if (varonce) {
 var3 = varonce;