+{
+var40 = ((short int (*)(val*))(var_39->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_39) /* is_ok on <var_39:Iterator[MModule]>*/;
+}
+if (var40){
+{
+var41 = ((val* (*)(val*))(var_39->class->vft[COLOR_abstract_collection__Iterator__item]))(var_39) /* item on <var_39:Iterator[MModule]>*/;
+}
+var_m = var41;
+{
+{ /* Inline model#MModule#intro_mclasses (var_m) on <var_m:MModule> */
+var44 = var_m->attrs[COLOR_model__MModule___intro_mclasses].val; /* _intro_mclasses on <var_m:MModule> */
+if (unlikely(var44 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclasses");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 136);
+show_backtrace(1);
+}
+var42 = var44;
+RET_LABEL43:(void)0;
+}
+}
+var_45 = var42;
+{
+var46 = array__AbstractArrayRead__iterator(var_45);
+}
+var_47 = var46;
+for(;;) {
+{
+var48 = array__ArrayIterator__is_ok(var_47);
+}
+if (var48){
+{
+var49 = array__ArrayIterator__item(var_47);
+}
+var_mclass = var49;
+{
+separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(var_compiler, var_mclass); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c on <var_compiler:SeparateErasureCompiler>*/
+}
+{
+array__ArrayIterator__next(var_47); /* Direct call array#ArrayIterator#next on <var_47:ArrayIterator[MClass]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_47) on <var_47:ArrayIterator[MClass]> */
+RET_LABEL50:(void)0;
+}
+}
+{
+((void (*)(val*))(var_39->class->vft[COLOR_abstract_collection__Iterator__next]))(var_39) /* next on <var_39:Iterator[MModule]>*/;
+}
+} else {
+goto BREAK_label51;
+}
+}
+BREAK_label51: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_39) on <var_39:Iterator[MModule]> */
+RET_LABEL52:(void)0;
+}
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (var_compiler) on <var_compiler:SeparateErasureCompiler> */
+var55 = var_compiler->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <var_compiler:SeparateErasureCompiler> */
+if (unlikely(var55 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 106);
+show_backtrace(1);
+}
+var53 = var55;
+RET_LABEL54:(void)0;
+}
+}
+{
+separate_compiler__SeparateCompiler__compile_color_consts(var_compiler, var53); /* Direct call separate_compiler#SeparateCompiler#compile_color_consts on <var_compiler:SeparateErasureCompiler>*/
+}
+{
+{ /* Inline mmodule#MModule#name (var_mainmodule) on <var_mainmodule:MModule> */
+var58 = var_mainmodule->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var_mainmodule:MModule> */
+if (unlikely(var58 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78);
+show_backtrace(1);
+}
+var56 = var58;
+RET_LABEL57:(void)0;
+}
+}
+if (varonce59) {
+var60 = varonce59;
+} else {
+var61 = ".main";
+var62 = 5;
+var63 = string__NativeString__to_s_with_length(var61, var62);
+var60 = var63;
+varonce59 = var60;
+}
+var64 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var64 = array_instance Array[Object] */
+var65 = 2;
+var66 = NEW_array__NativeArray(var65, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var66)->values[0] = (val*) var56;
+((struct instance_array__NativeArray*)var66)->values[1] = (val*) var60;
+{
+((void (*)(val*, val*, long))(var64->class->vft[COLOR_array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
+}
+}
+{
+var67 = ((val* (*)(val*))(var64->class->vft[COLOR_string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
+}
+{
+var68 = abstract_compiler__AbstractCompiler__new_file(var_compiler, var67);
+}
+{
+abstract_compiler__AbstractCompiler__compile_nitni_global_ref_functions(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#compile_nitni_global_ref_functions on <var_compiler:SeparateErasureCompiler>*/
+}
+{
+abstract_compiler__AbstractCompiler__compile_main_function(var_compiler); /* Direct call abstract_compiler#AbstractCompiler#compile_main_function on <var_compiler:SeparateErasureCompiler>*/
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var_mainmodule) on <var_mainmodule:MModule> */
+var71 = var_mainmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mainmodule:MModule> */
+if (unlikely(var71 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
+show_backtrace(1);
+}
+var69 = var71;
+RET_LABEL70:(void)0;
+}
+}
+{
+var72 = poset__POSetElement__greaters(var69);
+}
+var_73 = var72;
+{
+var74 = ((val* (*)(val*))(var_73->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_73) /* iterator on <var_73:Collection[MModule]>*/;
+}
+var_75 = var74;
+for(;;) {
+{
+var76 = ((short int (*)(val*))(var_75->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_75) /* is_ok on <var_75:Iterator[MModule]>*/;
+}
+if (var76){
+{
+var77 = ((val* (*)(val*))(var_75->class->vft[COLOR_abstract_collection__Iterator__item]))(var_75) /* item on <var_75:Iterator[MModule]>*/;
+}
+var_m78 = var77;
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var81 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var81 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var79 = var81;
+RET_LABEL80:(void)0;
+}
+}
+if (varonce82) {
+var83 = varonce82;
+} else {
+var84 = "Generate C for module ";
+var85 = 22;
+var86 = string__NativeString__to_s_with_length(var84, var85);
+var83 = var86;
+varonce82 = var83;
+}
+var87 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var87 = array_instance Array[Object] */
+var88 = 2;
+var89 = NEW_array__NativeArray(var88, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var89)->values[0] = (val*) var83;
+((struct instance_array__NativeArray*)var89)->values[1] = (val*) var_m78;
+{
+((void (*)(val*, val*, long))(var87->class->vft[COLOR_array__Array__with_native]))(var87, var89, var88) /* with_native on <var87:Array[Object]>*/;
+}
+}
+{
+var90 = ((val* (*)(val*))(var87->class->vft[COLOR_string__Object__to_s]))(var87) /* to_s on <var87:Array[Object]>*/;
+}
+var91 = 2;
+{
+toolcontext__ToolContext__info(var79, var90, var91); /* Direct call toolcontext#ToolContext#info on <var79:ToolContext>*/
+}
+{
+{ /* Inline mmodule#MModule#name (var_m78) on <var_m78:MModule> */
+var94 = var_m78->attrs[COLOR_mmodule__MModule___name].val; /* _name on <var_m78:MModule> */
+if (unlikely(var94 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 78);
+show_backtrace(1);
+}
+var92 = var94;
+RET_LABEL93:(void)0;
+}
+}
+if (varonce95) {
+var96 = varonce95;
+} else {
+var97 = ".sep";
+var98 = 4;
+var99 = string__NativeString__to_s_with_length(var97, var98);
+var96 = var99;
+varonce95 = var96;
+}
+var100 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var100 = array_instance Array[Object] */
+var101 = 2;
+var102 = NEW_array__NativeArray(var101, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var102)->values[0] = (val*) var92;
+((struct instance_array__NativeArray*)var102)->values[1] = (val*) var96;
+{
+((void (*)(val*, val*, long))(var100->class->vft[COLOR_array__Array__with_native]))(var100, var102, var101) /* with_native on <var100:Array[Object]>*/;
+}
+}
+{
+var103 = ((val* (*)(val*))(var100->class->vft[COLOR_string__Object__to_s]))(var100) /* to_s on <var100:Array[Object]>*/;
+}
+{
+var104 = abstract_compiler__AbstractCompiler__new_file(var_compiler, var103);
+}
+{
+separate_compiler__SeparateCompiler__compile_module_to_c(var_compiler, var_m78); /* Direct call separate_compiler#SeparateCompiler#compile_module_to_c on <var_compiler:SeparateErasureCompiler>*/
+}
+{
+((void (*)(val*))(var_75->class->vft[COLOR_abstract_collection__Iterator__next]))(var_75) /* next on <var_75:Iterator[MModule]>*/;
+}
+} else {
+goto BREAK_label105;
+}
+}
+BREAK_label105: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_75) on <var_75:Iterator[MModule]> */
+RET_LABEL106:(void)0;
+}
+}
+{
+separate_compiler__SeparateCompiler__display_stats(var_compiler); /* Direct call separate_compiler#SeparateCompiler#display_stats on <var_compiler:SeparateErasureCompiler>*/
+}
+{
+{ /* Inline time#Object#get_time (self) on <self:ModelBuilder> */
+var109 = kernel_Any_Any_get_time_0(self);
+var107 = var109;
+goto RET_LABEL108;
+RET_LABEL108:(void)0;
+}
+}
+var_time1 = var107;
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var112 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var112 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var110 = var112;
+RET_LABEL111:(void)0;
+}
+}
+if (varonce113) {
+var114 = varonce113;
+} else {
+var115 = "*** END GENERATING C: ";
+var116 = 22;
+var117 = string__NativeString__to_s_with_length(var115, var116);
+var114 = var117;
+varonce113 = var114;
+}
+{
+{ /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
+/* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
+/* <var_time0:Int> isa OTHER */
+var120 = 1; /* easy <var_time0:Int> isa OTHER*/
+if (unlikely(!var120)) {
+var_class_name = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
+show_backtrace(1);
+}
+var121 = var_time1 - var_time0;
+var118 = var121;
+goto RET_LABEL119;
+RET_LABEL119:(void)0;
+}
+}
+if (varonce122) {
+var123 = varonce122;
+} else {
+var124 = " ***";
+var125 = 4;
+var126 = string__NativeString__to_s_with_length(var124, var125);
+var123 = var126;
+varonce122 = var123;
+}
+var127 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var127 = array_instance Array[Object] */
+var128 = 3;
+var129 = NEW_array__NativeArray(var128, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var129)->values[0] = (val*) var114;
+var130 = BOX_kernel__Int(var118); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var129)->values[1] = (val*) var130;
+((struct instance_array__NativeArray*)var129)->values[2] = (val*) var123;
+{
+((void (*)(val*, val*, long))(var127->class->vft[COLOR_array__Array__with_native]))(var127, var129, var128) /* with_native on <var127:Array[Object]>*/;
+}
+}
+{
+var131 = ((val* (*)(val*))(var127->class->vft[COLOR_string__Object__to_s]))(var127) /* to_s on <var127:Array[Object]>*/;
+}
+var132 = 2;
+{
+toolcontext__ToolContext__info(var110, var131, var132); /* Direct call toolcontext#ToolContext#info on <var110:ToolContext>*/
+}
+{
+abstract_compiler__ModelBuilder__write_and_make(self, var_compiler); /* Direct call abstract_compiler#ModelBuilder#write_and_make on <self:ModelBuilder>*/
+}
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler for (self: Object, MModule, nullable RapidTypeAnalysis) */
+void VIRTUAL_separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(val* self, val* p0, val* p1) {
+separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(self, p0, p1); /* Direct call separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler on <self:Object(ModelBuilder)>*/
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_ids for (self: SeparateErasureCompiler): Map[MClass, Int] */
+val* separate_erasure_compiler__SeparateErasureCompiler__class_ids(val* self) {
+val* var /* : Map[MClass, Int] */;
+val* var1 /* : Map[MClass, Int] */;
+var1 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids].val; /* _class_ids on <self:SeparateErasureCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 104);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_ids for (self: Object): Map[MClass, Int] */
+val* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_ids(val* self) {
+val* var /* : Map[MClass, Int] */;
+val* var1 /* : Map[MClass, Int] */;
+val* var3 /* : Map[MClass, Int] */;
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids (self) on <self:Object(SeparateErasureCompiler)> */
+var3 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids].val; /* _class_ids on <self:Object(SeparateErasureCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 104);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_ids= for (self: SeparateErasureCompiler, Map[MClass, Int]) */
+void separate_erasure_compiler__SeparateErasureCompiler__class_ids_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids].val = p0; /* _class_ids on <self:SeparateErasureCompiler> */
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_ids= for (self: Object, Map[MClass, Int]) */
+void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_ids_61d(val* self, val* p0) {
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids= (self,p0) on <self:Object(SeparateErasureCompiler)> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids].val = p0; /* _class_ids on <self:Object(SeparateErasureCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_colors for (self: SeparateErasureCompiler): Map[MClass, Int] */
+val* separate_erasure_compiler__SeparateErasureCompiler__class_colors(val* self) {
+val* var /* : Map[MClass, Int] */;
+val* var1 /* : Map[MClass, Int] */;
+var1 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors].val; /* _class_colors on <self:SeparateErasureCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 105);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_colors for (self: Object): Map[MClass, Int] */
+val* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_colors(val* self) {
+val* var /* : Map[MClass, Int] */;
+val* var1 /* : Map[MClass, Int] */;
+val* var3 /* : Map[MClass, Int] */;
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors (self) on <self:Object(SeparateErasureCompiler)> */
+var3 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors].val; /* _class_colors on <self:Object(SeparateErasureCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 105);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_colors= for (self: SeparateErasureCompiler, Map[MClass, Int]) */
+void separate_erasure_compiler__SeparateErasureCompiler__class_colors_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors].val = p0; /* _class_colors on <self:SeparateErasureCompiler> */
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#class_colors= for (self: Object, Map[MClass, Int]) */
+void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_colors_61d(val* self, val* p0) {
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors= (self,p0) on <self:Object(SeparateErasureCompiler)> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors].val = p0; /* _class_colors on <self:Object(SeparateErasureCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors for (self: SeparateErasureCompiler): Map[MVirtualTypeProp, Int] */
+val* separate_erasure_compiler__SeparateErasureCompiler__vt_colors(val* self) {
+val* var /* : Map[MVirtualTypeProp, Int] */;
+val* var1 /* : Map[MVirtualTypeProp, Int] */;
+var1 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:SeparateErasureCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 106);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors for (self: Object): Map[MVirtualTypeProp, Int] */
+val* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_colors(val* self) {
+val* var /* : Map[MVirtualTypeProp, Int] */;
+val* var1 /* : Map[MVirtualTypeProp, Int] */;
+val* var3 /* : Map[MVirtualTypeProp, Int] */;
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (self) on <self:Object(SeparateErasureCompiler)> */
+var3 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:Object(SeparateErasureCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 106);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors= for (self: SeparateErasureCompiler, Map[MVirtualTypeProp, Int]) */
+void separate_erasure_compiler__SeparateErasureCompiler__vt_colors_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val = p0; /* _vt_colors on <self:SeparateErasureCompiler> */
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors= for (self: Object, Map[MVirtualTypeProp, Int]) */
+void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_colors_61d(val* self, val* p0) {
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors= (self,p0) on <self:Object(SeparateErasureCompiler)> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val = p0; /* _vt_colors on <self:Object(SeparateErasureCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#init for (self: SeparateErasureCompiler, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
+void separate_erasure_compiler__SeparateErasureCompiler__init(val* self, val* p0, val* p1, val* p2) {
+val* var_mainmodule /* var mainmodule: MModule */;
+val* var_mmbuilder /* var mmbuilder: ModelBuilder */;
+val* var_runtime_type_analysis /* var runtime_type_analysis: nullable RapidTypeAnalysis */;
+val* var /* : POSet[MClass] */;
+val* var_poset /* var poset: POSet[MClass] */;
+val* var1 /* : HashSet[MClass] */;
+val* var_mclasses /* var mclasses: HashSet[MClass] */;
+val* var2 /* : POSetColorer[MClass] */;
+val* var_colorer /* var colorer: POSetColorer[MClass] */;
+val* var3 /* : Map[Object, Int] */;
+val* var5 /* : Map[Object, Int] */;
+val* var7 /* : Map[MClass, Array[nullable MClass]] */;
+val* var9 /* : HashMap[MClass, Set[MVirtualTypeProp]] */;
+val* var_vts /* var vts: HashMap[MClass, Set[MVirtualTypeProp]] */;
+val* var_ /* var : HashSet[MClass] */;
+val* var10 /* : Iterator[Object] */;
+val* var_11 /* var : Iterator[MClass] */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var14 /* : HashSet[MVirtualTypeProp] */;
+val* var15 /* : MModule */;
+val* var17 /* : MModule */;
+val* var18 /* : Set[MProperty] */;
+val* var_19 /* var : Set[MProperty] */;
+val* var20 /* : Iterator[nullable Object] */;
+val* var_21 /* var : Iterator[MProperty] */;
+short int var22 /* : Bool */;
+val* var23 /* : nullable Object */;
+val* var_mprop /* var mprop: MProperty */;
+short int var24 /* : Bool */;
+int cltype;
+int idtype;
+val* var25 /* : nullable Object */;
+val* var29 /* : POSetBucketsColorer[MClass, MVirtualTypeProp] */;
+val* var30 /* : Map[Object, Set[Object]] */;
+val* var_vt_colorer /* var vt_colorer: POSetBucketsColorer[MClass, MVirtualTypeProp] */;
+val* var31 /* : Map[Object, Int] */;
+val* var33 /* : Map[MClass, Array[nullable MPropDef]] */;
+var_mainmodule = p0;
+var_mmbuilder = p1;
+var_runtime_type_analysis = p2;
+{
+separate_compiler__SeparateCompiler__init(self, p0, p1, p2); /* Direct call separate_compiler#SeparateCompiler#init on <self:SeparateErasureCompiler>*/
+}
+{
+var = model__MModule__flatten_mclass_hierarchy(var_mainmodule);
+}
+var_poset = var;
+var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
+{
+hash_collection__HashSet__from(var1, var_poset); /* Direct call hash_collection#HashSet#from on <var1:HashSet[MClass]>*/
+}
+var_mclasses = var1;
+var2 = NEW_coloring__POSetColorer(&type_coloring__POSetColorermodel__MClass);
+{
+((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:POSetColorer[MClass]>*/;
+}
+var_colorer = var2;
+{
+coloring__POSetColorer__colorize(var_colorer, var_poset); /* Direct call coloring#POSetColorer#colorize on <var_colorer:POSetColorer[MClass]>*/
+}
+{
+var3 = coloring__POSetColorer__ids(var_colorer);
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids= (self,var3) on <self:SeparateErasureCompiler> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids].val = var3; /* _class_ids on <self:SeparateErasureCompiler> */
+RET_LABEL4:(void)0;
+}
+}
+{
+var5 = coloring__POSetColorer__colors(var_colorer);
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors= (self,var5) on <self:SeparateErasureCompiler> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors].val = var5; /* _class_colors on <self:SeparateErasureCompiler> */
+RET_LABEL6:(void)0;
+}
+}
+{
+var7 = separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(self, var_mclasses);
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_tables= (self,var7) on <self:SeparateErasureCompiler> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables].val = var7; /* _class_tables on <self:SeparateErasureCompiler> */
+RET_LABEL8:(void)0;
+}
+}
+var9 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassabstract_collection__Setmodel__MVirtualTypeProp);
+{
+((void (*)(val*))(var9->class->vft[COLOR_kernel__Object__init]))(var9) /* init on <var9:HashMap[MClass, Set[MVirtualTypeProp]]>*/;
+}
+var_vts = var9;
+var_ = var_mclasses;
+{
+var10 = hash_collection__HashSet__iterator(var_);
+}
+var_11 = var10;
+for(;;) {
+{
+var12 = ((short int (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_11) /* is_ok on <var_11:Iterator[MClass]>*/;
+}
+if (var12){
+{
+var13 = ((val* (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__item]))(var_11) /* item on <var_11:Iterator[MClass]>*/;
+}
+var_mclass = var13;
+var14 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MVirtualTypeProp);
+{
+((void (*)(val*))(var14->class->vft[COLOR_kernel__Object__init]))(var14) /* init on <var14:HashSet[MVirtualTypeProp]>*/;
+}
+{
+hash_collection__HashMap___91d_93d_61d(var_vts, var_mclass, var14); /* Direct call hash_collection#HashMap#[]= on <var_vts:HashMap[MClass, Set[MVirtualTypeProp]]>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var17 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+var18 = abstract_compiler__MModule__properties(var15, var_mclass);
+}
+var_19 = var18;
+{
+var20 = ((val* (*)(val*))(var_19->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_19) /* iterator on <var_19:Set[MProperty]>*/;
+}
+var_21 = var20;
+for(;;) {
+{
+var22 = ((short int (*)(val*))(var_21->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_21) /* is_ok on <var_21:Iterator[MProperty]>*/;
+}
+if (var22){
+{
+var23 = ((val* (*)(val*))(var_21->class->vft[COLOR_abstract_collection__Iterator__item]))(var_21) /* item on <var_21:Iterator[MProperty]>*/;
+}
+var_mprop = var23;
+/* <var_mprop:MProperty> isa MVirtualTypeProp */
+cltype = type_model__MVirtualTypeProp.color;
+idtype = type_model__MVirtualTypeProp.id;
+if(cltype >= var_mprop->type->table_size) {
+var24 = 0;
+} else {
+var24 = var_mprop->type->type_table[cltype] == idtype;
+}
+if (var24){
+{
+var25 = hash_collection__HashMap___91d_93d(var_vts, var_mclass);
+}
+{
+((void (*)(val*, val*))(var25->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var25, var_mprop) /* add on <var25:nullable Object(Set[MVirtualTypeProp])>*/;
+}
+} else {
+}
+{
+((void (*)(val*))(var_21->class->vft[COLOR_abstract_collection__Iterator__next]))(var_21) /* next on <var_21:Iterator[MProperty]>*/;
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_21) on <var_21:Iterator[MProperty]> */
+RET_LABEL26:(void)0;
+}
+}
+{
+((void (*)(val*))(var_11->class->vft[COLOR_abstract_collection__Iterator__next]))(var_11) /* next on <var_11:Iterator[MClass]>*/;
+}
+} else {
+goto BREAK_label27;
+}
+}
+BREAK_label27: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_11) on <var_11:Iterator[MClass]> */
+RET_LABEL28:(void)0;
+}
+}
+var29 = NEW_coloring__POSetBucketsColorer(&type_coloring__POSetBucketsColorermodel__MClassmodel__MVirtualTypeProp);
+{
+var30 = coloring__POSetColorer__conflicts(var_colorer);
+}
+{
+coloring__POSetBucketsColorer__init(var29, var_poset, var30); /* Direct call coloring#POSetBucketsColorer#init on <var29:POSetBucketsColorer[MClass, MVirtualTypeProp]>*/
+}
+var_vt_colorer = var29;
+{
+var31 = coloring__POSetBucketsColorer__colorize(var_vt_colorer, var_vts);
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors= (self,var31) on <self:SeparateErasureCompiler> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val = var31; /* _vt_colors on <self:SeparateErasureCompiler> */
+RET_LABEL32:(void)0;
+}
+}
+{
+var33 = separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(self, var_mclasses);
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_tables= (self,var33) on <self:SeparateErasureCompiler> */
+self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables].val = var33; /* _vt_tables on <self:SeparateErasureCompiler> */
+RET_LABEL34:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#init for (self: Object, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
+void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__init(val* self, val* p0, val* p1, val* p2) {
+separate_erasure_compiler__SeparateErasureCompiler__init(self, p0, p1, p2); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#init on <self:Object(SeparateErasureCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#build_vt_tables for (self: SeparateErasureCompiler, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
+val* separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(val* self, val* p0) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var_mclasses /* var mclasses: Set[MClass] */;
+val* var1 /* : HashMap[MClass, Array[nullable MPropDef]] */;
+val* var_tables /* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
+val* var_ /* var : Set[MClass] */;
+val* var2 /* : Iterator[nullable Object] */;
+val* var_3 /* var : Iterator[MClass] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var6 /* : Array[nullable MPropDef] */;
+val* var_table /* var table: Array[nullable MPropDef] */;
+val* var7 /* : Array[MClass] */;
+val* var_parents /* var parents: Array[MClass] */;
+val* var8 /* : MModule */;
+val* var10 /* : MModule */;
+val* var11 /* : POSet[MClass] */;
+short int var12 /* : Bool */;
+val* var13 /* : MModule */;
+val* var15 /* : MModule */;
+val* var16 /* : POSetElement[MClass] */;
+val* var17 /* : Collection[Object] */;
+val* var18 /* : Array[nullable Object] */;
+val* var19 /* : MModule */;
+val* var21 /* : MModule */;
+val* var_22 /* var : Array[MClass] */;
+val* var23 /* : ArrayIterator[nullable Object] */;
+val* var_24 /* var : ArrayIterator[MClass] */;
+short int var25 /* : Bool */;
+val* var26 /* : nullable Object */;
+val* var_parent /* var parent: MClass */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var30 /* : Bool */;
+short int var32 /* : Bool */;
+val* var33 /* : MModule */;
+val* var35 /* : MModule */;
+val* var36 /* : Set[MProperty] */;
+val* var_37 /* var : Set[MProperty] */;
+val* var38 /* : Iterator[nullable Object] */;
+val* var_39 /* var : Iterator[MProperty] */;
+short int var40 /* : Bool */;
+val* var41 /* : nullable Object */;
+val* var_mproperty /* var mproperty: MProperty */;
+short int var42 /* : Bool */;
+int cltype;
+int idtype;
+short int var43 /* : Bool */;
+val* var45 /* : Map[MVirtualTypeProp, Int] */;
+val* var47 /* : Map[MVirtualTypeProp, Int] */;
+val* var48 /* : nullable Object */;
+long var49 /* : Int */;
+long var_color /* var color: Int */;
+long var50 /* : Int */;
+long var52 /* : Int */;
+short int var53 /* : Bool */;
+short int var55 /* : Bool */;
+int cltype56;
+int idtype57;
+const char* var_class_name;
+short int var58 /* : Bool */;
+long var59 /* : Int */;
+long var61 /* : Int */;
+long var_i /* var i: Int */;
+long var_62 /* var : Int */;
+short int var63 /* : Bool */;
+short int var65 /* : Bool */;
+int cltype66;
+int idtype67;
+const char* var_class_name68;
+short int var69 /* : Bool */;
+val* var70 /* : null */;
+long var71 /* : Int */;
+long var72 /* : Int */;
+val* var74 /* : Array[MPropDef] */;
+val* var76 /* : Array[MPropDef] */;
+val* var_77 /* var : Array[MVirtualTypeDef] */;
+val* var78 /* : ArrayIterator[nullable Object] */;
+val* var_79 /* var : ArrayIterator[MVirtualTypeDef] */;
+short int var80 /* : Bool */;
+val* var81 /* : nullable Object */;
+val* var_mpropdef /* var mpropdef: MVirtualTypeDef */;
+val* var82 /* : MClassDef */;
+val* var84 /* : MClassDef */;
+val* var85 /* : MClass */;
+val* var87 /* : MClass */;
+short int var88 /* : Bool */;
+short int var89 /* : Bool */;
+short int var91 /* : Bool */;
+short int var93 /* : Bool */;
+val* var100 /* : MModule */;
+val* var102 /* : MModule */;
+val* var103 /* : Set[MProperty] */;
+val* var_104 /* var : Set[MProperty] */;
+val* var105 /* : Iterator[nullable Object] */;
+val* var_106 /* var : Iterator[MProperty] */;
+short int var107 /* : Bool */;
+val* var108 /* : nullable Object */;
+val* var_mproperty109 /* var mproperty: MProperty */;
+short int var110 /* : Bool */;
+int cltype111;
+int idtype112;
+short int var113 /* : Bool */;
+val* var115 /* : Map[MVirtualTypeProp, Int] */;
+val* var117 /* : Map[MVirtualTypeProp, Int] */;
+val* var118 /* : nullable Object */;
+long var119 /* : Int */;
+long var_color120 /* var color: Int */;
+long var121 /* : Int */;
+long var123 /* : Int */;
+short int var124 /* : Bool */;
+short int var126 /* : Bool */;
+int cltype127;
+int idtype128;
+const char* var_class_name129;
+short int var130 /* : Bool */;
+long var131 /* : Int */;
+long var133 /* : Int */;
+long var_i134 /* var i: Int */;
+long var_135 /* var : Int */;
+short int var136 /* : Bool */;
+short int var138 /* : Bool */;
+int cltype139;
+int idtype140;
+const char* var_class_name141;
+short int var142 /* : Bool */;
+val* var143 /* : null */;
+long var144 /* : Int */;
+long var145 /* : Int */;
+val* var147 /* : Array[MPropDef] */;
+val* var149 /* : Array[MPropDef] */;
+val* var_150 /* var : Array[MVirtualTypeDef] */;
+val* var151 /* : ArrayIterator[nullable Object] */;
+val* var_152 /* var : ArrayIterator[MVirtualTypeDef] */;
+short int var153 /* : Bool */;
+val* var154 /* : nullable Object */;
+val* var_mpropdef155 /* var mpropdef: MVirtualTypeDef */;
+val* var156 /* : MClassDef */;
+val* var158 /* : MClassDef */;
+val* var159 /* : MClass */;
+val* var161 /* : MClass */;
+short int var162 /* : Bool */;
+short int var163 /* : Bool */;
+short int var165 /* : Bool */;
+short int var167 /* : Bool */;
+var_mclasses = p0;
+var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MPropDef);
+{
+((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:HashMap[MClass, Array[nullable MPropDef]]>*/;
+}
+var_tables = var1;
+var_ = var_mclasses;
+{
+var2 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[MClass]>*/;
+}
+var_3 = var2;
+for(;;) {
+{
+var4 = ((short int (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_3) /* is_ok on <var_3:Iterator[MClass]>*/;
+}
+if (var4){
+{
+var5 = ((val* (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__item]))(var_3) /* item on <var_3:Iterator[MClass]>*/;
+}
+var_mclass = var5;
+var6 = NEW_array__Array(&type_array__Arraynullable_model__MPropDef);
+{
+((void (*)(val*))(var6->class->vft[COLOR_kernel__Object__init]))(var6) /* init on <var6:Array[nullable MPropDef]>*/;
+}
+var_table = var6;
+var7 = NEW_array__Array(&type_array__Arraymodel__MClass);
+{
+((void (*)(val*))(var7->class->vft[COLOR_kernel__Object__init]))(var7) /* init on <var7:Array[MClass]>*/;
+}
+var_parents = var7;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var10 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+var11 = model__MModule__flatten_mclass_hierarchy(var8);
+}
+{
+var12 = poset__POSet__has(var11, var_mclass);
+}
+if (var12){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var15 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+var16 = model__MClass__in_hierarchy(var_mclass, var13);
+}
+{
+var17 = poset__POSetElement__greaters(var16);
+}
+{
+var18 = array__Collection__to_a(var17);
+}
+var_parents = var18;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var21 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+{
+model__MModule__linearize_mclasses(var19, var_parents); /* Direct call model#MModule#linearize_mclasses on <var19:MModule>*/
+}
+} else {
+}
+var_22 = var_parents;
+{
+var23 = array__AbstractArrayRead__iterator(var_22);
+}
+var_24 = var23;
+for(;;) {
+{
+var25 = array__ArrayIterator__is_ok(var_24);
+}
+if (var25){
+{
+var26 = array__ArrayIterator__item(var_24);
+}
+var_parent = var26;
+{
+{ /* Inline kernel#Object#== (var_parent,var_mclass) on <var_parent:MClass> */
+var_other = var_mclass;
+{
+{ /* Inline kernel#Object#is_same_instance (var_parent,var_other) on <var_parent:MClass> */
+var32 = var_parent == var_other;
+var30 = var32;
+goto RET_LABEL31;
+RET_LABEL31:(void)0;
+}
+}
+var28 = var30;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
+}
+var27 = var28;
+}
+if (var27){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var35 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var35 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+{
+var36 = abstract_compiler__MModule__properties(var33, var_parent);
+}
+var_37 = var36;
+{
+var38 = ((val* (*)(val*))(var_37->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_37) /* iterator on <var_37:Set[MProperty]>*/;
+}
+var_39 = var38;
+for(;;) {
+{
+var40 = ((short int (*)(val*))(var_39->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_39) /* is_ok on <var_39:Iterator[MProperty]>*/;
+}
+if (var40){
+{
+var41 = ((val* (*)(val*))(var_39->class->vft[COLOR_abstract_collection__Iterator__item]))(var_39) /* item on <var_39:Iterator[MProperty]>*/;
+}
+var_mproperty = var41;
+/* <var_mproperty:MProperty> isa MVirtualTypeProp */
+cltype = type_model__MVirtualTypeProp.color;
+idtype = type_model__MVirtualTypeProp.id;
+if(cltype >= var_mproperty->type->table_size) {
+var42 = 0;
+} else {
+var42 = var_mproperty->type->type_table[cltype] == idtype;
+}
+var43 = !var42;
+if (var43){
+goto BREAK_label44;
+} else {
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (self) on <self:SeparateErasureCompiler> */
+var47 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:SeparateErasureCompiler> */
+if (unlikely(var47 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 106);
+show_backtrace(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+var48 = ((val* (*)(val*, val*))(var45->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var45, var_mproperty) /* [] on <var45:Map[MVirtualTypeProp, Int]>*/;
+}
+var49 = ((struct instance_kernel__Int*)var48)->value; /* autounbox from nullable Object to Int */;
+var_color = var49;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MPropDef]> */
+var52 = var_table->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
+var50 = var52;
+RET_LABEL51:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#<= (var50,var_color) on <var50:Int> */
+/* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
+/* <var_color:Int> isa OTHER */
+var55 = 1; /* easy <var_color:Int> isa OTHER*/
+if (unlikely(!var55)) {
+var_class_name = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
+show_backtrace(1);
+}
+var58 = var50 <= var_color;
+var53 = var58;
+goto RET_LABEL54;
+RET_LABEL54:(void)0;
+}
+}
+if (var53){
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MPropDef]> */
+var61 = var_table->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
+var59 = var61;
+RET_LABEL60:(void)0;
+}
+}
+var_i = var59;
+var_62 = var_color;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i,var_62) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_62:Int> isa OTHER */
+/* <var_62:Int> isa OTHER */
+var65 = 1; /* easy <var_62:Int> isa OTHER*/
+if (unlikely(!var65)) {
+var_class_name68 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name68);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
+show_backtrace(1);
+}
+var69 = var_i < var_62;
+var63 = var69;
+goto RET_LABEL64;
+RET_LABEL64:(void)0;
+}
+}
+if (var63){
+var70 = NULL;
+{
+array__Array___91d_93d_61d(var_table, var_i, var70); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
+}
+var71 = 1;
+{
+var72 = kernel__Int__successor(var_i, var71);
+}
+var_i = var72;
+} else {
+goto BREAK_label73;
+}
+}
+BREAK_label73: (void)0;
+} else {
+}
+{
+{ /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MProperty(MVirtualTypeProp)> */
+var76 = var_mproperty->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty:MProperty(MVirtualTypeProp)> */
+if (unlikely(var76 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
+show_backtrace(1);
+}
+var74 = var76;
+RET_LABEL75:(void)0;
+}
+}
+var_77 = var74;
+{
+var78 = array__AbstractArrayRead__iterator(var_77);
+}
+var_79 = var78;
+for(;;) {
+{
+var80 = array__ArrayIterator__is_ok(var_79);
+}
+if (var80){
+{
+var81 = array__ArrayIterator__item(var_79);
+}
+var_mpropdef = var81;
+{
+{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MVirtualTypeDef> */
+var84 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MVirtualTypeDef> */
+if (unlikely(var84 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var82 = var84;
+RET_LABEL83:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mclass (var82) on <var82:MClassDef> */
+var87 = var82->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var82:MClassDef> */
+if (unlikely(var87 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
+show_backtrace(1);
+}
+var85 = var87;
+RET_LABEL86:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var85,var_parent) on <var85:MClass> */
+var_other = var_parent;
+{
+{ /* Inline kernel#Object#is_same_instance (var85,var_other) on <var85:MClass> */
+var93 = var85 == var_other;
+var91 = var93;
+goto RET_LABEL92;
+RET_LABEL92:(void)0;
+}
+}
+var89 = var91;
+goto RET_LABEL90;
+RET_LABEL90:(void)0;
+}
+var88 = var89;
+}
+if (var88){
+{
+array__Array___91d_93d_61d(var_table, var_color, var_mpropdef); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
+}
+} else {
+}
+{
+array__ArrayIterator__next(var_79); /* Direct call array#ArrayIterator#next on <var_79:ArrayIterator[MVirtualTypeDef]>*/
+}
+} else {
+goto BREAK_label94;
+}
+}
+BREAK_label94: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_79) on <var_79:ArrayIterator[MVirtualTypeDef]> */
+RET_LABEL95:(void)0;
+}
+}
+BREAK_label44: (void)0;
+{
+((void (*)(val*))(var_39->class->vft[COLOR_abstract_collection__Iterator__next]))(var_39) /* next on <var_39:Iterator[MProperty]>*/;
+}
+} else {
+goto BREAK_label96;
+}
+}
+BREAK_label96: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_39) on <var_39:Iterator[MProperty]> */
+RET_LABEL97:(void)0;
+}
+}
+BREAK_label: (void)0;
+{
+array__ArrayIterator__next(var_24); /* Direct call array#ArrayIterator#next on <var_24:ArrayIterator[MClass]>*/
+}
+} else {
+goto BREAK_label98;
+}
+}
+BREAK_label98: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_24) on <var_24:ArrayIterator[MClass]> */
+RET_LABEL99:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var102 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var102 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var100 = var102;
+RET_LABEL101:(void)0;
+}
+}
+{
+var103 = abstract_compiler__MModule__properties(var100, var_mclass);
+}
+var_104 = var103;
+{
+var105 = ((val* (*)(val*))(var_104->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_104) /* iterator on <var_104:Set[MProperty]>*/;
+}
+var_106 = var105;
+for(;;) {
+{
+var107 = ((short int (*)(val*))(var_106->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_106) /* is_ok on <var_106:Iterator[MProperty]>*/;
+}
+if (var107){
+{
+var108 = ((val* (*)(val*))(var_106->class->vft[COLOR_abstract_collection__Iterator__item]))(var_106) /* item on <var_106:Iterator[MProperty]>*/;
+}
+var_mproperty109 = var108;
+/* <var_mproperty109:MProperty> isa MVirtualTypeProp */
+cltype111 = type_model__MVirtualTypeProp.color;
+idtype112 = type_model__MVirtualTypeProp.id;
+if(cltype111 >= var_mproperty109->type->table_size) {
+var110 = 0;
+} else {
+var110 = var_mproperty109->type->type_table[cltype111] == idtype112;
+}
+var113 = !var110;
+if (var113){
+goto BREAK_label114;
+} else {
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (self) on <self:SeparateErasureCompiler> */
+var117 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors].val; /* _vt_colors on <self:SeparateErasureCompiler> */
+if (unlikely(var117 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 106);
+show_backtrace(1);
+}
+var115 = var117;
+RET_LABEL116:(void)0;
+}
+}
+{
+var118 = ((val* (*)(val*, val*))(var115->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var115, var_mproperty109) /* [] on <var115:Map[MVirtualTypeProp, Int]>*/;
+}
+var119 = ((struct instance_kernel__Int*)var118)->value; /* autounbox from nullable Object to Int */;
+var_color120 = var119;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MPropDef]> */
+var123 = var_table->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
+var121 = var123;
+RET_LABEL122:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#<= (var121,var_color120) on <var121:Int> */
+/* Covariant cast for argument 0 (i) <var_color120:Int> isa OTHER */
+/* <var_color120:Int> isa OTHER */
+var126 = 1; /* easy <var_color120:Int> isa OTHER*/
+if (unlikely(!var126)) {
+var_class_name129 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name129);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
+show_backtrace(1);
+}
+var130 = var121 <= var_color120;
+var124 = var130;
+goto RET_LABEL125;
+RET_LABEL125:(void)0;
+}
+}
+if (var124){
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MPropDef]> */
+var133 = var_table->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MPropDef]> */
+var131 = var133;
+RET_LABEL132:(void)0;
+}
+}
+var_i134 = var131;
+var_135 = var_color120;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i134,var_135) on <var_i134:Int> */
+/* Covariant cast for argument 0 (i) <var_135:Int> isa OTHER */
+/* <var_135:Int> isa OTHER */
+var138 = 1; /* easy <var_135:Int> isa OTHER*/
+if (unlikely(!var138)) {
+var_class_name141 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name141);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
+show_backtrace(1);
+}
+var142 = var_i134 < var_135;
+var136 = var142;
+goto RET_LABEL137;
+RET_LABEL137:(void)0;
+}
+}
+if (var136){
+var143 = NULL;
+{
+array__Array___91d_93d_61d(var_table, var_i134, var143); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
+}
+var144 = 1;
+{
+var145 = kernel__Int__successor(var_i134, var144);
+}
+var_i134 = var145;
+} else {
+goto BREAK_label146;
+}
+}
+BREAK_label146: (void)0;
+} else {
+}
+{
+{ /* Inline model#MProperty#mpropdefs (var_mproperty109) on <var_mproperty109:MProperty(MVirtualTypeProp)> */
+var149 = var_mproperty109->attrs[COLOR_model__MProperty___mpropdefs].val; /* _mpropdefs on <var_mproperty109:MProperty(MVirtualTypeProp)> */
+if (unlikely(var149 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1644);
+show_backtrace(1);
+}
+var147 = var149;
+RET_LABEL148:(void)0;
+}
+}
+var_150 = var147;
+{
+var151 = array__AbstractArrayRead__iterator(var_150);
+}
+var_152 = var151;
+for(;;) {
+{
+var153 = array__ArrayIterator__is_ok(var_152);
+}
+if (var153){
+{
+var154 = array__ArrayIterator__item(var_152);
+}
+var_mpropdef155 = var154;
+{
+{ /* Inline model#MPropDef#mclassdef (var_mpropdef155) on <var_mpropdef155:MVirtualTypeDef> */
+var158 = var_mpropdef155->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef155:MVirtualTypeDef> */
+if (unlikely(var158 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var156 = var158;
+RET_LABEL157:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mclass (var156) on <var156:MClassDef> */
+var161 = var156->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var156:MClassDef> */
+if (unlikely(var161 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
+show_backtrace(1);
+}
+var159 = var161;
+RET_LABEL160:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var159,var_mclass) on <var159:MClass> */
+var_other = var_mclass;
+{
+{ /* Inline kernel#Object#is_same_instance (var159,var_other) on <var159:MClass> */
+var167 = var159 == var_other;
+var165 = var167;
+goto RET_LABEL166;
+RET_LABEL166:(void)0;
+}
+}
+var163 = var165;
+goto RET_LABEL164;
+RET_LABEL164:(void)0;
+}
+var162 = var163;
+}
+if (var162){
+{
+array__Array___91d_93d_61d(var_table, var_color120, var_mpropdef155); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
+}
+} else {
+}
+{
+array__ArrayIterator__next(var_152); /* Direct call array#ArrayIterator#next on <var_152:ArrayIterator[MVirtualTypeDef]>*/
+}
+} else {
+goto BREAK_label168;
+}
+}
+BREAK_label168: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_152) on <var_152:ArrayIterator[MVirtualTypeDef]> */
+RET_LABEL169:(void)0;
+}
+}
+BREAK_label114: (void)0;
+{
+((void (*)(val*))(var_106->class->vft[COLOR_abstract_collection__Iterator__next]))(var_106) /* next on <var_106:Iterator[MProperty]>*/;
+}
+} else {
+goto BREAK_label170;
+}
+}
+BREAK_label170: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_106) on <var_106:Iterator[MProperty]> */
+RET_LABEL171:(void)0;
+}
+}
+{
+hash_collection__HashMap___91d_93d_61d(var_tables, var_mclass, var_table); /* Direct call hash_collection#HashMap#[]= on <var_tables:HashMap[MClass, Array[nullable MPropDef]]>*/
+}
+{
+((void (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__next]))(var_3) /* next on <var_3:Iterator[MClass]>*/;
+}
+} else {
+goto BREAK_label172;
+}
+}
+BREAK_label172: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_3) on <var_3:Iterator[MClass]> */
+RET_LABEL173:(void)0;
+}
+}
+var = var_tables;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#build_vt_tables for (self: Object, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
+val* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(val* self, val* p0) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+var1 = separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#build_class_typing_tables for (self: SeparateErasureCompiler, Set[MClass]): Map[MClass, Array[nullable MClass]] */
+val* separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(val* self, val* p0) {
+val* var /* : Map[MClass, Array[nullable MClass]] */;
+val* var_mclasses /* var mclasses: Set[MClass] */;
+val* var1 /* : HashMap[MClass, Array[nullable MClass]] */;
+val* var_tables /* var tables: HashMap[MClass, Array[nullable MClass]] */;
+val* var_ /* var : Set[MClass] */;
+val* var2 /* : Iterator[nullable Object] */;
+val* var_3 /* var : Iterator[MClass] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var6 /* : Array[nullable MClass] */;
+val* var_table /* var table: Array[nullable MClass] */;
+val* var7 /* : Array[MClass] */;
+val* var_supers /* var supers: Array[MClass] */;
+val* var8 /* : MModule */;
+val* var10 /* : MModule */;
+val* var11 /* : POSet[MClass] */;
+short int var12 /* : Bool */;
+val* var13 /* : MModule */;
+val* var15 /* : MModule */;
+val* var16 /* : POSetElement[MClass] */;
+val* var17 /* : Collection[Object] */;
+val* var18 /* : Array[nullable Object] */;
+val* var_19 /* var : Array[MClass] */;
+val* var20 /* : ArrayIterator[nullable Object] */;
+val* var_21 /* var : ArrayIterator[MClass] */;
+short int var22 /* : Bool */;
+val* var23 /* : nullable Object */;
+val* var_sup /* var sup: MClass */;
+val* var24 /* : Map[MClass, Int] */;
+val* var26 /* : Map[MClass, Int] */;
+val* var27 /* : nullable Object */;
+long var28 /* : Int */;
+long var_color /* var color: Int */;
+long var29 /* : Int */;
+long var31 /* : Int */;
+short int var32 /* : Bool */;
+short int var34 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var35 /* : Bool */;
+long var36 /* : Int */;
+long var38 /* : Int */;
+long var_i /* var i: Int */;
+long var_39 /* var : Int */;
+short int var40 /* : Bool */;
+short int var42 /* : Bool */;
+int cltype43;
+int idtype44;
+const char* var_class_name45;
+short int var46 /* : Bool */;
+val* var47 /* : null */;
+long var48 /* : Int */;
+long var49 /* : Int */;
+var_mclasses = p0;
+var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MClass);
+{
+((void (*)(val*))(var1->class->vft[COLOR_kernel__Object__init]))(var1) /* init on <var1:HashMap[MClass, Array[nullable MClass]]>*/;
+}
+var_tables = var1;
+var_ = var_mclasses;
+{
+var2 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Set[MClass]>*/;
+}
+var_3 = var2;
+for(;;) {
+{
+var4 = ((short int (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_3) /* is_ok on <var_3:Iterator[MClass]>*/;
+}
+if (var4){
+{
+var5 = ((val* (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__item]))(var_3) /* item on <var_3:Iterator[MClass]>*/;
+}
+var_mclass = var5;
+var6 = NEW_array__Array(&type_array__Arraynullable_model__MClass);
+{
+((void (*)(val*))(var6->class->vft[COLOR_kernel__Object__init]))(var6) /* init on <var6:Array[nullable MClass]>*/;
+}
+var_table = var6;
+var7 = NEW_array__Array(&type_array__Arraymodel__MClass);
+{
+((void (*)(val*))(var7->class->vft[COLOR_kernel__Object__init]))(var7) /* init on <var7:Array[MClass]>*/;
+}
+var_supers = var7;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var10 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+var11 = model__MModule__flatten_mclass_hierarchy(var8);
+}
+{
+var12 = poset__POSet__has(var11, var_mclass);
+}
+if (var12){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
+var15 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateErasureCompiler> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+var16 = model__MClass__in_hierarchy(var_mclass, var13);
+}
+{
+var17 = poset__POSetElement__greaters(var16);
+}
+{
+var18 = array__Collection__to_a(var17);
+}
+var_supers = var18;
+} else {
+}
+var_19 = var_supers;
+{
+var20 = array__AbstractArrayRead__iterator(var_19);
+}
+var_21 = var20;
+for(;;) {
+{
+var22 = array__ArrayIterator__is_ok(var_21);
+}
+if (var22){
+{
+var23 = array__ArrayIterator__item(var_21);
+}
+var_sup = var23;
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors (self) on <self:SeparateErasureCompiler> */
+var26 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors].val; /* _class_colors on <self:SeparateErasureCompiler> */
+if (unlikely(var26 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 105);
+show_backtrace(1);
+}
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+{
+var27 = ((val* (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var24, var_sup) /* [] on <var24:Map[MClass, Int]>*/;
+}
+var28 = ((struct instance_kernel__Int*)var27)->value; /* autounbox from nullable Object to Int */;
+var_color = var28;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MClass]> */
+var31 = var_table->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MClass]> */
+var29 = var31;
+RET_LABEL30:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#<= (var29,var_color) on <var29:Int> */
+/* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
+/* <var_color:Int> isa OTHER */
+var34 = 1; /* easy <var_color:Int> isa OTHER*/
+if (unlikely(!var34)) {
+var_class_name = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
+show_backtrace(1);
+}
+var35 = var29 <= var_color;
+var32 = var35;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
+}
+}
+if (var32){
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MClass]> */
+var38 = var_table->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MClass]> */
+var36 = var38;
+RET_LABEL37:(void)0;
+}
+}
+var_i = var36;
+var_39 = var_color;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i,var_39) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_39:Int> isa OTHER */
+/* <var_39:Int> isa OTHER */
+var42 = 1; /* easy <var_39:Int> isa OTHER*/
+if (unlikely(!var42)) {
+var_class_name45 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name45);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
+show_backtrace(1);
+}
+var46 = var_i < var_39;
+var40 = var46;
+goto RET_LABEL41;
+RET_LABEL41:(void)0;
+}
+}
+if (var40){
+var47 = NULL;
+{
+array__Array___91d_93d_61d(var_table, var_i, var47); /* Direct call array#Array#[]= on <var_table:Array[nullable MClass]>*/
+}
+var48 = 1;
+{
+var49 = kernel__Int__successor(var_i, var48);
+}
+var_i = var49;
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+} else {
+}
+{
+array__Array___91d_93d_61d(var_table, var_color, var_sup); /* Direct call array#Array#[]= on <var_table:Array[nullable MClass]>*/
+}
+{
+array__ArrayIterator__next(var_21); /* Direct call array#ArrayIterator#next on <var_21:ArrayIterator[MClass]>*/
+}
+} else {
+goto BREAK_label50;
+}
+}
+BREAK_label50: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_21) on <var_21:ArrayIterator[MClass]> */
+RET_LABEL51:(void)0;
+}
+}
+{
+hash_collection__HashMap___91d_93d_61d(var_tables, var_mclass, var_table); /* Direct call hash_collection#HashMap#[]= on <var_tables:HashMap[MClass, Array[nullable MClass]]>*/
+}
+{
+((void (*)(val*))(var_3->class->vft[COLOR_abstract_collection__Iterator__next]))(var_3) /* next on <var_3:Iterator[MClass]>*/;
+}
+} else {
+goto BREAK_label52;
+}
+}
+BREAK_label52: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_3) on <var_3:Iterator[MClass]> */
+RET_LABEL53:(void)0;
+}
+}
+var = var_tables;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#build_class_typing_tables for (self: Object, Set[MClass]): Map[MClass, Array[nullable MClass]] */
+val* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(val* self, val* p0) {
+val* var /* : Map[MClass, Array[nullable MClass]] */;
+val* var1 /* : Map[MClass, Array[nullable MClass]] */;
+var1 = separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs for (self: SeparateErasureCompiler) */
+void separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(val* self) {
+val* var /* : CodeWriter */;
+val* var2 /* : CodeWriter */;
+static val* varonce;
+val* var3 /* : String */;
+char* var4 /* : NativeString */;
+long var5 /* : Int */;
+val* var6 /* : FlatString */;
+val* var7 /* : CodeWriter */;
+val* var9 /* : CodeWriter */;
+static val* varonce10;
+val* var11 /* : String */;
+char* var12 /* : NativeString */;
+long var13 /* : Int */;
+val* var14 /* : FlatString */;
+val* var15 /* : CodeWriter */;
+val* var17 /* : CodeWriter */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+long var21 /* : Int */;
+val* var22 /* : FlatString */;
+val* var23 /* : CodeWriter */;
+val* var25 /* : CodeWriter */;
+static val* varonce26;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+long var29 /* : Int */;
+val* var30 /* : FlatString */;
+val* var31 /* : CodeWriter */;
+val* var33 /* : CodeWriter */;
+static val* varonce34;
+val* var35 /* : String */;
+char* var36 /* : NativeString */;
+long var37 /* : Int */;
+val* var38 /* : FlatString */;
+val* var39 /* : CodeWriter */;
+val* var41 /* : CodeWriter */;
+static val* varonce42;
+val* var43 /* : String */;
+char* var44 /* : NativeString */;
+long var45 /* : Int */;
+val* var46 /* : FlatString */;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
+var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+if (varonce) {
+var3 = varonce;
+} else {
+var4 = "typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */";
+var5 = 81;
+var6 = string__NativeString__to_s_with_length(var4, var5);
+var3 = var6;
+varonce = var3;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var, var3); /* Direct call abstract_compiler#CodeWriter#add_decl on <var:CodeWriter>*/
+}
+{
+separate_compiler__SeparateCompiler__compile_header_attribute_structs(self); /* Direct call separate_compiler#SeparateCompiler#compile_header_attribute_structs on <self:SeparateErasureCompiler>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
+var9 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+if (varonce10) {
+var11 = varonce10;
+} else {
+var12 = "struct class { int id; const char *name; int box_kind; int color; const struct vts_table *vts_table; const struct type_table *type_table; nitmethod_t vft[]; }; /* general C type representing a Nit class. */";
+var13 = 206;
+var14 = string__NativeString__to_s_with_length(var12, var13);
+var11 = var14;
+varonce10 = var11;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var7, var11); /* Direct call abstract_compiler#CodeWriter#add_decl on <var7:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
+var17 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+if (varonce18) {
+var19 = varonce18;
+} else {
+var20 = "struct type_table { int size; int table[]; }; /* colorized type table. */";
+var21 = 73;
+var22 = string__NativeString__to_s_with_length(var20, var21);
+var19 = var22;
+varonce18 = var19;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var15, var19); /* Direct call abstract_compiler#CodeWriter#add_decl on <var15:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
+var25 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+if (varonce26) {
+var27 = varonce26;
+} else {
+var28 = "struct vts_entry { short int is_nullable; const struct class *class; }; /* link (nullable or not) between the vts and is bound. */";
+var29 = 130;
+var30 = string__NativeString__to_s_with_length(var28, var29);
+var27 = var30;
+varonce26 = var27;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var23, var27); /* Direct call abstract_compiler#CodeWriter#add_decl on <var23:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
+var33 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
+if (unlikely(var33 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var31 = var33;
+RET_LABEL32:(void)0;
+}
+}
+if (varonce34) {
+var35 = varonce34;
+} else {
+var36 = "struct vts_table { int dummy; const struct vts_entry vts[]; }; /* vts list of a C type representation. */";
+var37 = 105;
+var38 = string__NativeString__to_s_with_length(var36, var37);
+var35 = var38;
+varonce34 = var35;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var31, var35); /* Direct call abstract_compiler#CodeWriter#add_decl on <var31:CodeWriter>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
+var41 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateErasureCompiler> */
+if (unlikely(var41 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 506);
+show_backtrace(1);
+}
+var39 = var41;
+RET_LABEL40:(void)0;
+}
+}
+if (varonce42) {
+var43 = varonce42;
+} else {
+var44 = "typedef struct instance { const struct class *class; nitattribute_t attrs[1]; } val; /* general C type representing a Nit instance. */";
+var45 = 134;
+var46 = string__NativeString__to_s_with_length(var44, var45);
+var43 = var46;
+varonce42 = var43;
+}
+{
+abstract_compiler__CodeWriter__add_decl(var39, var43); /* Direct call abstract_compiler#CodeWriter#add_decl on <var39:CodeWriter>*/
+}
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs for (self: Object) */
+void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(val* self) {
+separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(self); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs on <self:Object(SeparateErasureCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c for (self: SeparateErasureCompiler, MClass) */
+void separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(val* self, val* p0) {
+val* var_mclass /* var mclass: MClass */;
+val* var /* : MClassDef */;
+val* var2 /* : MClassDef */;
+val* var3 /* : MClassType */;
+val* var5 /* : MClassType */;
+val* var_mtype /* var mtype: MClassType */;
+val* var6 /* : String */;
+val* var_c_name /* var c_name: String */;
+val* var7 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var9 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var10 /* : nullable Object */;
+val* var_vft /* var vft: Array[nullable MPropDef] */;
+val* var11 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var13 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var14 /* : nullable Object */;
+val* var_attrs /* var attrs: Array[nullable MPropDef] */;
+val* var15 /* : Map[MClass, Array[nullable MClass]] */;
+val* var17 /* : Map[MClass, Array[nullable MClass]] */;
+val* var18 /* : nullable Object */;
+val* var_class_table /* var class_table: Array[nullable MClass] */;
+val* var19 /* : SeparateCompilerVisitor */;
+val* var_v /* var v: SeparateCompilerVisitor */;
+val* var20 /* : nullable RapidTypeAnalysis */;
+val* var22 /* : nullable RapidTypeAnalysis */;
+val* var_rta /* var rta: nullable RapidTypeAnalysis */;
+short int var23 /* : Bool */;
+short int var_is_dead /* var is_dead: Bool */;
+short int var24 /* : Bool */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var29 /* : null */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var33 /* : Bool */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+short int var_36 /* var : Bool */;
+val* var37 /* : HashSet[MClass] */;
+val* var39 /* : HashSet[MClass] */;
+short int var40 /* : Bool */;
+short int var41 /* : Bool */;
+short int var_42 /* var : Bool */;
+val* var43 /* : String */;
+static val* varonce;
+val* var44 /* : String */;
+char* var45 /* : NativeString */;
+long var46 /* : Int */;
+val* var47 /* : FlatString */;
+short int var48 /* : Bool */;
+short int var49 /* : Bool */;
+short int var_50 /* var : Bool */;
+val* var51 /* : String */;
+val* var53 /* : String */;
+static val* varonce54;
+val* var55 /* : String */;
+char* var56 /* : NativeString */;
+long var57 /* : Int */;
+val* var58 /* : FlatString */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+short int var62 /* : Bool */;
+short int var63 /* : Bool */;
+short int var64 /* : Bool */;
+short int var65 /* : Bool */;
+static val* varonce66;
+val* var67 /* : String */;
+char* var68 /* : NativeString */;
+long var69 /* : Int */;
+val* var70 /* : FlatString */;
+static val* varonce71;
+val* var72 /* : String */;
+char* var73 /* : NativeString */;
+long var74 /* : Int */;
+val* var75 /* : FlatString */;
+val* var76 /* : Array[Object] */;
+long var77 /* : Int */;
+val* var78 /* : NativeArray[Object] */;
+val* var79 /* : String */;
+static val* varonce80;
+val* var81 /* : String */;
+char* var82 /* : NativeString */;
+long var83 /* : Int */;
+val* var84 /* : FlatString */;
+val* var85 /* : Array[Object] */;
+long var86 /* : Int */;
+val* var87 /* : NativeArray[Object] */;
+val* var88 /* : String */;
+static val* varonce89;
+val* var90 /* : String */;
+char* var91 /* : NativeString */;
+long var92 /* : Int */;
+val* var93 /* : FlatString */;
+static val* varonce94;
+val* var95 /* : String */;
+char* var96 /* : NativeString */;
+long var97 /* : Int */;
+val* var98 /* : FlatString */;
+val* var99 /* : Array[Object] */;
+long var100 /* : Int */;
+val* var101 /* : NativeArray[Object] */;
+val* var102 /* : String */;
+static val* varonce103;
+val* var104 /* : String */;
+char* var105 /* : NativeString */;
+long var106 /* : Int */;
+val* var107 /* : FlatString */;
+static val* varonce108;
+val* var109 /* : String */;
+char* var110 /* : NativeString */;
+long var111 /* : Int */;
+val* var112 /* : FlatString */;
+val* var113 /* : Array[Object] */;
+long var114 /* : Int */;
+val* var115 /* : NativeArray[Object] */;
+val* var116 /* : String */;
+static val* varonce117;
+val* var118 /* : String */;
+char* var119 /* : NativeString */;
+long var120 /* : Int */;
+val* var121 /* : FlatString */;
+static val* varonce122;
+val* var123 /* : String */;
+char* var124 /* : NativeString */;
+long var125 /* : Int */;
+val* var126 /* : FlatString */;
+val* var127 /* : Array[Object] */;
+long var128 /* : Int */;
+val* var129 /* : NativeArray[Object] */;
+val* var130 /* : String */;
+val* var131 /* : Map[MClass, Int] */;
+val* var133 /* : Map[MClass, Int] */;
+val* var134 /* : nullable Object */;
+static val* varonce135;
+val* var136 /* : String */;
+char* var137 /* : NativeString */;
+long var138 /* : Int */;
+val* var139 /* : FlatString */;
+val* var140 /* : Array[Object] */;
+long var141 /* : Int */;
+val* var142 /* : NativeArray[Object] */;
+val* var143 /* : String */;
+static val* varonce144;
+val* var145 /* : String */;
+char* var146 /* : NativeString */;
+long var147 /* : Int */;
+val* var148 /* : FlatString */;
+val* var149 /* : String */;
+val* var151 /* : String */;
+static val* varonce152;
+val* var153 /* : String */;
+char* var154 /* : NativeString */;
+long var155 /* : Int */;
+val* var156 /* : FlatString */;
+val* var157 /* : Array[Object] */;
+long var158 /* : Int */;
+val* var159 /* : NativeArray[Object] */;
+val* var160 /* : String */;
+long var161 /* : Int */;
+static val* varonce162;
+val* var163 /* : String */;
+char* var164 /* : NativeString */;
+long var165 /* : Int */;
+val* var166 /* : FlatString */;
+val* var167 /* : Array[Object] */;
+long var168 /* : Int */;
+val* var169 /* : NativeArray[Object] */;
+val* var170 /* : Object */;
+val* var171 /* : String */;
+val* var172 /* : Map[MClass, Int] */;
+val* var174 /* : Map[MClass, Int] */;
+val* var175 /* : nullable Object */;
+static val* varonce176;
+val* var177 /* : String */;
+char* var178 /* : NativeString */;
+long var179 /* : Int */;
+val* var180 /* : FlatString */;
+val* var181 /* : Array[Object] */;
+long var182 /* : Int */;
+val* var183 /* : NativeArray[Object] */;
+val* var184 /* : String */;
+short int var185 /* : Bool */;
+short int var186 /* : Bool */;
+static val* varonce187;
+val* var188 /* : String */;
+char* var189 /* : NativeString */;
+long var190 /* : Int */;
+val* var191 /* : FlatString */;
+val* var192 /* : Array[Object] */;
+long var193 /* : Int */;
+val* var194 /* : NativeArray[Object] */;
+val* var195 /* : String */;
+static val* varonce196;
+val* var197 /* : String */;
+char* var198 /* : NativeString */;
+long var199 /* : Int */;
+val* var200 /* : FlatString */;
+static val* varonce201;
+val* var202 /* : String */;
+char* var203 /* : NativeString */;
+long var204 /* : Int */;
+val* var205 /* : FlatString */;
+val* var206 /* : Array[Object] */;
+long var207 /* : Int */;
+val* var208 /* : NativeArray[Object] */;
+val* var209 /* : String */;
+static val* varonce210;
+val* var211 /* : String */;
+char* var212 /* : NativeString */;
+long var213 /* : Int */;
+val* var214 /* : FlatString */;
+static val* varonce215;
+val* var216 /* : String */;
+char* var217 /* : NativeString */;
+long var218 /* : Int */;
+val* var219 /* : FlatString */;
+static val* varonce220;
+val* var221 /* : String */;
+char* var222 /* : NativeString */;
+long var223 /* : Int */;
+val* var224 /* : FlatString */;
+val* var225 /* : Array[Object] */;
+long var226 /* : Int */;
+val* var227 /* : NativeArray[Object] */;
+val* var228 /* : String */;
+static val* varonce229;
+val* var230 /* : String */;
+char* var231 /* : NativeString */;
+long var232 /* : Int */;
+val* var233 /* : FlatString */;
+long var234 /* : Int */;
+long var_i /* var i: Int */;
+long var235 /* : Int */;
+long var237 /* : Int */;
+long var_238 /* var : Int */;
+short int var239 /* : Bool */;
+short int var241 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var242 /* : Bool */;
+val* var243 /* : nullable Object */;
+val* var_mpropdef /* var mpropdef: nullable MPropDef */;
+val* var244 /* : null */;
+short int var245 /* : Bool */;
+short int var246 /* : Bool */;
+val* var_other248 /* var other: nullable Object */;
+short int var249 /* : Bool */;
+short int var251 /* : Bool */;
+static val* varonce252;
+val* var253 /* : String */;
+char* var254 /* : NativeString */;
+long var255 /* : Int */;
+val* var256 /* : FlatString */;
+short int var257 /* : Bool */;
+int cltype258;
+int idtype259;
+short int var260 /* : Bool */;
+val* var261 /* : null */;
+short int var262 /* : Bool */;
+short int var263 /* : Bool */;
+short int var265 /* : Bool */;
+short int var266 /* : Bool */;
+short int var267 /* : Bool */;
+short int var_268 /* var : Bool */;
+val* var269 /* : HashSet[MMethodDef] */;
+val* var271 /* : HashSet[MMethodDef] */;
+short int var272 /* : Bool */;
+short int var273 /* : Bool */;
+static val* varonce274;
+val* var275 /* : String */;
+char* var276 /* : NativeString */;
+long var277 /* : Int */;
+val* var278 /* : FlatString */;
+val* var279 /* : MModule */;
+val* var281 /* : MModule */;
+static val* varonce282;
+val* var283 /* : String */;
+char* var284 /* : NativeString */;
+long var285 /* : Int */;
+val* var286 /* : FlatString */;
+static val* varonce287;
+val* var288 /* : String */;
+char* var289 /* : NativeString */;
+long var290 /* : Int */;
+val* var291 /* : FlatString */;
+static val* varonce292;
+val* var293 /* : String */;
+char* var294 /* : NativeString */;
+long var295 /* : Int */;
+val* var296 /* : FlatString */;
+val* var297 /* : Array[Object] */;
+long var298 /* : Int */;
+val* var299 /* : NativeArray[Object] */;
+val* var300 /* : String */;
+short int var301 /* : Bool */;
+short int var302 /* : Bool */;
+short int var_303 /* var : Bool */;
+val* var304 /* : MClassDef */;
+val* var306 /* : MClassDef */;
+val* var307 /* : MClassType */;
+val* var309 /* : MClassType */;
+val* var310 /* : String */;
+static val* varonce311;
+val* var312 /* : String */;
+char* var313 /* : NativeString */;
+long var314 /* : Int */;
+val* var315 /* : FlatString */;
+short int var316 /* : Bool */;
+short int var317 /* : Bool */;
+short int var319 /* : Bool */;
+short int var320 /* : Bool */;
+short int var321 /* : Bool */;
+static val* varonce322;
+val* var323 /* : String */;
+char* var324 /* : NativeString */;
+long var325 /* : Int */;
+val* var326 /* : FlatString */;
+val* var327 /* : String */;
+val* var328 /* : Array[Object] */;
+long var329 /* : Int */;
+val* var330 /* : NativeArray[Object] */;
+val* var331 /* : String */;
+static val* varonce332;
+val* var333 /* : String */;
+char* var334 /* : NativeString */;
+long var335 /* : Int */;
+val* var336 /* : FlatString */;
+val* var337 /* : String */;
+static val* varonce338;
+val* var339 /* : String */;
+char* var340 /* : NativeString */;
+long var341 /* : Int */;
+val* var342 /* : FlatString */;
+val* var343 /* : MModule */;
+val* var345 /* : MModule */;
+static val* varonce346;
+val* var347 /* : String */;
+char* var348 /* : NativeString */;
+long var349 /* : Int */;
+val* var350 /* : FlatString */;
+static val* varonce351;
+val* var352 /* : String */;
+char* var353 /* : NativeString */;
+long var354 /* : Int */;
+val* var355 /* : FlatString */;
+static val* varonce356;
+val* var357 /* : String */;
+char* var358 /* : NativeString */;
+long var359 /* : Int */;
+val* var360 /* : FlatString */;
+val* var361 /* : Array[Object] */;
+long var362 /* : Int */;
+val* var363 /* : NativeArray[Object] */;
+val* var364 /* : String */;
+val* var365 /* : String */;
+val* var366 /* : Array[Object] */;
+long var367 /* : Int */;
+val* var368 /* : NativeArray[Object] */;
+val* var369 /* : String */;
+static val* varonce370;
+val* var371 /* : String */;
+char* var372 /* : NativeString */;
+long var373 /* : Int */;
+val* var374 /* : FlatString */;
+val* var375 /* : String */;
+static val* varonce376;
+val* var377 /* : String */;
+char* var378 /* : NativeString */;
+long var379 /* : Int */;
+val* var380 /* : FlatString */;
+val* var381 /* : MModule */;
+val* var383 /* : MModule */;
+static val* varonce384;
+val* var385 /* : String */;
+char* var386 /* : NativeString */;
+long var387 /* : Int */;
+val* var388 /* : FlatString */;
+static val* varonce389;
+val* var390 /* : String */;
+char* var391 /* : NativeString */;
+long var392 /* : Int */;
+val* var393 /* : FlatString */;
+static val* varonce394;
+val* var395 /* : String */;
+char* var396 /* : NativeString */;
+long var397 /* : Int */;
+val* var398 /* : FlatString */;
+val* var399 /* : Array[Object] */;
+long var400 /* : Int */;
+val* var401 /* : NativeArray[Object] */;
+val* var402 /* : String */;
+long var403 /* : Int */;
+long var404 /* : Int */;
+static val* varonce406;
+val* var407 /* : String */;
+char* var408 /* : NativeString */;
+long var409 /* : Int */;
+val* var410 /* : FlatString */;
+static val* varonce411;
+val* var412 /* : String */;
+char* var413 /* : NativeString */;
+long var414 /* : Int */;
+val* var415 /* : FlatString */;
+static val* varonce416;
+val* var417 /* : String */;
+char* var418 /* : NativeString */;
+long var419 /* : Int */;
+val* var420 /* : FlatString */;
+static val* varonce421;
+val* var422 /* : String */;
+char* var423 /* : NativeString */;
+long var424 /* : Int */;
+val* var425 /* : FlatString */;
+val* var426 /* : Array[Object] */;
+long var427 /* : Int */;
+val* var428 /* : NativeArray[Object] */;
+val* var429 /* : String */;
+long var430 /* : Int */;
+long var432 /* : Int */;
+static val* varonce433;
+val* var434 /* : String */;
+char* var435 /* : NativeString */;
+long var436 /* : Int */;
+val* var437 /* : FlatString */;
+val* var438 /* : Array[Object] */;
+long var439 /* : Int */;
+val* var440 /* : NativeArray[Object] */;
+val* var441 /* : Object */;
+val* var442 /* : String */;
+static val* varonce443;
+val* var444 /* : String */;
+char* var445 /* : NativeString */;
+long var446 /* : Int */;
+val* var447 /* : FlatString */;
+val* var_448 /* var : Array[nullable MClass] */;
+val* var449 /* : ArrayIterator[nullable Object] */;
+val* var_450 /* var : ArrayIterator[nullable MClass] */;
+short int var451 /* : Bool */;
+val* var452 /* : nullable Object */;
+val* var_msuper /* var msuper: nullable MClass */;
+val* var453 /* : null */;
+short int var454 /* : Bool */;
+short int var455 /* : Bool */;
+short int var457 /* : Bool */;
+short int var459 /* : Bool */;
+static val* varonce460;
+val* var461 /* : String */;
+char* var462 /* : NativeString */;
+long var463 /* : Int */;
+val* var464 /* : FlatString */;
+val* var465 /* : Map[MClass, Int] */;
+val* var467 /* : Map[MClass, Int] */;
+val* var468 /* : nullable Object */;
+static val* varonce469;
+val* var470 /* : String */;
+char* var471 /* : NativeString */;
+long var472 /* : Int */;
+val* var473 /* : FlatString */;
+static val* varonce474;
+val* var475 /* : String */;
+char* var476 /* : NativeString */;
+long var477 /* : Int */;
+val* var478 /* : FlatString */;
+val* var479 /* : Array[Object] */;
+long var480 /* : Int */;
+val* var481 /* : NativeArray[Object] */;
+val* var482 /* : String */;
+static val* varonce485;
+val* var486 /* : String */;
+char* var487 /* : NativeString */;
+long var488 /* : Int */;
+val* var489 /* : FlatString */;
+static val* varonce490;
+val* var491 /* : String */;
+char* var492 /* : NativeString */;
+long var493 /* : Int */;
+val* var494 /* : FlatString */;
+short int var495 /* : Bool */;
+val* var496 /* : String */;
+static val* varonce497;
+val* var498 /* : String */;
+char* var499 /* : NativeString */;
+long var500 /* : Int */;
+val* var501 /* : FlatString */;
+short int var502 /* : Bool */;
+short int var503 /* : Bool */;
+short int var505 /* : Bool */;
+short int var506 /* : Bool */;
+short int var507 /* : Bool */;
+short int var_508 /* var : Bool */;
+val* var509 /* : MClass */;
+val* var511 /* : MClass */;
+val* var512 /* : String */;
+val* var514 /* : String */;
+static val* varonce515;
+val* var516 /* : String */;
+char* var517 /* : NativeString */;
+long var518 /* : Int */;
+val* var519 /* : FlatString */;
+short int var520 /* : Bool */;
+short int var521 /* : Bool */;
+val* var522 /* : CodeWriter */;
+val* var524 /* : CodeWriter */;
+static val* varonce525;
+val* var526 /* : String */;
+char* var527 /* : NativeString */;
+long var528 /* : Int */;
+val* var529 /* : FlatString */;
+static val* varonce530;
+val* var531 /* : String */;
+char* var532 /* : NativeString */;
+long var533 /* : Int */;
+val* var534 /* : FlatString */;
+val* var535 /* : Array[Object] */;
+long var536 /* : Int */;
+val* var537 /* : NativeArray[Object] */;
+val* var538 /* : String */;
+val* var539 /* : CodeWriter */;
+val* var541 /* : CodeWriter */;
+static val* varonce542;
+val* var543 /* : String */;
+char* var544 /* : NativeString */;
+long var545 /* : Int */;
+val* var546 /* : FlatString */;
+val* var547 /* : CodeWriter */;
+val* var549 /* : CodeWriter */;
+val* var550 /* : String */;
+static val* varonce551;
+val* var552 /* : String */;
+char* var553 /* : NativeString */;
+long var554 /* : Int */;
+val* var555 /* : FlatString */;
+val* var556 /* : Array[Object] */;
+long var557 /* : Int */;
+val* var558 /* : NativeArray[Object] */;
+val* var559 /* : String */;
+val* var560 /* : CodeWriter */;
+val* var562 /* : CodeWriter */;
+static val* varonce563;
+val* var564 /* : String */;
+char* var565 /* : NativeString */;
+long var566 /* : Int */;
+val* var567 /* : FlatString */;
+static val* varonce568;
+val* var569 /* : String */;
+char* var570 /* : NativeString */;
+long var571 /* : Int */;
+val* var572 /* : FlatString */;
+val* var573 /* : Array[Object] */;
+long var574 /* : Int */;
+val* var575 /* : NativeArray[Object] */;
+val* var576 /* : String */;
+static val* varonce577;
+val* var578 /* : String */;
+char* var579 /* : NativeString */;
+long var580 /* : Int */;
+val* var581 /* : FlatString */;
+static val* varonce582;
+val* var583 /* : String */;
+char* var584 /* : NativeString */;
+long var585 /* : Int */;
+val* var586 /* : FlatString */;
+val* var587 /* : String */;
+static val* varonce588;
+val* var589 /* : String */;
+char* var590 /* : NativeString */;
+long var591 /* : Int */;
+val* var592 /* : FlatString */;
+val* var593 /* : Array[Object] */;
+long var594 /* : Int */;
+val* var595 /* : NativeArray[Object] */;
+val* var596 /* : String */;
+static val* varonce597;
+val* var598 /* : String */;
+char* var599 /* : NativeString */;
+long var600 /* : Int */;
+val* var601 /* : FlatString */;
+static val* varonce602;
+val* var603 /* : String */;
+char* var604 /* : NativeString */;
+long var605 /* : Int */;
+val* var606 /* : FlatString */;
+val* var607 /* : Array[Object] */;
+long var608 /* : Int */;
+val* var609 /* : NativeArray[Object] */;
+val* var610 /* : String */;
+static val* varonce611;
+val* var612 /* : String */;
+char* var613 /* : NativeString */;
+long var614 /* : Int */;
+val* var615 /* : FlatString */;
+val* var616 /* : String */;
+static val* varonce617;
+val* var618 /* : String */;
+char* var619 /* : NativeString */;
+long var620 /* : Int */;
+val* var621 /* : FlatString */;
+val* var622 /* : String */;
+static val* varonce623;
+val* var624 /* : String */;
+char* var625 /* : NativeString */;
+long var626 /* : Int */;
+val* var627 /* : FlatString */;
+val* var628 /* : Array[Object] */;
+long var629 /* : Int */;
+val* var630 /* : NativeArray[Object] */;
+val* var631 /* : String */;
+static val* varonce632;
+val* var633 /* : String */;
+char* var634 /* : NativeString */;
+long var635 /* : Int */;
+val* var636 /* : FlatString */;
+static val* varonce637;
+val* var638 /* : String */;
+char* var639 /* : NativeString */;
+long var640 /* : Int */;
+val* var641 /* : FlatString */;
+static val* varonce642;
+val* var643 /* : String */;
+char* var644 /* : NativeString */;
+long var645 /* : Int */;
+val* var646 /* : FlatString */;
+val* var647 /* : Array[Object] */;
+long var648 /* : Int */;
+val* var649 /* : NativeArray[Object] */;
+val* var650 /* : String */;
+static val* varonce651;
+val* var652 /* : String */;
+char* var653 /* : NativeString */;
+long var654 /* : Int */;
+val* var655 /* : FlatString */;
+val* var656 /* : Array[Object] */;
+long var657 /* : Int */;
+val* var658 /* : NativeArray[Object] */;
+val* var659 /* : String */;
+static val* varonce660;
+val* var661 /* : String */;
+char* var662 /* : NativeString */;
+long var663 /* : Int */;
+val* var664 /* : FlatString */;
+static val* varonce665;
+val* var666 /* : String */;
+char* var667 /* : NativeString */;
+long var668 /* : Int */;
+val* var669 /* : FlatString */;
+val* var670 /* : Array[Object] */;
+long var671 /* : Int */;
+val* var672 /* : NativeArray[Object] */;
+val* var673 /* : String */;
+static val* varonce674;
+val* var675 /* : String */;
+char* var676 /* : NativeString */;
+long var677 /* : Int */;
+val* var678 /* : FlatString */;
+static val* varonce679;
+val* var680 /* : String */;
+char* var681 /* : NativeString */;
+long var682 /* : Int */;
+val* var683 /* : FlatString */;
+static val* varonce684;
+val* var685 /* : String */;
+char* var686 /* : NativeString */;
+long var687 /* : Int */;
+val* var688 /* : FlatString */;
+val* var689 /* : MClass */;
+val* var691 /* : MClass */;
+val* var692 /* : String */;
+val* var694 /* : String */;
+static val* varonce695;
+val* var696 /* : String */;
+char* var697 /* : NativeString */;
+long var698 /* : Int */;
+val* var699 /* : FlatString */;
+short int var700 /* : Bool */;
+short int var701 /* : Bool */;
+short int var703 /* : Bool */;
+short int var704 /* : Bool */;
+short int var705 /* : Bool */;
+val* var706 /* : SeparateCompilerVisitor */;
+static val* varonce707;
+val* var708 /* : String */;
+char* var709 /* : NativeString */;
+long var710 /* : Int */;
+val* var711 /* : FlatString */;
+val* var712 /* : Array[Object] */;
+long var713 /* : Int */;
+val* var714 /* : NativeArray[Object] */;
+val* var715 /* : String */;
+val* var716 /* : String */;
+static val* varonce717;
+val* var718 /* : String */;
+char* var719 /* : NativeString */;
+long var720 /* : Int */;
+val* var721 /* : FlatString */;
+static val* varonce722;
+val* var723 /* : String */;
+char* var724 /* : NativeString */;
+long var725 /* : Int */;
+val* var726 /* : FlatString */;
+val* var727 /* : Array[Object] */;
+long var728 /* : Int */;
+val* var729 /* : NativeArray[Object] */;
+val* var730 /* : String */;
+static val* varonce731;
+val* var732 /* : String */;
+char* var733 /* : NativeString */;
+long var734 /* : Int */;
+val* var735 /* : FlatString */;
+static val* varonce736;
+val* var737 /* : String */;
+char* var738 /* : NativeString */;
+long var739 /* : Int */;
+val* var740 /* : FlatString */;
+val* var741 /* : Array[Object] */;
+long var742 /* : Int */;
+val* var743 /* : NativeArray[Object] */;
+val* var744 /* : String */;
+val* var745 /* : String */;
+static val* varonce746;
+val* var747 /* : String */;
+char* var748 /* : NativeString */;
+long var749 /* : Int */;
+val* var750 /* : FlatString */;
+static val* varonce751;
+val* var752 /* : String */;
+char* var753 /* : NativeString */;
+long var754 /* : Int */;
+val* var755 /* : FlatString */;
+val* var756 /* : Array[Object] */;
+long var757 /* : Int */;
+val* var758 /* : NativeArray[Object] */;
+val* var759 /* : String */;
+static val* varonce760;
+val* var761 /* : String */;
+char* var762 /* : NativeString */;
+long var763 /* : Int */;
+val* var764 /* : FlatString */;
+val* var765 /* : Array[Object] */;
+long var766 /* : Int */;
+val* var767 /* : NativeArray[Object] */;
+val* var768 /* : String */;
+static val* varonce769;
+val* var770 /* : String */;
+char* var771 /* : NativeString */;
+long var772 /* : Int */;
+val* var773 /* : FlatString */;
+val* var774 /* : RuntimeVariable */;
+val* var_res /* var res: RuntimeVariable */;
+short int var775 /* : Bool */;
+static val* varonce777;
+val* var778 /* : String */;
+char* var779 /* : NativeString */;
+long var780 /* : Int */;
+val* var781 /* : FlatString */;
+val* var782 /* : String */;
+static val* varonce783;
+val* var784 /* : String */;
+char* var785 /* : NativeString */;
+long var786 /* : Int */;
+val* var787 /* : FlatString */;
+val* var788 /* : Array[Object] */;
+long var789 /* : Int */;
+val* var790 /* : NativeArray[Object] */;
+val* var791 /* : String */;
+static val* varonce792;
+val* var793 /* : String */;
+char* var794 /* : NativeString */;
+long var795 /* : Int */;
+val* var796 /* : FlatString */;
+val* var797 /* : Array[Object] */;
+long var798 /* : Int */;
+val* var799 /* : NativeArray[Object] */;
+val* var800 /* : String */;
+static val* varonce801;
+val* var802 /* : String */;
+char* var803 /* : NativeString */;
+long var804 /* : Int */;
+val* var805 /* : FlatString */;
+static val* varonce806;
+val* var807 /* : String */;
+char* var808 /* : NativeString */;
+long var809 /* : Int */;
+val* var810 /* : FlatString */;
+val* var811 /* : Array[Object] */;
+long var812 /* : Int */;
+val* var813 /* : NativeArray[Object] */;
+val* var814 /* : String */;
+static val* varonce815;
+val* var816 /* : String */;
+char* var817 /* : NativeString */;
+long var818 /* : Int */;
+val* var819 /* : FlatString */;
+val* var820 /* : String */;
+static val* varonce821;
+val* var822 /* : String */;
+char* var823 /* : NativeString */;
+long var824 /* : Int */;
+val* var825 /* : FlatString */;
+static val* varonce826;
+val* var827 /* : String */;
+char* var828 /* : NativeString */;
+long var829 /* : Int */;
+val* var830 /* : FlatString */;
+val* var831 /* : Array[Object] */;
+long var832 /* : Int */;
+val* var833 /* : NativeArray[Object] */;
+val* var834 /* : String */;
+static val* varonce835;
+val* var836 /* : String */;
+char* var837 /* : NativeString */;
+long var838 /* : Int */;
+val* var839 /* : FlatString */;
+static val* varonce840;
+val* var841 /* : String */;
+char* var842 /* : NativeString */;
+long var843 /* : Int */;
+val* var844 /* : FlatString */;
+val* var845 /* : Array[Object] */;
+long var846 /* : Int */;
+val* var847 /* : NativeArray[Object] */;
+val* var848 /* : String */;
+static val* varonce849;
+val* var850 /* : String */;
+char* var851 /* : NativeString */;
+long var852 /* : Int */;
+val* var853 /* : FlatString */;
+val* var854 /* : String */;
+val* var856 /* : String */;
+static val* varonce857;
+val* var858 /* : String */;
+char* var859 /* : NativeString */;
+long var860 /* : Int */;
+val* var861 /* : FlatString */;
+short int var862 /* : Bool */;
+short int var863 /* : Bool */;
+val* var864 /* : CodeWriter */;
+val* var866 /* : CodeWriter */;
+static val* varonce867;
+val* var868 /* : String */;
+char* var869 /* : NativeString */;
+long var870 /* : Int */;
+val* var871 /* : FlatString */;
+static val* varonce872;
+val* var873 /* : String */;
+char* var874 /* : NativeString */;
+long var875 /* : Int */;
+val* var876 /* : FlatString */;
+val* var877 /* : Array[Object] */;
+long var878 /* : Int */;
+val* var879 /* : NativeArray[Object] */;
+val* var880 /* : String */;
+val* var881 /* : CodeWriter */;
+val* var883 /* : CodeWriter */;
+static val* varonce884;
+val* var885 /* : String */;
+char* var886 /* : NativeString */;
+long var887 /* : Int */;
+val* var888 /* : FlatString */;
+val* var889 /* : CodeWriter */;
+val* var891 /* : CodeWriter */;
+static val* varonce892;
+val* var893 /* : String */;
+char* var894 /* : NativeString */;
+long var895 /* : Int */;
+val* var896 /* : FlatString */;
+val* var897 /* : CodeWriter */;
+val* var899 /* : CodeWriter */;
+static val* varonce900;
+val* var901 /* : String */;
+char* var902 /* : NativeString */;
+long var903 /* : Int */;
+val* var904 /* : FlatString */;
+val* var905 /* : CodeWriter */;
+val* var907 /* : CodeWriter */;
+static val* varonce908;
+val* var909 /* : String */;
+char* var910 /* : NativeString */;
+long var911 /* : Int */;
+val* var912 /* : FlatString */;
+static val* varonce913;
+val* var914 /* : String */;
+char* var915 /* : NativeString */;
+long var916 /* : Int */;
+val* var917 /* : FlatString */;
+val* var918 /* : Array[Object] */;
+long var919 /* : Int */;
+val* var920 /* : NativeArray[Object] */;
+val* var921 /* : String */;
+val* var922 /* : String */;
+static val* varonce923;
+val* var924 /* : String */;
+char* var925 /* : NativeString */;
+long var926 /* : Int */;
+val* var927 /* : FlatString */;
+static val* varonce928;
+val* var929 /* : String */;
+char* var930 /* : NativeString */;
+long var931 /* : Int */;
+val* var932 /* : FlatString */;
+val* var933 /* : Array[Object] */;
+long var934 /* : Int */;
+val* var935 /* : NativeArray[Object] */;
+val* var936 /* : String */;
+static val* varonce937;
+val* var938 /* : String */;
+char* var939 /* : NativeString */;
+long var940 /* : Int */;
+val* var941 /* : FlatString */;
+static val* varonce942;
+val* var943 /* : String */;
+char* var944 /* : NativeString */;
+long var945 /* : Int */;
+val* var946 /* : FlatString */;
+val* var947 /* : Array[Object] */;
+long var948 /* : Int */;
+val* var949 /* : NativeArray[Object] */;
+val* var950 /* : String */;
+val* var951 /* : String */;
+static val* varonce952;
+val* var953 /* : String */;
+char* var954 /* : NativeString */;
+long var955 /* : Int */;
+val* var956 /* : FlatString */;
+static val* varonce957;
+val* var958 /* : String */;
+char* var959 /* : NativeString */;
+long var960 /* : Int */;
+val* var961 /* : FlatString */;
+val* var962 /* : Array[Object] */;
+long var963 /* : Int */;
+val* var964 /* : NativeArray[Object] */;
+val* var965 /* : String */;
+static val* varonce966;
+val* var967 /* : String */;
+char* var968 /* : NativeString */;
+long var969 /* : Int */;
+val* var970 /* : FlatString */;
+val* var971 /* : String */;
+val* var_res972 /* var res: String */;
+static val* varonce973;
+val* var974 /* : String */;
+char* var975 /* : NativeString */;
+long var976 /* : Int */;
+val* var977 /* : FlatString */;
+static val* varonce978;
+val* var979 /* : String */;
+char* var980 /* : NativeString */;
+long var981 /* : Int */;
+val* var982 /* : FlatString */;
+static val* varonce983;
+val* var984 /* : String */;
+char* var985 /* : NativeString */;
+long var986 /* : Int */;
+val* var987 /* : FlatString */;
+val* var988 /* : Array[Object] */;
+long var989 /* : Int */;
+val* var990 /* : NativeArray[Object] */;
+val* var991 /* : String */;
+val* var992 /* : Array[MType] */;
+val* var994 /* : Array[MType] */;
+val* var995 /* : nullable Object */;
+val* var_mtype_elt /* var mtype_elt: MType */;
+static val* varonce996;
+val* var997 /* : String */;
+char* var998 /* : NativeString */;
+long var999 /* : Int */;
+val* var1000 /* : FlatString */;
+static val* varonce1001;
+val* var1002 /* : String */;
+char* var1003 /* : NativeString */;
+long var1004 /* : Int */;
+val* var1005 /* : FlatString */;
+val* var1006 /* : String */;
+static val* varonce1007;
+val* var1008 /* : String */;
+char* var1009 /* : NativeString */;
+long var1010 /* : Int */;
+val* var1011 /* : FlatString */;
+val* var1012 /* : Array[Object] */;
+long var1013 /* : Int */;
+val* var1014 /* : NativeArray[Object] */;
+val* var1015 /* : String */;
+static val* varonce1016;
+val* var1017 /* : String */;
+char* var1018 /* : NativeString */;
+long var1019 /* : Int */;
+val* var1020 /* : FlatString */;
+val* var1021 /* : Array[Object] */;
+long var1022 /* : Int */;
+val* var1023 /* : NativeArray[Object] */;
+val* var1024 /* : String */;
+static val* varonce1025;
+val* var1026 /* : String */;
+char* var1027 /* : NativeString */;
+long var1028 /* : Int */;
+val* var1029 /* : FlatString */;
+static val* varonce1030;
+val* var1031 /* : String */;
+char* var1032 /* : NativeString */;
+long var1033 /* : Int */;
+val* var1034 /* : FlatString */;
+val* var1035 /* : Array[Object] */;
+long var1036 /* : Int */;
+val* var1037 /* : NativeArray[Object] */;
+val* var1038 /* : String */;
+static val* varonce1039;
+val* var1040 /* : String */;
+char* var1041 /* : NativeString */;
+long var1042 /* : Int */;
+val* var1043 /* : FlatString */;
+val* var1044 /* : Array[Object] */;
+long var1045 /* : Int */;
+val* var1046 /* : NativeArray[Object] */;
+val* var1047 /* : String */;
+static val* varonce1048;
+val* var1049 /* : String */;
+char* var1050 /* : NativeString */;
+long var1051 /* : Int */;
+val* var1052 /* : FlatString */;
+static val* varonce1053;
+val* var1054 /* : String */;
+char* var1055 /* : NativeString */;
+long var1056 /* : Int */;
+val* var1057 /* : FlatString */;
+val* var1058 /* : Array[Object] */;
+long var1059 /* : Int */;
+val* var1060 /* : NativeArray[Object] */;
+val* var1061 /* : String */;
+static val* varonce1062;
+val* var1063 /* : String */;
+char* var1064 /* : NativeString */;
+long var1065 /* : Int */;
+val* var1066 /* : FlatString */;
+short int var1067 /* : Bool */;
+val* var1068 /* : MClass */;
+val* var1070 /* : MClass */;
+val* var1071 /* : MClassKind */;
+val* var1073 /* : MClassKind */;
+val* var1074 /* : MClassKind */;
+short int var1075 /* : Bool */;
+short int var1076 /* : Bool */;
+short int var1078 /* : Bool */;
+short int var1080 /* : Bool */;
+short int var_1081 /* var : Bool */;
+val* var1082 /* : MClass */;
+val* var1084 /* : MClass */;
+val* var1085 /* : String */;
+val* var1087 /* : String */;
+static val* varonce1088;
+val* var1089 /* : String */;
+char* var1090 /* : NativeString */;
+long var1091 /* : Int */;
+val* var1092 /* : FlatString */;
+short int var1093 /* : Bool */;
+short int var1094 /* : Bool */;
+short int var1096 /* : Bool */;
+short int var1097 /* : Bool */;
+short int var1098 /* : Bool */;
+val* var1099 /* : MModule */;
+val* var1101 /* : MModule */;
+val* var1102 /* : MClassType */;
+short int var1104 /* : Bool */;
+val* var1105 /* : MClassType */;
+static val* varonce1106;
+val* var1107 /* : String */;
+char* var1108 /* : NativeString */;
+long var1109 /* : Int */;
+val* var1110 /* : FlatString */;
+val* var1111 /* : MClass */;
+val* var1112 /* : MClassType */;
+val* var1114 /* : MClassType */;
+val* var_pointer_type /* var pointer_type: MClassType */;
+static val* varonce1115;
+val* var1116 /* : String */;
+char* var1117 /* : NativeString */;
+long var1118 /* : Int */;
+val* var1119 /* : FlatString */;
+val* var1120 /* : Array[Object] */;
+long var1121 /* : Int */;
+val* var1122 /* : NativeArray[Object] */;
+val* var1123 /* : String */;
+val* var1124 /* : String */;
+static val* varonce1125;
+val* var1126 /* : String */;
+char* var1127 /* : NativeString */;
+long var1128 /* : Int */;
+val* var1129 /* : FlatString */;
+static val* varonce1130;
+val* var1131 /* : String */;
+char* var1132 /* : NativeString */;
+long var1133 /* : Int */;
+val* var1134 /* : FlatString */;
+val* var1135 /* : Array[Object] */;
+long var1136 /* : Int */;
+val* var1137 /* : NativeArray[Object] */;
+val* var1138 /* : String */;
+static val* varonce1139;
+val* var1140 /* : String */;
+char* var1141 /* : NativeString */;
+long var1142 /* : Int */;
+val* var1143 /* : FlatString */;
+static val* varonce1144;
+val* var1145 /* : String */;
+char* var1146 /* : NativeString */;
+long var1147 /* : Int */;
+val* var1148 /* : FlatString */;
+val* var1149 /* : Array[Object] */;
+long var1150 /* : Int */;
+val* var1151 /* : NativeArray[Object] */;
+val* var1152 /* : String */;
+val* var1153 /* : String */;
+static val* varonce1154;
+val* var1155 /* : String */;
+char* var1156 /* : NativeString */;
+long var1157 /* : Int */;
+val* var1158 /* : FlatString */;
+static val* varonce1159;
+val* var1160 /* : String */;
+char* var1161 /* : NativeString */;
+long var1162 /* : Int */;
+val* var1163 /* : FlatString */;
+val* var1164 /* : Array[Object] */;
+long var1165 /* : Int */;
+val* var1166 /* : NativeArray[Object] */;
+val* var1167 /* : String */;
+static val* varonce1168;
+val* var1169 /* : String */;
+char* var1170 /* : NativeString */;
+long var1171 /* : Int */;
+val* var1172 /* : FlatString */;
+val* var1173 /* : Array[Object] */;
+long var1174 /* : Int */;
+val* var1175 /* : NativeArray[Object] */;
+val* var1176 /* : String */;
+static val* varonce1177;
+val* var1178 /* : String */;
+char* var1179 /* : NativeString */;
+long var1180 /* : Int */;
+val* var1181 /* : FlatString */;
+val* var1182 /* : RuntimeVariable */;
+val* var_res1183 /* var res: RuntimeVariable */;
+short int var1184 /* : Bool */;
+static val* varonce1186;
+val* var1187 /* : String */;
+char* var1188 /* : NativeString */;
+long var1189 /* : Int */;
+val* var1190 /* : FlatString */;
+val* var1191 /* : String */;
+static val* varonce1192;
+val* var1193 /* : String */;
+char* var1194 /* : NativeString */;
+long var1195 /* : Int */;
+val* var1196 /* : FlatString */;
+val* var1197 /* : Array[Object] */;
+long var1198 /* : Int */;
+val* var1199 /* : NativeArray[Object] */;
+val* var1200 /* : String */;
+static val* varonce1201;
+val* var1202 /* : String */;
+char* var1203 /* : NativeString */;
+long var1204 /* : Int */;
+val* var1205 /* : FlatString */;
+val* var1206 /* : Array[Object] */;
+long var1207 /* : Int */;
+val* var1208 /* : NativeArray[Object] */;
+val* var1209 /* : String */;
+static val* varonce1210;
+val* var1211 /* : String */;
+char* var1212 /* : NativeString */;
+long var1213 /* : Int */;
+val* var1214 /* : FlatString */;
+static val* varonce1215;
+val* var1216 /* : String */;
+char* var1217 /* : NativeString */;
+long var1218 /* : Int */;
+val* var1219 /* : FlatString */;
+val* var1220 /* : Array[Object] */;
+long var1221 /* : Int */;
+val* var1222 /* : NativeArray[Object] */;
+val* var1223 /* : String */;
+static val* varonce1224;
+val* var1225 /* : String */;
+char* var1226 /* : NativeString */;
+long var1227 /* : Int */;
+val* var1228 /* : FlatString */;
+val* var1229 /* : String */;
+static val* varonce1230;
+val* var1231 /* : String */;
+char* var1232 /* : NativeString */;
+long var1233 /* : Int */;
+val* var1234 /* : FlatString */;
+static val* varonce1235;
+val* var1236 /* : String */;
+char* var1237 /* : NativeString */;
+long var1238 /* : Int */;
+val* var1239 /* : FlatString */;
+val* var1240 /* : Array[Object] */;
+long var1241 /* : Int */;
+val* var1242 /* : NativeArray[Object] */;
+val* var1243 /* : String */;
+static val* varonce1244;
+val* var1245 /* : String */;
+char* var1246 /* : NativeString */;
+long var1247 /* : Int */;
+val* var1248 /* : FlatString */;
+static val* varonce1249;
+val* var1250 /* : String */;
+char* var1251 /* : NativeString */;
+long var1252 /* : Int */;
+val* var1253 /* : FlatString */;
+val* var1254 /* : Array[Object] */;
+long var1255 /* : Int */;
+val* var1256 /* : NativeArray[Object] */;
+val* var1257 /* : String */;
+static val* varonce1258;
+val* var1259 /* : String */;
+char* var1260 /* : NativeString */;
+long var1261 /* : Int */;
+val* var1262 /* : FlatString */;
+static val* varonce1263;
+val* var1264 /* : String */;
+char* var1265 /* : NativeString */;
+long var1266 /* : Int */;
+val* var1267 /* : FlatString */;
+val* var1268 /* : Array[Object] */;
+long var1269 /* : Int */;
+val* var1270 /* : NativeArray[Object] */;
+val* var1271 /* : String */;
+val* var1272 /* : String */;
+static val* varonce1273;
+val* var1274 /* : String */;
+char* var1275 /* : NativeString */;
+long var1276 /* : Int */;
+val* var1277 /* : FlatString */;
+static val* varonce1278;
+val* var1279 /* : String */;
+char* var1280 /* : NativeString */;
+long var1281 /* : Int */;
+val* var1282 /* : FlatString */;
+val* var1283 /* : Array[Object] */;
+long var1284 /* : Int */;
+val* var1285 /* : NativeArray[Object] */;
+val* var1286 /* : String */;
+static val* varonce1287;
+val* var1288 /* : String */;
+char* var1289 /* : NativeString */;
+long var1290 /* : Int */;
+val* var1291 /* : FlatString */;
+static val* varonce1292;
+val* var1293 /* : String */;
+char* var1294 /* : NativeString */;
+long var1295 /* : Int */;
+val* var1296 /* : FlatString */;
+val* var1297 /* : Array[Object] */;
+long var1298 /* : Int */;
+val* var1299 /* : NativeArray[Object] */;
+val* var1300 /* : String */;
+val* var1301 /* : String */;
+static val* varonce1302;
+val* var1303 /* : String */;
+char* var1304 /* : NativeString */;
+long var1305 /* : Int */;
+val* var1306 /* : FlatString */;
+static val* varonce1307;
+val* var1308 /* : String */;
+char* var1309 /* : NativeString */;
+long var1310 /* : Int */;
+val* var1311 /* : FlatString */;
+val* var1312 /* : Array[Object] */;
+long var1313 /* : Int */;
+val* var1314 /* : NativeArray[Object] */;
+val* var1315 /* : String */;
+static val* varonce1316;
+val* var1317 /* : String */;
+char* var1318 /* : NativeString */;
+long var1319 /* : Int */;
+val* var1320 /* : FlatString */;
+val* var1321 /* : Array[Object] */;
+long var1322 /* : Int */;
+val* var1323 /* : NativeArray[Object] */;
+val* var1324 /* : String */;
+static val* varonce1325;
+val* var1326 /* : String */;
+char* var1327 /* : NativeString */;
+long var1328 /* : Int */;
+val* var1329 /* : FlatString */;
+val* var1330 /* : RuntimeVariable */;
+val* var_res1331 /* var res: RuntimeVariable */;
+short int var1332 /* : Bool */;
+static val* varonce1334;
+val* var1335 /* : String */;
+char* var1336 /* : NativeString */;
+long var1337 /* : Int */;
+val* var1338 /* : FlatString */;
+long var1339 /* : Int */;
+long var1341 /* : Int */;
+static val* varonce1342;
+val* var1343 /* : String */;
+char* var1344 /* : NativeString */;
+long var1345 /* : Int */;
+val* var1346 /* : FlatString */;
+val* var1347 /* : Array[Object] */;
+long var1348 /* : Int */;
+val* var1349 /* : NativeArray[Object] */;
+val* var1350 /* : Object */;
+val* var1351 /* : String */;
+static val* varonce1352;
+val* var1353 /* : String */;
+char* var1354 /* : NativeString */;
+long var1355 /* : Int */;
+val* var1356 /* : FlatString */;
+val* var1357 /* : Array[Object] */;
+long var1358 /* : Int */;
+val* var1359 /* : NativeArray[Object] */;
+val* var1360 /* : String */;
+static val* varonce1361;
+val* var1362 /* : String */;
+char* var1363 /* : NativeString */;
+long var1364 /* : Int */;
+val* var1365 /* : FlatString */;
+static val* varonce1366;
+val* var1367 /* : String */;
+char* var1368 /* : NativeString */;
+long var1369 /* : Int */;
+val* var1370 /* : FlatString */;
+val* var1371 /* : Array[Object] */;
+long var1372 /* : Int */;
+val* var1373 /* : NativeArray[Object] */;
+val* var1374 /* : String */;
+static val* varonce1375;
+val* var1376 /* : String */;
+char* var1377 /* : NativeString */;
+long var1378 /* : Int */;
+val* var1379 /* : FlatString */;
+static val* varonce1380;
+val* var1381 /* : String */;
+char* var1382 /* : NativeString */;
+long var1383 /* : Int */;
+val* var1384 /* : FlatString */;
+val* var1385 /* : Array[Object] */;
+long var1386 /* : Int */;
+val* var1387 /* : NativeArray[Object] */;
+val* var1388 /* : String */;
+static val* varonce1389;
+val* var1390 /* : String */;
+char* var1391 /* : NativeString */;
+long var1392 /* : Int */;
+val* var1393 /* : FlatString */;
+var_mclass = p0;
+{
+{ /* Inline model#MClass#intro (var_mclass) on <var_mclass:MClass> */
+var2 = var_mclass->attrs[COLOR_model__MClass___intro].val; /* _intro on <var_mclass:MClass> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var) on <var:MClassDef> */
+var5 = var->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var:MClassDef> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
+show_backtrace(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+var_mtype = var3;
+{
+var6 = abstract_compiler__MClass__c_name(var_mclass);
+}
+var_c_name = var6;
+{
+{ /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:SeparateErasureCompiler> */
+var9 = self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateErasureCompiler> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 845);
+show_backtrace(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+var10 = ((val* (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var7, var_mclass) /* [] on <var7:Map[MClass, Array[nullable MPropDef]]>*/;
+}
+var_vft = var10;
+{
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:SeparateErasureCompiler> */
+var13 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateErasureCompiler> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 846);
+show_backtrace(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+var14 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_mclass) /* [] on <var11:Map[MClass, Array[nullable MPropDef]]>*/;
+}
+var_attrs = var14;
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_tables (self) on <self:SeparateErasureCompiler> */
+var17 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables].val; /* _class_tables on <self:SeparateErasureCompiler> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 441);
+show_backtrace(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+var18 = ((val* (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var15, var_mclass) /* [] on <var15:Map[MClass, Array[nullable MClass]]>*/;
+}
+var_class_table = var18;
+{
+var19 = separate_erasure_compiler__SeparateErasureCompiler__new_visitor(self);
+}
+var_v = var19;
+{
+{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateErasureCompiler> */
+var22 = self->attrs[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateErasureCompiler> */
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+var_rta = var20;
+var23 = 0;
+var_is_dead = var23;
+var28 = !var_is_dead;
+var_ = var28;
+if (var28){
+var29 = NULL;
+if (var_rta == NULL) {
+var30 = 0; /* is null */
+} else {
+var30 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_rta,var29) on <var_rta:nullable RapidTypeAnalysis> */
+var_other = var29;
+{
+var34 = ((short int (*)(val*, val*))(var_rta->class->vft[COLOR_kernel__Object___61d_61d]))(var_rta, var_other) /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
+var33 = var34;
+}
+var35 = !var33;
+var31 = var35;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+var30 = var31;
+}
+var27 = var30;
+} else {
+var27 = var_;
+}
+var_36 = var27;
+if (var27){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var39 = var_rta->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var39 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 62);
+show_backtrace(1);
+}
+var37 = var39;
+RET_LABEL38:(void)0;
+}
+}
+{
+var40 = hash_collection__HashSet__has(var37, var_mclass);
+}
+var41 = !var40;
+var26 = var41;
+} else {
+var26 = var_36;
+}
+var_42 = var26;
+if (var26){
+{
+var43 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce) {
+var44 = varonce;
+} else {
+var45 = "val*";
+var46 = 4;
+var47 = string__NativeString__to_s_with_length(var45, var46);
+var44 = var47;
+varonce = var44;
+}
+{
+var49 = string__FlatString___61d_61d(var43, var44);
+var48 = var49;
+}
+var25 = var48;
+} else {
+var25 = var_42;
+}
+var_50 = var25;
+if (var25){
+{
+{ /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
+var53 = var_mclass->attrs[COLOR_model__MClass___name].val; /* _name on <var_mclass:MClass> */
+if (unlikely(var53 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
+show_backtrace(1);
+}
+var51 = var53;
+RET_LABEL52:(void)0;
+}
+}
+if (varonce54) {
+var55 = varonce54;
+} else {
+var56 = "NativeArray";
+var57 = 11;
+var58 = string__NativeString__to_s_with_length(var56, var57);
+var55 = var58;
+varonce54 = var55;
+}
+{
+{ /* Inline kernel#Object#!= (var51,var55) on <var51:String> */
+var_other = var55;
+{
+var63 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_kernel__Object___61d_61d]))(var51, var_other) /* == on <var51:String>*/;
+var62 = var63;
+}
+var64 = !var62;
+var60 = var64;
+goto RET_LABEL61;
+RET_LABEL61:(void)0;
+}
+var59 = var60;
+}
+var24 = var59;
+} else {
+var24 = var_50;
+}
+if (var24){
+var65 = 1;
+var_is_dead = var65;
+} else {
+}
+if (varonce66) {
+var67 = varonce66;
+} else {
+var68 = "/* runtime class ";
+var69 = 17;
+var70 = string__NativeString__to_s_with_length(var68, var69);
+var67 = var70;
+varonce66 = var67;
+}
+if (varonce71) {
+var72 = varonce71;
+} else {
+var73 = " */";
+var74 = 3;
+var75 = string__NativeString__to_s_with_length(var73, var74);
+var72 = var75;
+varonce71 = var72;
+}
+var76 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var76 = array_instance Array[Object] */
+var77 = 3;
+var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var78)->values[0] = (val*) var67;
+((struct instance_array__NativeArray*)var78)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var78)->values[2] = (val*) var72;
+{
+((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
+}
+}
+{
+var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce80) {
+var81 = varonce80;
+} else {
+var82 = "class_";
+var83 = 6;
+var84 = string__NativeString__to_s_with_length(var82, var83);
+var81 = var84;
+varonce80 = var81;
+}
+var85 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var85 = array_instance Array[Object] */
+var86 = 2;
+var87 = NEW_array__NativeArray(var86, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var87)->values[0] = (val*) var81;
+((struct instance_array__NativeArray*)var87)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var85->class->vft[COLOR_array__Array__with_native]))(var85, var87, var86) /* with_native on <var85:Array[Object]>*/;
+}
+}
+{
+var88 = ((val* (*)(val*))(var85->class->vft[COLOR_string__Object__to_s]))(var85) /* to_s on <var85:Array[Object]>*/;
+}
+if (varonce89) {
+var90 = varonce89;
+} else {
+var91 = "extern const struct class class_";
+var92 = 32;
+var93 = string__NativeString__to_s_with_length(var91, var92);
+var90 = var93;
+varonce89 = var90;
+}
+if (varonce94) {
+var95 = varonce94;
+} else {
+var96 = ";";
+var97 = 1;
+var98 = string__NativeString__to_s_with_length(var96, var97);
+var95 = var98;
+varonce94 = var95;
+}
+var99 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var99 = array_instance Array[Object] */
+var100 = 3;
+var101 = NEW_array__NativeArray(var100, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var101)->values[0] = (val*) var90;
+((struct instance_array__NativeArray*)var101)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var101)->values[2] = (val*) var95;
+{
+((void (*)(val*, val*, long))(var99->class->vft[COLOR_array__Array__with_native]))(var99, var101, var100) /* with_native on <var99:Array[Object]>*/;
+}
+}
+{
+var102 = ((val* (*)(val*))(var99->class->vft[COLOR_string__Object__to_s]))(var99) /* to_s on <var99:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompiler__provide_declaration(self, var88, var102); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateErasureCompiler>*/
+}
+if (varonce103) {
+var104 = varonce103;
+} else {
+var105 = "extern const struct type_table type_table_";
+var106 = 42;
+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 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var113 = array_instance Array[Object] */
+var114 = 3;
+var115 = NEW_array__NativeArray(var114, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var115)->values[0] = (val*) var104;
+((struct instance_array__NativeArray*)var115)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var115)->values[2] = (val*) var109;
+{
+((void (*)(val*, val*, long))(var113->class->vft[COLOR_array__Array__with_native]))(var113, var115, var114) /* with_native on <var113:Array[Object]>*/;
+}
+}
+{
+var116 = ((val* (*)(val*))(var113->class->vft[COLOR_string__Object__to_s]))(var113) /* to_s on <var113:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var116); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce117) {
+var118 = varonce117;
+} else {
+var119 = "const struct class class_";
+var120 = 25;
+var121 = string__NativeString__to_s_with_length(var119, var120);
+var118 = var121;
+varonce117 = var118;
+}
+if (varonce122) {
+var123 = varonce122;
+} else {
+var124 = " = {";
+var125 = 4;
+var126 = string__NativeString__to_s_with_length(var124, var125);
+var123 = var126;
+varonce122 = var123;
+}
+var127 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var127 = array_instance Array[Object] */
+var128 = 3;
+var129 = NEW_array__NativeArray(var128, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var129)->values[0] = (val*) var118;
+((struct instance_array__NativeArray*)var129)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var129)->values[2] = (val*) var123;
+{
+((void (*)(val*, val*, long))(var127->class->vft[COLOR_array__Array__with_native]))(var127, var129, var128) /* with_native on <var127:Array[Object]>*/;
+}
+}
+{
+var130 = ((val* (*)(val*))(var127->class->vft[COLOR_string__Object__to_s]))(var127) /* to_s on <var127:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var130); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids (self) on <self:SeparateErasureCompiler> */
+var133 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids].val; /* _class_ids on <self:SeparateErasureCompiler> */
+if (unlikely(var133 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 104);
+show_backtrace(1);
+}
+var131 = var133;
+RET_LABEL132:(void)0;
+}
+}
+{
+var134 = ((val* (*)(val*, val*))(var131->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var131, var_mclass) /* [] on <var131:Map[MClass, Int]>*/;
+}
+if (varonce135) {
+var136 = varonce135;
+} else {
+var137 = ",";
+var138 = 1;
+var139 = string__NativeString__to_s_with_length(var137, var138);
+var136 = var139;
+varonce135 = var136;
+}
+var140 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var140 = array_instance Array[Object] */
+var141 = 2;
+var142 = NEW_array__NativeArray(var141, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var142)->values[0] = (val*) var134;
+((struct instance_array__NativeArray*)var142)->values[1] = (val*) var136;
+{
+((void (*)(val*, val*, long))(var140->class->vft[COLOR_array__Array__with_native]))(var140, var142, var141) /* with_native on <var140:Array[Object]>*/;
+}
+}
+{
+var143 = ((val* (*)(val*))(var140->class->vft[COLOR_string__Object__to_s]))(var140) /* to_s on <var140:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var143); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce144) {
+var145 = varonce144;
+} else {
+var146 = "\"";
+var147 = 1;
+var148 = string__NativeString__to_s_with_length(var146, var147);
+var145 = var148;
+varonce144 = var145;
+}
+{
+{ /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
+var151 = var_mclass->attrs[COLOR_model__MClass___name].val; /* _name on <var_mclass:MClass> */
+if (unlikely(var151 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
+show_backtrace(1);
+}
+var149 = var151;
+RET_LABEL150:(void)0;
+}
+}
+if (varonce152) {
+var153 = varonce152;
+} else {
+var154 = "\", /* class_name_string */";
+var155 = 26;
+var156 = string__NativeString__to_s_with_length(var154, var155);
+var153 = var156;
+varonce152 = var153;
+}
+var157 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var157 = array_instance Array[Object] */
+var158 = 3;
+var159 = NEW_array__NativeArray(var158, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var159)->values[0] = (val*) var145;
+((struct instance_array__NativeArray*)var159)->values[1] = (val*) var149;
+((struct instance_array__NativeArray*)var159)->values[2] = (val*) var153;
+{
+((void (*)(val*, val*, long))(var157->class->vft[COLOR_array__Array__with_native]))(var157, var159, var158) /* with_native on <var157:Array[Object]>*/;
+}
+}
+{
+var160 = ((val* (*)(val*))(var157->class->vft[COLOR_string__Object__to_s]))(var157) /* to_s on <var157:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var160); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+var161 = separate_compiler__SeparateCompiler__box_kind_of(self, var_mclass);
+}
+if (varonce162) {
+var163 = varonce162;
+} else {
+var164 = ", /* box_kind */";
+var165 = 16;
+var166 = string__NativeString__to_s_with_length(var164, var165);
+var163 = var166;
+varonce162 = var163;
+}
+var167 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var167 = array_instance Array[Object] */
+var168 = 2;
+var169 = NEW_array__NativeArray(var168, &type_array__NativeArraykernel__Object);
+var170 = BOX_kernel__Int(var161); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var169)->values[0] = (val*) var170;
+((struct instance_array__NativeArray*)var169)->values[1] = (val*) var163;
+{
+((void (*)(val*, val*, long))(var167->class->vft[COLOR_array__Array__with_native]))(var167, var169, var168) /* with_native on <var167:Array[Object]>*/;
+}
+}
+{
+var171 = ((val* (*)(val*))(var167->class->vft[COLOR_string__Object__to_s]))(var167) /* to_s on <var167:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var171); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+{ /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors (self) on <self:SeparateErasureCompiler> */
+var174 = self->attrs[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors].val; /* _class_colors on <self:SeparateErasureCompiler> */
+if (unlikely(var174 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 105);
+show_backtrace(1);
+}
+var172 = var174;
+RET_LABEL173:(void)0;
+}
+}
+{
+var175 = ((val* (*)(val*, val*))(var172->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var172, var_mclass) /* [] on <var172:Map[MClass, Int]>*/;
+}
+if (varonce176) {
+var177 = varonce176;
+} else {
+var178 = ",";
+var179 = 1;
+var180 = string__NativeString__to_s_with_length(var178, var179);
+var177 = var180;
+varonce176 = var177;
+}
+var181 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var181 = array_instance Array[Object] */
+var182 = 2;
+var183 = NEW_array__NativeArray(var182, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var183)->values[0] = (val*) var175;
+((struct instance_array__NativeArray*)var183)->values[1] = (val*) var177;
+{
+((void (*)(val*, val*, long))(var181->class->vft[COLOR_array__Array__with_native]))(var181, var183, var182) /* with_native on <var181:Array[Object]>*/;
+}
+}
+{
+var184 = ((val* (*)(val*))(var181->class->vft[COLOR_string__Object__to_s]))(var181) /* to_s on <var181:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var184); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+var185 = !var_is_dead;
+if (var185){
+{
+var186 = separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(self, var_mclass);
+}
+if (var186){
+if (varonce187) {
+var188 = varonce187;
+} else {
+var189 = "vts_table_";
+var190 = 10;
+var191 = string__NativeString__to_s_with_length(var189, var190);
+var188 = var191;
+varonce187 = var188;
+}
+var192 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var192 = array_instance Array[Object] */
+var193 = 2;
+var194 = NEW_array__NativeArray(var193, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var194)->values[0] = (val*) var188;
+((struct instance_array__NativeArray*)var194)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var192->class->vft[COLOR_array__Array__with_native]))(var192, var194, var193) /* with_native on <var192:Array[Object]>*/;
+}
+}
+{
+var195 = ((val* (*)(val*))(var192->class->vft[COLOR_string__Object__to_s]))(var192) /* to_s on <var192:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v, var195); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce196) {
+var197 = varonce196;
+} else {
+var198 = "&vts_table_";
+var199 = 11;
+var200 = string__NativeString__to_s_with_length(var198, var199);
+var197 = var200;
+varonce196 = var197;
+}
+if (varonce201) {
+var202 = varonce201;
+} else {
+var203 = ",";
+var204 = 1;
+var205 = string__NativeString__to_s_with_length(var203, var204);
+var202 = var205;
+varonce201 = var202;
+}
+var206 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var206 = array_instance Array[Object] */
+var207 = 3;
+var208 = NEW_array__NativeArray(var207, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var208)->values[0] = (val*) var197;
+((struct instance_array__NativeArray*)var208)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var208)->values[2] = (val*) var202;
+{
+((void (*)(val*, val*, long))(var206->class->vft[COLOR_array__Array__with_native]))(var206, var208, var207) /* with_native on <var206:Array[Object]>*/;
+}
+}
+{
+var209 = ((val* (*)(val*))(var206->class->vft[COLOR_string__Object__to_s]))(var206) /* to_s on <var206:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var209); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (varonce210) {
+var211 = varonce210;
+} else {
+var212 = "NULL,";
+var213 = 5;
+var214 = string__NativeString__to_s_with_length(var212, var213);
+var211 = var214;
+varonce210 = var211;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var211); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (varonce215) {
+var216 = varonce215;
+} else {
+var217 = "&type_table_";
+var218 = 12;
+var219 = string__NativeString__to_s_with_length(var217, var218);
+var216 = var219;
+varonce215 = var216;
+}
+if (varonce220) {
+var221 = varonce220;
+} else {
+var222 = ",";
+var223 = 1;
+var224 = string__NativeString__to_s_with_length(var222, var223);
+var221 = var224;
+varonce220 = var221;
+}
+var225 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var225 = array_instance Array[Object] */
+var226 = 3;
+var227 = NEW_array__NativeArray(var226, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var227)->values[0] = (val*) var216;
+((struct instance_array__NativeArray*)var227)->values[1] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var227)->values[2] = (val*) var221;
+{
+((void (*)(val*, val*, long))(var225->class->vft[COLOR_array__Array__with_native]))(var225, var227, var226) /* with_native on <var225:Array[Object]>*/;
+}
+}
+{
+var228 = ((val* (*)(val*))(var225->class->vft[COLOR_string__Object__to_s]))(var225) /* to_s on <var225:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var228); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce229) {
+var230 = varonce229;
+} else {
+var231 = "{";
+var232 = 1;
+var233 = string__NativeString__to_s_with_length(var231, var232);
+var230 = var233;
+varonce229 = var230;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var230); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+var234 = 0;
+var_i = var234;
+{
+{ /* Inline array#AbstractArrayRead#length (var_vft) on <var_vft:Array[nullable MPropDef]> */
+var237 = var_vft->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_vft:Array[nullable MPropDef]> */
+var235 = var237;
+RET_LABEL236:(void)0;
+}
+}
+var_238 = var235;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i,var_238) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_238:Int> isa OTHER */
+/* <var_238:Int> isa OTHER */
+var241 = 1; /* easy <var_238:Int> isa OTHER*/
+if (unlikely(!var241)) {
+var_class_name = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
+show_backtrace(1);
+}
+var242 = var_i < var_238;
+var239 = var242;
+goto RET_LABEL240;
+RET_LABEL240:(void)0;
+}
+}
+if (var239){
+{
+var243 = array__Array___91d_93d(var_vft, var_i);
+}
+var_mpropdef = var243;
+var244 = NULL;
+if (var_mpropdef == NULL) {
+var245 = 1; /* is null */
+} else {
+var245 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_mpropdef,var244) on <var_mpropdef:nullable MPropDef> */
+var_other248 = var244;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mpropdef,var_other248) on <var_mpropdef:nullable MPropDef(MPropDef)> */
+var251 = var_mpropdef == var_other248;
+var249 = var251;
+goto RET_LABEL250;
+RET_LABEL250:(void)0;
+}
+}
+var246 = var249;
+goto RET_LABEL247;
+RET_LABEL247:(void)0;
+}
+var245 = var246;
+}
+if (var245){
+if (varonce252) {
+var253 = varonce252;
+} else {
+var254 = "NULL, /* empty */";
+var255 = 17;
+var256 = string__NativeString__to_s_with_length(var254, var255);
+var253 = var256;
+varonce252 = var253;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var253); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+/* <var_mpropdef:nullable MPropDef(MPropDef)> isa MMethodDef */
+cltype258 = type_model__MMethodDef.color;
+idtype259 = type_model__MMethodDef.id;
+if(cltype258 >= var_mpropdef->type->table_size) {
+var257 = 0;
+} else {
+var257 = var_mpropdef->type->type_table[cltype258] == idtype259;
+}
+if (unlikely(!var257)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_erasure_compiler.nit", 259);
+show_backtrace(1);
+}
+var261 = NULL;
+if (var_rta == NULL) {
+var262 = 0; /* is null */
+} else {
+var262 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_rta,var261) on <var_rta:nullable RapidTypeAnalysis> */
+var_other = var261;
+{
+var266 = ((short int (*)(val*, val*))(var_rta->class->vft[COLOR_kernel__Object___61d_61d]))(var_rta, var_other) /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
+var265 = var266;
+}
+var267 = !var265;
+var263 = var267;
+goto RET_LABEL264;
+RET_LABEL264:(void)0;
+}
+var262 = var263;
+}
+var_268 = var262;
+if (var262){
+{
+{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+var271 = var_rta->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
+if (unlikely(var271 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
+PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 72);
+show_backtrace(1);
+}
+var269 = var271;
+RET_LABEL270:(void)0;
+}
+}
+{
+var272 = hash_collection__HashSet__has(var269, var_mpropdef);
+}
+var273 = !var272;
+var260 = var273;
+} else {
+var260 = var_268;
+}
+if (var260){
+if (varonce274) {
+var275 = varonce274;
+} else {
+var276 = "NULL, /* DEAD ";
+var277 = 14;
+var278 = string__NativeString__to_s_with_length(var276, var277);
+var275 = var278;
+varonce274 = var275;
+}
+{
+{ /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
+var281 = var_mclass->attrs[COLOR_model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_mclass:MClass> */
+if (unlikely(var281 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 347);
+show_backtrace(1);
+}
+var279 = var281;
+RET_LABEL280:(void)0;
+}
+}
+if (varonce282) {
+var283 = varonce282;
+} else {
+var284 = ":";
+var285 = 1;
+var286 = string__NativeString__to_s_with_length(var284, var285);
+var283 = var286;
+varonce282 = var283;
+}
+if (varonce287) {
+var288 = varonce287;
+} else {
+var289 = ":";
+var290 = 1;
+var291 = string__NativeString__to_s_with_length(var289, var290);
+var288 = var291;
+varonce287 = var288;
+}
+if (varonce292) {
+var293 = varonce292;
+} else {
+var294 = " */";
+var295 = 3;
+var296 = string__NativeString__to_s_with_length(var294, var295);
+var293 = var296;
+varonce292 = var293;
+}
+var297 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var297 = array_instance Array[Object] */
+var298 = 7;
+var299 = NEW_array__NativeArray(var298, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var299)->values[0] = (val*) var275;
+((struct instance_array__NativeArray*)var299)->values[1] = (val*) var279;
+((struct instance_array__NativeArray*)var299)->values[2] = (val*) var283;
+((struct instance_array__NativeArray*)var299)->values[3] = (val*) var_mclass;
+((struct instance_array__NativeArray*)var299)->values[4] = (val*) var288;
+((struct instance_array__NativeArray*)var299)->values[5] = (val*) var_mpropdef;
+((struct instance_array__NativeArray*)var299)->values[6] = (val*) var293;
+{
+((void (*)(val*, val*, long))(var297->class->vft[COLOR_array__Array__with_native]))(var297, var299, var298) /* with_native on <var297:Array[Object]>*/;
+}
+}
+{
+var300 = ((val* (*)(val*))(var297->class->vft[COLOR_string__Object__to_s]))(var297) /* to_s on <var297:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var300); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+goto BREAK_label;
+} else {
+}
+var302 = 1;
+var_303 = var302;
+if (var302){
+var301 = var_303;
+} else {
+{
+{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
+var306 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:nullable MPropDef(MMethodDef)> */
+if (unlikely(var306 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var304 = var306;
+RET_LABEL305:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var304) on <var304:MClassDef> */
+var309 = var304->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var304:MClassDef> */
+if (unlikely(var309 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
+show_backtrace(1);
+}
+var307 = var309;
+RET_LABEL308:(void)0;
+}
+}
+{
+var310 = abstract_compiler__MClassType__ctype(var307);
+}
+if (varonce311) {
+var312 = varonce311;
+} else {
+var313 = "val*";
+var314 = 4;
+var315 = string__NativeString__to_s_with_length(var313, var314);
+var312 = var315;
+varonce311 = var312;
+}
+{
+{ /* Inline kernel#Object#!= (var310,var312) on <var310:String> */
+var_other = var312;
+{
+var320 = ((short int (*)(val*, val*))(var310->class->vft[COLOR_kernel__Object___61d_61d]))(var310, var_other) /* == on <var310:String>*/;
+var319 = var320;
+}
+var321 = !var319;
+var317 = var321;
+goto RET_LABEL318;
+RET_LABEL318:(void)0;
+}
+var316 = var317;
+}
+var301 = var316;
+}
+if (var301){
+if (varonce322) {
+var323 = varonce322;
+} else {
+var324 = "VIRTUAL_";
+var325 = 8;
+var326 = string__NativeString__to_s_with_length(var324, var325);
+var323 = var326;
+varonce322 = var323;
+}
+{
+var327 = abstract_compiler__MPropDef__c_name(var_mpropdef);
+}
+var328 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var328 = array_instance Array[Object] */
+var329 = 2;
+var330 = NEW_array__NativeArray(var329, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var330)->values[0] = (val*) var323;
+((struct instance_array__NativeArray*)var330)->values[1] = (val*) var327;
+{
+((void (*)(val*, val*, long))(var328->class->vft[COLOR_array__Array__with_native]))(var328, var330, var329) /* with_native on <var328:Array[Object]>*/;
+}
+}
+{
+var331 = ((val* (*)(val*))(var328->class->vft[COLOR_string__Object__to_s]))(var328) /* to_s on <var328:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v, var331); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce332) {
+var333 = varonce332;
+} else {
+var334 = "(nitmethod_t)VIRTUAL_";
+var335 = 21;
+var336 = string__NativeString__to_s_with_length(var334, var335);
+var333 = var336;
+varonce332 = var333;
+}
+{
+var337 = abstract_compiler__MPropDef__c_name(var_mpropdef);
+}
+if (varonce338) {
+var339 = varonce338;
+} else {
+var340 = ", /* pointer to ";
+var341 = 16;
+var342 = string__NativeString__to_s_with_length(var340, var341);
+var339 = var342;
+varonce338 = var339;
+}
+{
+{ /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
+var345 = var_mclass->attrs[COLOR_model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_mclass:MClass> */
+if (unlikely(var345 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 347);
+show_backtrace(1);
+}
+var343 = var345;
+RET_LABEL344:(void)0;
+}
+}
+if (varonce346) {
+var347 = varonce346;
+} else {
+var348 = ":";
+var349 = 1;
+var350 = string__NativeString__to_s_with_length(var348, var349);
+var347 = var350;
+varonce346 = var347;
+}
+if (varonce351) {
+var352 = varonce351;
+} else {
+var353 = ":";
+var354 = 1;
+var355 = string__NativeString__to_s_with_length(var353, var354);
+var352 = var355;
+varonce351 = var352;
+}
+if (varonce356) {
+var357 = varonce356;
+} else {
+var358 = " */";
+var359 = 3;
+var360 = string__NativeString__to_s_with_length(var358, var359);
+var357 = var360;
+varonce356 = var357;
+}
+var361 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var361 = array_instance Array[Object] */
+var362 = 9;
+var363 = NEW_array__NativeArray(var362, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var363)->values[0] = (val*) var333;
+((struct instance_array__NativeArray*)var363)->values[1] = (val*) var337;
+((struct instance_array__NativeArray*)var363)->values[2] = (val*) var339;
+((struct instance_array__NativeArray*)var363)->values[3] = (val*) var343;
+((struct instance_array__NativeArray*)var363)->values[4] = (val*) var347;
+((struct instance_array__NativeArray*)var363)->values[5] = (val*) var_mclass;
+((struct instance_array__NativeArray*)var363)->values[6] = (val*) var352;
+((struct instance_array__NativeArray*)var363)->values[7] = (val*) var_mpropdef;
+((struct instance_array__NativeArray*)var363)->values[8] = (val*) var357;
+{
+((void (*)(val*, val*, long))(var361->class->vft[COLOR_array__Array__with_native]))(var361, var363, var362) /* with_native on <var361:Array[Object]>*/;
+}
+}
+{
+var364 = ((val* (*)(val*))(var361->class->vft[COLOR_string__Object__to_s]))(var361) /* to_s on <var361:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var364); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}