-/* method separate_compiler#SeparateCompiler#compile_type_to_c for (self: SeparateCompiler, MType) */
-void nitc___nitc__SeparateCompiler___compile_type_to_c(val* self, val* p0) {
-val* var_mtype /* var mtype: MType */;
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-short int var_ /* var : Bool */;
-val* var4 /* : nullable RapidTypeAnalysis */;
-val* var6 /* : nullable RapidTypeAnalysis */;
-val* var7 /* : HashSet[MClassType] */;
-val* var9 /* : HashSet[MClassType] */;
-short int var10 /* : Bool */;
-short int var_is_live /* var is_live: Bool */;
-val* var11 /* : nullable RapidTypeAnalysis */;
-val* var13 /* : nullable RapidTypeAnalysis */;
-val* var14 /* : HashSet[MType] */;
-val* var16 /* : HashSet[MType] */;
-short int var17 /* : Bool */;
-short int var_is_cast_live /* var is_cast_live: Bool */;
-val* var18 /* : String */;
-val* var_c_name /* var c_name: String */;
-val* var19 /* : SeparateCompilerVisitor */;
-val* var_v /* var v: SeparateCompilerVisitor */;
-val* var20 /* : NativeArray[String] */;
-static val* varonce;
-static val* varonce21;
-val* var22 /* : String */;
-char* var23 /* : NativeString */;
-val* var24 /* : String */;
-static val* varonce25;
-val* var26 /* : String */;
-char* var27 /* : NativeString */;
-val* var28 /* : String */;
-val* var29 /* : String */;
-val* var30 /* : String */;
-val* var32 /* : NativeArray[String] */;
-static val* varonce31;
-static val* varonce33;
-val* var34 /* : String */;
-char* var35 /* : NativeString */;
-val* var36 /* : String */;
-val* var37 /* : String */;
-val* var39 /* : NativeArray[String] */;
-static val* varonce38;
-static val* varonce40;
-val* var41 /* : String */;
-char* var42 /* : NativeString */;
-val* var43 /* : String */;
-static val* varonce44;
-val* var45 /* : String */;
-char* var46 /* : NativeString */;
-val* var47 /* : String */;
-val* var48 /* : String */;
-val* var50 /* : NativeArray[String] */;
-static val* varonce49;
-static val* varonce51;
-val* var52 /* : String */;
-char* var53 /* : NativeString */;
-val* var54 /* : String */;
-static val* varonce55;
-val* var56 /* : String */;
-char* var57 /* : NativeString */;
-val* var58 /* : String */;
-val* var59 /* : String */;
-val* var61 /* : NativeArray[String] */;
-static val* varonce60;
-static val* varonce62;
-val* var63 /* : String */;
-char* var64 /* : NativeString */;
-val* var65 /* : String */;
-val* var66 /* : Map[MType, Int] */;
-val* var68 /* : Map[MType, Int] */;
-val* var69 /* : nullable Object */;
-val* var70 /* : String */;
-long var71 /* : Int */;
-val* var72 /* : String */;
-static val* varonce73;
-val* var74 /* : String */;
-char* var75 /* : NativeString */;
-val* var76 /* : String */;
-val* var78 /* : NativeArray[String] */;
-static val* varonce77;
-static val* varonce79;
-val* var80 /* : String */;
-char* var81 /* : NativeString */;
-val* var82 /* : String */;
-static val* varonce83;
-val* var84 /* : String */;
-char* var85 /* : NativeString */;
-val* var86 /* : String */;
-val* var87 /* : String */;
-val* var88 /* : String */;
-val* var90 /* : NativeArray[String] */;
-static val* varonce89;
-static val* varonce91;
-val* var92 /* : String */;
-char* var93 /* : NativeString */;
-val* var94 /* : String */;
-val* var95 /* : Map[MType, Int] */;
-val* var97 /* : Map[MType, Int] */;
-val* var98 /* : nullable Object */;
-val* var99 /* : String */;
-long var100 /* : Int */;
-val* var101 /* : String */;
-static val* varonce102;
-val* var103 /* : String */;
-char* var104 /* : NativeString */;
-val* var105 /* : String */;
-short int var106 /* : Bool */;
-int cltype107;
-int idtype108;
-static val* varonce109;
-val* var110 /* : String */;
-char* var111 /* : NativeString */;
-val* var112 /* : String */;
-static val* varonce113;
-val* var114 /* : String */;
-char* var115 /* : NativeString */;
-val* var116 /* : String */;
-val* var117 /* : MType */;
-val* var_mclass_type /* var mclass_type: MType */;
-short int var118 /* : Bool */;
-int cltype119;
-int idtype120;
-val* var121 /* : Map[MClassType, Array[nullable MType]] */;
-val* var123 /* : Map[MClassType, Array[nullable MType]] */;
-val* var124 /* : nullable Object */;
-short int var125 /* : Bool */;
-static val* varonce126;
-val* var127 /* : String */;
-char* var128 /* : NativeString */;
-val* var129 /* : String */;
-val* var131 /* : NativeArray[String] */;
-static val* varonce130;
-static val* varonce132;
-val* var133 /* : String */;
-char* var134 /* : NativeString */;
-val* var135 /* : String */;
-val* var136 /* : String */;
-val* var138 /* : NativeArray[String] */;
-static val* varonce137;
-static val* varonce139;
-val* var140 /* : String */;
-char* var141 /* : NativeString */;
-val* var142 /* : String */;
-static val* varonce143;
-val* var144 /* : String */;
-char* var145 /* : NativeString */;
-val* var146 /* : String */;
-val* var147 /* : String */;
-static val* varonce148;
-val* var149 /* : String */;
-char* var150 /* : NativeString */;
-val* var151 /* : String */;
-val* var153 /* : NativeArray[String] */;
-static val* varonce152;
-static val* varonce154;
-val* var155 /* : String */;
-char* var156 /* : NativeString */;
-val* var157 /* : String */;
-val* var158 /* : Map[MType, Array[nullable MType]] */;
-val* var160 /* : Map[MType, Array[nullable MType]] */;
-val* var161 /* : nullable Object */;
-long var162 /* : Int */;
-long var164 /* : Int */;
-val* var165 /* : String */;
-val* var166 /* : String */;
-static val* varonce167;
-val* var168 /* : String */;
-char* var169 /* : NativeString */;
-val* var170 /* : String */;
-val* var171 /* : Map[MType, Array[nullable MType]] */;
-val* var173 /* : Map[MType, Array[nullable MType]] */;
-val* var174 /* : nullable Object */;
-val* var_175 /* var : Array[nullable MType] */;
-val* var176 /* : IndexedIterator[nullable Object] */;
-val* var_177 /* var : IndexedIterator[nullable MType] */;
-short int var178 /* : Bool */;
-val* var179 /* : nullable Object */;
-val* var_stype /* var stype: nullable MType */;
-short int var180 /* : Bool */;
-short int var181 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var183 /* : Bool */;
-short int var185 /* : Bool */;
-static val* varonce186;
-val* var187 /* : String */;
-char* var188 /* : NativeString */;
-val* var189 /* : String */;
-val* var191 /* : NativeArray[String] */;
-static val* varonce190;
-static val* varonce192;
-val* var193 /* : String */;
-char* var194 /* : NativeString */;
-val* var195 /* : String */;
-static val* varonce196;
-val* var197 /* : String */;
-char* var198 /* : NativeString */;
-val* var199 /* : String */;
-val* var200 /* : Map[MType, Int] */;
-val* var202 /* : Map[MType, Int] */;
-val* var203 /* : nullable Object */;
-val* var204 /* : String */;
-long var205 /* : Int */;
-val* var206 /* : String */;
-val* var207 /* : String */;
-static val* varonce208;
-val* var209 /* : String */;
-char* var210 /* : NativeString */;
-val* var211 /* : String */;
-static val* varonce212;
-val* var213 /* : String */;
-char* var214 /* : NativeString */;
-val* var215 /* : String */;
-static val* varonce216;
-val* var217 /* : String */;
-char* var218 /* : NativeString */;
-val* var219 /* : String */;
-var_mtype = p0;
-{
-var = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
-}
-var1 = !var;
-if (unlikely(!var1)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 708);
-fatal_exit(1);
-}
-/* <var_mtype:MType> isa MClassType */
-cltype = type_nitc__MClassType.color;
-idtype = type_nitc__MClassType.id;
-if(cltype >= var_mtype->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_mtype->type->type_table[cltype] == idtype;
-}
-var_ = var3;
-if (var3){
-{
-{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
-var6 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
-var4 = var6;
-RET_LABEL5:(void)0;
-}
-}
-if (var4 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 709);
-fatal_exit(1);
-} else {
-{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var4) on <var4:nullable RapidTypeAnalysis> */
-if (unlikely(var4 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
-fatal_exit(1);
-}
-var9 = var4->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var4:nullable RapidTypeAnalysis> */
-if (unlikely(var9 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 60);
-fatal_exit(1);
-}
-var7 = var9;
-RET_LABEL8:(void)0;
-}
-}
-{
-var10 = core___core__HashSet___core__abstract_collection__Collection__has(var7, var_mtype);
-}
-var2 = var10;
-} else {
-var2 = var_;
-}
-var_is_live = var2;
-{
-{ /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
-var13 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
-var11 = var13;
-RET_LABEL12:(void)0;
-}
-}
-if (var11 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 710);
-fatal_exit(1);
-} else {
-{ /* Inline rapid_type_analysis#RapidTypeAnalysis#live_cast_types (var11) on <var11:nullable RapidTypeAnalysis> */
-if (unlikely(var11 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 72);
-fatal_exit(1);
-}
-var16 = var11->attrs[COLOR_nitc__rapid_type_analysis__RapidTypeAnalysis___live_cast_types].val; /* _live_cast_types on <var11:nullable RapidTypeAnalysis> */
-if (unlikely(var16 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_cast_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__rapid_type_analysis, 72);
-fatal_exit(1);
-}
-var14 = var16;
-RET_LABEL15:(void)0;
-}
-}
-{
-var17 = core___core__HashSet___core__abstract_collection__Collection__has(var14, var_mtype);
-}
-var_is_cast_live = var17;
-{
-var18 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType>*/
-}
-var_c_name = var18;
-var19 = NEW_nitc__SeparateCompilerVisitor(&type_nitc__SeparateCompilerVisitor);
-{
-((void(*)(val* self, val* p0))(var19->class->vft[COLOR_nitc__abstract_compiler__AbstractCompilerVisitor__compiler_61d]))(var19, self); /* compiler= on <var19:SeparateCompilerVisitor>*/
-}
-{
-((void(*)(val* self))(var19->class->vft[COLOR_core__kernel__Object__init]))(var19); /* init on <var19:SeparateCompilerVisitor>*/
-}
-var_v = var19;
-if (unlikely(varonce==NULL)) {
-var20 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
-if (likely(varonce21!=NULL)) {
-var22 = varonce21;
-} else {
-var23 = "/* runtime type ";
-var24 = core__flat___NativeString___to_s_full(var23, 16l, 16l);
-var22 = var24;
-varonce21 = var22;
-}
-((struct instance_core__NativeArray*)var20)->values[0]=var22;
-if (likely(varonce25!=NULL)) {
-var26 = varonce25;
-} else {
-var27 = " */";
-var28 = core__flat___NativeString___to_s_full(var27, 3l, 3l);
-var26 = var28;
-varonce25 = var26;
-}
-((struct instance_core__NativeArray*)var20)->values[2]=var26;
-} else {
-var20 = varonce;
-varonce = NULL;
-}
-{
-var29 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
-}
-((struct instance_core__NativeArray*)var20)->values[1]=var29;
-{
-var30 = ((val*(*)(val* self))(var20->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var20); /* native_to_s on <var20:NativeArray[String]>*/
-}
-varonce = var20;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-if (unlikely(varonce31==NULL)) {
-var32 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
-if (likely(varonce33!=NULL)) {
-var34 = varonce33;
-} else {
-var35 = "type_";
-var36 = core__flat___NativeString___to_s_full(var35, 5l, 5l);
-var34 = var36;
-varonce33 = var34;
-}
-((struct instance_core__NativeArray*)var32)->values[0]=var34;
-} else {
-var32 = varonce31;
-varonce31 = NULL;
-}
-((struct instance_core__NativeArray*)var32)->values[1]=var_c_name;
-{
-var37 = ((val*(*)(val* self))(var32->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var32); /* native_to_s on <var32:NativeArray[String]>*/
-}
-varonce31 = var32;
-if (unlikely(varonce38==NULL)) {
-var39 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
-if (likely(varonce40!=NULL)) {
-var41 = varonce40;
-} else {
-var42 = "extern const struct type type_";
-var43 = core__flat___NativeString___to_s_full(var42, 30l, 30l);
-var41 = var43;
-varonce40 = var41;
-}
-((struct instance_core__NativeArray*)var39)->values[0]=var41;
-if (likely(varonce44!=NULL)) {
-var45 = varonce44;
-} else {
-var46 = ";";
-var47 = core__flat___NativeString___to_s_full(var46, 1l, 1l);
-var45 = var47;
-varonce44 = var45;
-}
-((struct instance_core__NativeArray*)var39)->values[2]=var45;
-} else {
-var39 = varonce38;
-varonce38 = NULL;
-}
-((struct instance_core__NativeArray*)var39)->values[1]=var_c_name;
-{
-var48 = ((val*(*)(val* self))(var39->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var39); /* native_to_s on <var39:NativeArray[String]>*/
-}
-varonce38 = var39;
-{
-nitc___nitc__AbstractCompiler___provide_declaration(self, var37, var48); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
-}
-if (unlikely(varonce49==NULL)) {
-var50 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
-if (likely(varonce51!=NULL)) {
-var52 = varonce51;
-} else {
-var53 = "const struct type type_";
-var54 = core__flat___NativeString___to_s_full(var53, 23l, 23l);
-var52 = var54;
-varonce51 = var52;
-}
-((struct instance_core__NativeArray*)var50)->values[0]=var52;
-if (likely(varonce55!=NULL)) {
-var56 = varonce55;
-} else {
-var57 = " = {";
-var58 = core__flat___NativeString___to_s_full(var57, 4l, 4l);
-var56 = var58;
-varonce55 = var56;
-}
-((struct instance_core__NativeArray*)var50)->values[2]=var56;
-} else {
-var50 = varonce49;
-varonce49 = NULL;
-}
-((struct instance_core__NativeArray*)var50)->values[1]=var_c_name;
-{
-var59 = ((val*(*)(val* self))(var50->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var50); /* native_to_s on <var50:NativeArray[String]>*/
-}
-varonce49 = var50;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var59); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-if (var_is_cast_live){
-if (unlikely(varonce60==NULL)) {
-var61 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
-if (likely(varonce62!=NULL)) {
-var63 = varonce62;
-} else {
-var64 = ",";
-var65 = core__flat___NativeString___to_s_full(var64, 1l, 1l);
-var63 = var65;
-varonce62 = var63;
-}
-((struct instance_core__NativeArray*)var61)->values[1]=var63;
-} else {
-var61 = varonce60;
-varonce60 = NULL;
-}
-{
-{ /* Inline separate_compiler#SeparateCompiler#type_ids (self) on <self:SeparateCompiler> */
-var68 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
-if (unlikely(var68 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 149);
-fatal_exit(1);
-}
-var66 = var68;
-RET_LABEL67:(void)0;
-}
-}
-{
-var69 = ((val*(*)(val* self, val* p0))((((long)var66&3)?class_info[((long)var66&3)]:var66->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var66, var_mtype); /* [] on <var66:Map[MType, Int]>*/
-}
-var71 = (long)(var69)>>2;
-var70 = core__flat___Int___core__abstract_text__Object__to_s(var71);
-((struct instance_core__NativeArray*)var61)->values[0]=var70;
-{
-var72 = ((val*(*)(val* self))(var61->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var61); /* native_to_s on <var61:NativeArray[String]>*/
-}
-varonce60 = var61;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-} else {
-if (likely(varonce73!=NULL)) {
-var74 = varonce73;
-} else {
-var75 = "-1, /*CAST DEAD*/";
-var76 = core__flat___NativeString___to_s_full(var75, 17l, 17l);
-var74 = var76;
-varonce73 = var74;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var74); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-}
-if (unlikely(varonce77==NULL)) {
-var78 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
-if (likely(varonce79!=NULL)) {
-var80 = varonce79;
-} else {
-var81 = "\"";
-var82 = core__flat___NativeString___to_s_full(var81, 1l, 1l);
-var80 = var82;
-varonce79 = var80;
-}
-((struct instance_core__NativeArray*)var78)->values[0]=var80;
-if (likely(varonce83!=NULL)) {
-var84 = varonce83;
-} else {
-var85 = "\", /* class_name_string */";
-var86 = core__flat___NativeString___to_s_full(var85, 26l, 26l);
-var84 = var86;
-varonce83 = var84;
-}
-((struct instance_core__NativeArray*)var78)->values[2]=var84;
-} else {
-var78 = varonce77;
-varonce77 = NULL;
-}
-{
-var87 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
-}
-((struct instance_core__NativeArray*)var78)->values[1]=var87;
-{
-var88 = ((val*(*)(val* self))(var78->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var78); /* native_to_s on <var78:NativeArray[String]>*/
-}
-varonce77 = var78;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var88); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-if (var_is_cast_live){
-if (unlikely(varonce89==NULL)) {
-var90 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
-if (likely(varonce91!=NULL)) {
-var92 = varonce91;
-} else {
-var93 = ",";
-var94 = core__flat___NativeString___to_s_full(var93, 1l, 1l);
-var92 = var94;
-varonce91 = var92;
-}
-((struct instance_core__NativeArray*)var90)->values[1]=var92;
-} else {
-var90 = varonce89;
-varonce89 = NULL;
-}
-{
-{ /* Inline separate_compiler#SeparateCompiler#type_colors (self) on <self:SeparateCompiler> */
-var97 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_colors].val; /* _type_colors on <self:SeparateCompiler> */
-if (unlikely(var97 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_colors");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 150);
-fatal_exit(1);
-}
-var95 = var97;
-RET_LABEL96:(void)0;
-}
-}
-{
-var98 = ((val*(*)(val* self, val* p0))((((long)var95&3)?class_info[((long)var95&3)]:var95->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var95, var_mtype); /* [] on <var95:Map[MType, Int]>*/
-}
-var100 = (long)(var98)>>2;
-var99 = core__flat___Int___core__abstract_text__Object__to_s(var100);
-((struct instance_core__NativeArray*)var90)->values[0]=var99;
-{
-var101 = ((val*(*)(val* self))(var90->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var90); /* native_to_s on <var90:NativeArray[String]>*/
-}
-varonce89 = var90;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var101); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-} else {
-if (likely(varonce102!=NULL)) {
-var103 = varonce102;
-} else {
-var104 = "-1, /*CAST DEAD*/";
-var105 = core__flat___NativeString___to_s_full(var104, 17l, 17l);
-var103 = var105;
-varonce102 = var103;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var103); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-}
-/* <var_mtype:MType> isa MNullableType */
-cltype107 = type_nitc__MNullableType.color;
-idtype108 = type_nitc__MNullableType.id;
-if(cltype107 >= var_mtype->type->table_size) {
-var106 = 0;
-} else {
-var106 = var_mtype->type->type_table[cltype107] == idtype108;
-}
-if (var106){
-if (likely(varonce109!=NULL)) {
-var110 = varonce109;
-} else {
-var111 = "1,";
-var112 = core__flat___NativeString___to_s_full(var111, 2l, 2l);
-var110 = var112;
-varonce109 = var110;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var110); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-} else {
-if (likely(varonce113!=NULL)) {
-var114 = varonce113;
-} else {
-var115 = "0,";
-var116 = core__flat___NativeString___to_s_full(var115, 2l, 2l);
-var114 = var116;
-varonce113 = var114;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var114); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-}
-if (var_is_live){
-{
-var117 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nitc__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
-}
-var_mclass_type = var117;
-/* <var_mclass_type:MType> isa MClassType */
-cltype119 = type_nitc__MClassType.color;
-idtype120 = type_nitc__MClassType.id;
-if(cltype119 >= var_mclass_type->type->table_size) {
-var118 = 0;
-} else {
-var118 = var_mclass_type->type->type_table[cltype119] == idtype120;
-}
-if (unlikely(!var118)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 748);
-fatal_exit(1);
-}
-{
-{ /* Inline separate_compiler#SeparateCompiler#resolution_tables (self) on <self:SeparateCompiler> */
-var123 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
-if (unlikely(var123 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1066);
-fatal_exit(1);
-}
-var121 = var123;
-RET_LABEL122:(void)0;
-}
-}
-{
-var124 = ((val*(*)(val* self, val* p0))((((long)var121&3)?class_info[((long)var121&3)]:var121->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var121, var_mclass_type); /* [] on <var121:Map[MClassType, Array[nullable MType]]>*/
-}
-{
-var125 = core___core__AbstractArrayRead___core__abstract_collection__Collection__is_empty(var124);
-}
-if (var125){
-if (likely(varonce126!=NULL)) {
-var127 = varonce126;
-} else {
-var128 = "NULL, /*NO RESOLUTIONS*/";
-var129 = core__flat___NativeString___to_s_full(var128, 24l, 24l);
-var127 = var129;
-varonce126 = var127;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var127); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-} else {
-{
-nitc___nitc__SeparateCompiler___compile_type_resolution_table(self, var_mtype); /* Direct call separate_compiler#SeparateCompiler#compile_type_resolution_table on <self:SeparateCompiler>*/
-}
-if (unlikely(varonce130==NULL)) {
-var131 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
-if (likely(varonce132!=NULL)) {
-var133 = varonce132;
-} else {
-var134 = "resolution_table_";
-var135 = core__flat___NativeString___to_s_full(var134, 17l, 17l);
-var133 = var135;
-varonce132 = var133;
-}
-((struct instance_core__NativeArray*)var131)->values[0]=var133;
-} else {
-var131 = varonce130;
-varonce130 = NULL;
-}
-((struct instance_core__NativeArray*)var131)->values[1]=var_c_name;
-{
-var136 = ((val*(*)(val* self))(var131->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var131); /* native_to_s on <var131:NativeArray[String]>*/
-}
-varonce130 = var131;
-{
-nitc___nitc__AbstractCompilerVisitor___require_declaration(var_v, var136); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
-}
-if (unlikely(varonce137==NULL)) {
-var138 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
-if (likely(varonce139!=NULL)) {
-var140 = varonce139;
-} else {
-var141 = "&resolution_table_";
-var142 = core__flat___NativeString___to_s_full(var141, 18l, 18l);
-var140 = var142;
-varonce139 = var140;
-}
-((struct instance_core__NativeArray*)var138)->values[0]=var140;
-if (likely(varonce143!=NULL)) {
-var144 = varonce143;
-} else {
-var145 = ",";
-var146 = core__flat___NativeString___to_s_full(var145, 1l, 1l);
-var144 = var146;
-varonce143 = var144;
-}
-((struct instance_core__NativeArray*)var138)->values[2]=var144;
-} else {
-var138 = varonce137;
-varonce137 = NULL;
-}
-((struct instance_core__NativeArray*)var138)->values[1]=var_c_name;
-{
-var147 = ((val*(*)(val* self))(var138->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var138); /* native_to_s on <var138:NativeArray[String]>*/
-}
-varonce137 = var138;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var147); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-}
-} else {
-if (likely(varonce148!=NULL)) {
-var149 = varonce148;
-} else {
-var150 = "NULL, /*DEAD*/";
-var151 = core__flat___NativeString___to_s_full(var150, 14l, 14l);
-var149 = var151;
-varonce148 = var149;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var149); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-}
-if (var_is_live){
-if (unlikely(varonce152==NULL)) {
-var153 = NEW_core__NativeArray(2l, &type_core__NativeArray__core__String);
-if (likely(varonce154!=NULL)) {
-var155 = varonce154;
-} else {
-var156 = ",";
-var157 = core__flat___NativeString___to_s_full(var156, 1l, 1l);
-var155 = var157;
-varonce154 = var155;
-}
-((struct instance_core__NativeArray*)var153)->values[1]=var155;
-} else {
-var153 = varonce152;
-varonce152 = NULL;
-}
-{
-{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:SeparateCompiler> */
-var160 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
-if (unlikely(var160 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1065);
-fatal_exit(1);
-}
-var158 = var160;
-RET_LABEL159:(void)0;
-}
-}
-{
-var161 = ((val*(*)(val* self, val* p0))((((long)var158&3)?class_info[((long)var158&3)]:var158->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var158, var_mtype); /* [] on <var158:Map[MType, Array[nullable MType]]>*/
-}
-{
-{ /* Inline array#AbstractArrayRead#length (var161) on <var161:nullable Object(Array[nullable MType])> */
-var164 = var161->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var161:nullable Object(Array[nullable MType])> */
-var162 = var164;
-RET_LABEL163:(void)0;
-}
-}
-var165 = core__flat___Int___core__abstract_text__Object__to_s(var162);
-((struct instance_core__NativeArray*)var153)->values[0]=var165;
-{
-var166 = ((val*(*)(val* self))(var153->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var153); /* native_to_s on <var153:NativeArray[String]>*/
-}
-varonce152 = var153;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var166); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-if (likely(varonce167!=NULL)) {
-var168 = varonce167;
-} else {
-var169 = "{";
-var170 = core__flat___NativeString___to_s_full(var169, 1l, 1l);
-var168 = var170;
-varonce167 = var168;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var168); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-{
-{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:SeparateCompiler> */
-var173 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
-if (unlikely(var173 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 1065);
-fatal_exit(1);
-}
-var171 = var173;
-RET_LABEL172:(void)0;
-}
-}
-{
-var174 = ((val*(*)(val* self, val* p0))((((long)var171&3)?class_info[((long)var171&3)]:var171->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var171, var_mtype); /* [] on <var171:Map[MType, Array[nullable MType]]>*/
-}
-var_175 = var174;
-{
-var176 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_175);
-}
-var_177 = var176;
-for(;;) {
-{
-var178 = ((short int(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_177); /* is_ok on <var_177:IndexedIterator[nullable MType]>*/
-}
-if (var178){
-} else {
-goto BREAK_label;
-}
-{
-var179 = ((val*(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_177); /* item on <var_177:IndexedIterator[nullable MType]>*/
-}
-var_stype = var179;
-if (var_stype == NULL) {
-var180 = 1; /* is null */
-} else {
-var180 = 0; /* arg is null but recv is not */
-}
-if (0) {
-{ /* Inline kernel#Object#== (var_stype,((val*)NULL)) on <var_stype:nullable MType> */
-var_other = ((val*)NULL);
-{
-{ /* Inline kernel#Object#is_same_instance (var_stype,var_other) on <var_stype:nullable MType(MType)> */
-var185 = var_stype == var_other;
-var183 = var185;
-goto RET_LABEL184;
-RET_LABEL184:(void)0;
-}
-}
-var181 = var183;
-goto RET_LABEL182;
-RET_LABEL182:(void)0;
-}
-var180 = var181;
-}
-if (var180){
-if (likely(varonce186!=NULL)) {
-var187 = varonce186;
-} else {
-var188 = "-1, /* empty */";
-var189 = core__flat___NativeString___to_s_full(var188, 15l, 15l);
-var187 = var189;
-varonce186 = var187;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var187); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-} else {
-if (unlikely(varonce190==NULL)) {
-var191 = NEW_core__NativeArray(4l, &type_core__NativeArray__core__String);
-if (likely(varonce192!=NULL)) {
-var193 = varonce192;
-} else {
-var194 = ", /* ";
-var195 = core__flat___NativeString___to_s_full(var194, 5l, 5l);
-var193 = var195;
-varonce192 = var193;
-}
-((struct instance_core__NativeArray*)var191)->values[1]=var193;
-if (likely(varonce196!=NULL)) {
-var197 = varonce196;
-} else {
-var198 = " */";
-var199 = core__flat___NativeString___to_s_full(var198, 3l, 3l);
-var197 = var199;
-varonce196 = var197;
-}
-((struct instance_core__NativeArray*)var191)->values[3]=var197;
-} else {
-var191 = varonce190;
-varonce190 = NULL;
-}
-{
-{ /* Inline separate_compiler#SeparateCompiler#type_ids (self) on <self:SeparateCompiler> */
-var202 = self->attrs[COLOR_nitc__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
-if (unlikely(var202 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
-PRINT_ERROR(" (%s:%d)\n", FILE_nitc__separate_compiler, 149);
-fatal_exit(1);
-}
-var200 = var202;
-RET_LABEL201:(void)0;
-}
-}
-{
-var203 = ((val*(*)(val* self, val* p0))((((long)var200&3)?class_info[((long)var200&3)]:var200->class)->vft[COLOR_core__abstract_collection__MapRead___91d_93d]))(var200, var_stype); /* [] on <var200:Map[MType, Int]>*/
-}
-var205 = (long)(var203)>>2;
-var204 = core__flat___Int___core__abstract_text__Object__to_s(var205);
-((struct instance_core__NativeArray*)var191)->values[0]=var204;
-{
-var206 = ((val*(*)(val* self))(var_stype->class->vft[COLOR_core__abstract_text__Object__to_s]))(var_stype); /* to_s on <var_stype:nullable MType(MType)>*/
-}
-((struct instance_core__NativeArray*)var191)->values[2]=var206;
-{
-var207 = ((val*(*)(val* self))(var191->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var191); /* native_to_s on <var191:NativeArray[String]>*/
-}
-varonce190 = var191;
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var207); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-}
-{
-((void(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_177); /* next on <var_177:IndexedIterator[nullable MType]>*/
-}
-}
-BREAK_label: (void)0;
-{
-((void(*)(val* self))((((long)var_177&3)?class_info[((long)var_177&3)]:var_177->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_177); /* finish on <var_177:IndexedIterator[nullable MType]>*/
-}
-if (likely(varonce208!=NULL)) {
-var209 = varonce208;
-} else {
-var210 = "},";
-var211 = core__flat___NativeString___to_s_full(var210, 2l, 2l);
-var209 = var211;
-varonce208 = var209;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var209); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-} else {
-if (likely(varonce212!=NULL)) {
-var213 = varonce212;
-} else {
-var214 = "-1, {}, /*DEAD TYPE*/";
-var215 = core__flat___NativeString___to_s_full(var214, 21l, 21l);
-var213 = var215;
-varonce212 = var213;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var213); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-}
-if (likely(varonce216!=NULL)) {
-var217 = varonce216;
-} else {
-var218 = "};";
-var219 = core__flat___NativeString___to_s_full(var218, 2l, 2l);
-var217 = var219;
-varonce216 = var217;
-}
-{
-nitc___nitc__AbstractCompilerVisitor___add_decl(var_v, var217); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
-}
-RET_LABEL:;
-}