+{
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
+var928 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
+if (unlikely(var928 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var926 = var928;
+RET_LABEL927:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#kind (var926) on <var926:MClass> */
+var931 = var926->attrs[COLOR_model__MClass___kind].val; /* _kind on <var926:MClass> */
+if (unlikely(var931 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
+show_backtrace(1);
+}
+var929 = var931;
+RET_LABEL930:(void)0;
+}
+}
+{
+var932 = model__Object__extern_kind(self);
+}
+{
+{ /* Inline kernel#Object#== (var929,var932) on <var929:MClassKind> */
+var_other155 = var932;
+{
+{ /* Inline kernel#Object#is_same_instance (var929,var_other155) on <var929:MClassKind> */
+var938 = var929 == var_other155;
+var936 = var938;
+goto RET_LABEL937;
+RET_LABEL937:(void)0;
+}
+}
+var934 = var936;
+goto RET_LABEL935;
+RET_LABEL935:(void)0;
+}
+var933 = var934;
+}
+var_939 = var933;
+if (var933){
+{
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
+var942 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
+if (unlikely(var942 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var940 = var942;
+RET_LABEL941:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#name (var940) on <var940:MClass> */
+var945 = var940->attrs[COLOR_model__MClass___name].val; /* _name on <var940:MClass> */
+if (unlikely(var945 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
+show_backtrace(1);
+}
+var943 = var945;
+RET_LABEL944:(void)0;
+}
+}
+if (varonce946) {
+var947 = varonce946;
+} else {
+var948 = "NativeString";
+var949 = 12;
+var950 = string__NativeString__to_s_with_length(var948, var949);
+var947 = var950;
+varonce946 = var947;
+}
+{
+{ /* Inline kernel#Object#!= (var943,var947) on <var943:String> */
+var_other = var947;
+{
+var955 = ((short int (*)(val*, val*))(var943->class->vft[COLOR_kernel__Object___61d_61d]))(var943, var_other) /* == on <var943:String>*/;
+var954 = var955;
+}
+var956 = !var954;
+var952 = var956;
+goto RET_LABEL953;
+RET_LABEL953:(void)0;
+}
+var951 = var952;
+}
+var925 = var951;
+} else {
+var925 = var_939;
+}
+if (var925){
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var959 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var959 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var957 = var959;
+RET_LABEL958:(void)0;
+}
+}
+{
+{ /* Inline model#MModule#pointer_type (var957) on <var957:MModule> */
+var962 = var957->attrs[COLOR_model__MModule___pointer_type].val != NULL; /* _pointer_type on <var957:MModule> */
+if(likely(var962)) {
+var963 = var957->attrs[COLOR_model__MModule___pointer_type].val; /* _pointer_type on <var957:MModule> */
+if (unlikely(var963 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pointer_type");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 217);
+show_backtrace(1);
+}
+} else {
+if (varonce964) {
+var965 = varonce964;
+} else {
+var966 = "Pointer";
+var967 = 7;
+var968 = string__NativeString__to_s_with_length(var966, var967);
+var965 = var968;
+varonce964 = var965;
+}
+{
+var969 = model__MModule__get_primitive_class(var957, var965);
+}
+{
+{ /* Inline model#MClass#mclass_type (var969) on <var969:MClass> */
+var972 = var969->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var969:MClass> */
+if (unlikely(var972 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
+show_backtrace(1);
+}
+var970 = var972;
+RET_LABEL971:(void)0;
+}
+}
+var957->attrs[COLOR_model__MModule___pointer_type].val = var970; /* _pointer_type on <var957:MModule> */
+var963 = var970;
+}
+var960 = var963;
+RET_LABEL961:(void)0;
+}
+}
+var_pointer_type = var960;
+if (varonce973) {
+var974 = varonce973;
+} else {
+var975 = "NEW_";
+var976 = 4;
+var977 = string__NativeString__to_s_with_length(var975, var976);
+var974 = var977;
+varonce973 = var974;
+}
+var978 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var978 = array_instance Array[Object] */
+var979 = 2;
+var980 = NEW_array__NativeArray(var979, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var980)->values[0] = (val*) var974;
+((struct instance_array__NativeArray*)var980)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var978->class->vft[COLOR_array__Array__with_native]))(var978, var980, var979) /* with_native on <var978:Array[Object]>*/;
+}
+}
+{
+var981 = ((val* (*)(val*))(var978->class->vft[COLOR_string__Object__to_s]))(var978) /* to_s on <var978:Array[Object]>*/;
+}
+{
+var982 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce983) {
+var984 = varonce983;
+} else {
+var985 = " NEW_";
+var986 = 5;
+var987 = string__NativeString__to_s_with_length(var985, var986);
+var984 = var987;
+varonce983 = var984;
+}
+if (varonce988) {
+var989 = varonce988;
+} else {
+var990 = "(const struct type* type);";
+var991 = 26;
+var992 = string__NativeString__to_s_with_length(var990, var991);
+var989 = var992;
+varonce988 = var989;
+}
+var993 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var993 = array_instance Array[Object] */
+var994 = 4;
+var995 = NEW_array__NativeArray(var994, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var995)->values[0] = (val*) var982;
+((struct instance_array__NativeArray*)var995)->values[1] = (val*) var984;
+((struct instance_array__NativeArray*)var995)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var995)->values[3] = (val*) var989;
+{
+((void (*)(val*, val*, long))(var993->class->vft[COLOR_array__Array__with_native]))(var993, var995, var994) /* with_native on <var993:Array[Object]>*/;
+}
+}
+{
+var996 = ((val* (*)(val*))(var993->class->vft[COLOR_string__Object__to_s]))(var993) /* to_s on <var993:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompiler__provide_declaration(self, var981, var996); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+if (varonce997) {
+var998 = varonce997;
+} else {
+var999 = "/* allocate ";
+var1000 = 12;
+var1001 = string__NativeString__to_s_with_length(var999, var1000);
+var998 = var1001;
+varonce997 = var998;
+}
+if (varonce1002) {
+var1003 = varonce1002;
+} else {
+var1004 = " */";
+var1005 = 3;
+var1006 = string__NativeString__to_s_with_length(var1004, var1005);
+var1003 = var1006;
+varonce1002 = var1003;
+}
+var1007 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1007 = array_instance Array[Object] */
+var1008 = 3;
+var1009 = NEW_array__NativeArray(var1008, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1009)->values[0] = (val*) var998;
+((struct instance_array__NativeArray*)var1009)->values[1] = (val*) var_mtype;
+((struct instance_array__NativeArray*)var1009)->values[2] = (val*) var1003;
+{
+((void (*)(val*, val*, long))(var1007->class->vft[COLOR_array__Array__with_native]))(var1007, var1009, var1008) /* with_native on <var1007:Array[Object]>*/;
+}
+}
+{
+var1010 = ((val* (*)(val*))(var1007->class->vft[COLOR_string__Object__to_s]))(var1007) /* to_s on <var1007:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1010); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+var1011 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce1012) {
+var1013 = varonce1012;
+} else {
+var1014 = " NEW_";
+var1015 = 5;
+var1016 = string__NativeString__to_s_with_length(var1014, var1015);
+var1013 = var1016;
+varonce1012 = var1013;
+}
+if (varonce1017) {
+var1018 = varonce1017;
+} else {
+var1019 = "(const struct type* type) {";
+var1020 = 27;
+var1021 = string__NativeString__to_s_with_length(var1019, var1020);
+var1018 = var1021;
+varonce1017 = var1018;
+}
+var1022 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1022 = array_instance Array[Object] */
+var1023 = 4;
+var1024 = NEW_array__NativeArray(var1023, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1024)->values[0] = (val*) var1011;
+((struct instance_array__NativeArray*)var1024)->values[1] = (val*) var1013;
+((struct instance_array__NativeArray*)var1024)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1024)->values[3] = (val*) var1018;
+{
+((void (*)(val*, val*, long))(var1022->class->vft[COLOR_array__Array__with_native]))(var1022, var1024, var1023) /* with_native on <var1022:Array[Object]>*/;
+}
+}
+{
+var1025 = ((val* (*)(val*))(var1022->class->vft[COLOR_string__Object__to_s]))(var1022) /* to_s on <var1022:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1025); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (var_is_dead){
+if (varonce1026) {
+var1027 = varonce1026;
+} else {
+var1028 = " is DEAD";
+var1029 = 8;
+var1030 = string__NativeString__to_s_with_length(var1028, var1029);
+var1027 = var1030;
+varonce1026 = var1027;
+}
+var1031 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1031 = array_instance Array[Object] */
+var1032 = 2;
+var1033 = NEW_array__NativeArray(var1032, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1033)->values[0] = (val*) var_mclass;
+((struct instance_array__NativeArray*)var1033)->values[1] = (val*) var1027;
+{
+((void (*)(val*, val*, long))(var1031->class->vft[COLOR_array__Array__with_native]))(var1031, var1033, var1032) /* with_native on <var1031:Array[Object]>*/;
+}
+}
+{
+var1034 = ((val* (*)(val*))(var1031->class->vft[COLOR_string__Object__to_s]))(var1031) /* to_s on <var1031:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var1034); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (varonce1035) {
+var1036 = varonce1035;
+} else {
+var1037 = "self";
+var1038 = 4;
+var1039 = string__NativeString__to_s_with_length(var1037, var1038);
+var1036 = var1039;
+varonce1035 = var1036;
+}
+{
+var1040 = abstract_compiler__AbstractCompilerVisitor__new_named_var(var_v, var_mtype, var1036);
+}
+var_res1041 = var1040;
+var1042 = 1;
+{
+{ /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res1041,var1042) on <var_res1041:RuntimeVariable> */
+var_res1041->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s = var1042; /* _is_exact on <var_res1041:RuntimeVariable> */
+RET_LABEL1043:(void)0;
+}
+}
+if (varonce1044) {
+var1045 = varonce1044;
+} else {
+var1046 = " = nit_alloc(sizeof(struct instance_";
+var1047 = 36;
+var1048 = string__NativeString__to_s_with_length(var1046, var1047);
+var1045 = var1048;
+varonce1044 = var1045;
+}
+{
+var1049 = ((val* (*)(val*))(var_pointer_type->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_pointer_type) /* c_name on <var_pointer_type:MClassType>*/;
+}
+if (varonce1050) {
+var1051 = varonce1050;
+} else {
+var1052 = "));";
+var1053 = 3;
+var1054 = string__NativeString__to_s_with_length(var1052, var1053);
+var1051 = var1054;
+varonce1050 = var1051;
+}
+var1055 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1055 = array_instance Array[Object] */
+var1056 = 4;
+var1057 = NEW_array__NativeArray(var1056, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1057)->values[0] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1057)->values[1] = (val*) var1045;
+((struct instance_array__NativeArray*)var1057)->values[2] = (val*) var1049;
+((struct instance_array__NativeArray*)var1057)->values[3] = (val*) var1051;
+{
+((void (*)(val*, val*, long))(var1055->class->vft[COLOR_array__Array__with_native]))(var1055, var1057, var1056) /* with_native on <var1055:Array[Object]>*/;
+}
+}
+{
+var1058 = ((val* (*)(val*))(var1055->class->vft[COLOR_string__Object__to_s]))(var1055) /* to_s on <var1055:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1058); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1059) {
+var1060 = varonce1059;
+} else {
+var1061 = "->type = type;";
+var1062 = 14;
+var1063 = string__NativeString__to_s_with_length(var1061, var1062);
+var1060 = var1063;
+varonce1059 = var1060;
+}
+var1064 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1064 = array_instance Array[Object] */
+var1065 = 2;
+var1066 = NEW_array__NativeArray(var1065, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1066)->values[0] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1066)->values[1] = (val*) var1060;
+{
+((void (*)(val*, val*, long))(var1064->class->vft[COLOR_array__Array__with_native]))(var1064, var1066, var1065) /* with_native on <var1064:Array[Object]>*/;
+}
+}
+{
+var1067 = ((val* (*)(val*))(var1064->class->vft[COLOR_string__Object__to_s]))(var1064) /* to_s on <var1064:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1067); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1068) {
+var1069 = varonce1068;
+} else {
+var1070 = "type";
+var1071 = 4;
+var1072 = string__NativeString__to_s_with_length(var1070, var1071);
+var1069 = var1072;
+varonce1068 = var1069;
+}
+{
+separate_compiler__SeparateCompiler__hardening_live_type(self, var_v, var1069); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
+}
+if (varonce1073) {
+var1074 = varonce1073;
+} else {
+var1075 = "class_";
+var1076 = 6;
+var1077 = string__NativeString__to_s_with_length(var1075, var1076);
+var1074 = var1077;
+varonce1073 = var1074;
+}
+var1078 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1078 = array_instance Array[Object] */
+var1079 = 2;
+var1080 = NEW_array__NativeArray(var1079, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1080)->values[0] = (val*) var1074;
+((struct instance_array__NativeArray*)var1080)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var1078->class->vft[COLOR_array__Array__with_native]))(var1078, var1080, var1079) /* with_native on <var1078:Array[Object]>*/;
+}
+}
+{
+var1081 = ((val* (*)(val*))(var1078->class->vft[COLOR_string__Object__to_s]))(var1078) /* to_s on <var1078:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v, var1081); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1082) {
+var1083 = varonce1082;
+} else {
+var1084 = "->class = &class_";
+var1085 = 17;
+var1086 = string__NativeString__to_s_with_length(var1084, var1085);
+var1083 = var1086;
+varonce1082 = var1083;
+}
+if (varonce1087) {
+var1088 = varonce1087;
+} else {
+var1089 = ";";
+var1090 = 1;
+var1091 = string__NativeString__to_s_with_length(var1089, var1090);
+var1088 = var1091;
+varonce1087 = var1088;
+}
+var1092 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1092 = array_instance Array[Object] */
+var1093 = 4;
+var1094 = NEW_array__NativeArray(var1093, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1094)->values[0] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1094)->values[1] = (val*) var1083;
+((struct instance_array__NativeArray*)var1094)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1094)->values[3] = (val*) var1088;
+{
+((void (*)(val*, val*, long))(var1092->class->vft[COLOR_array__Array__with_native]))(var1092, var1094, var1093) /* with_native on <var1092:Array[Object]>*/;
+}
+}
+{
+var1095 = ((val* (*)(val*))(var1092->class->vft[COLOR_string__Object__to_s]))(var1092) /* to_s on <var1092:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1095); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1096) {
+var1097 = varonce1096;
+} else {
+var1098 = "((struct instance_";
+var1099 = 18;
+var1100 = string__NativeString__to_s_with_length(var1098, var1099);
+var1097 = var1100;
+varonce1096 = var1097;
+}
+{
+var1101 = ((val* (*)(val*))(var_pointer_type->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_pointer_type) /* c_name on <var_pointer_type:MClassType>*/;
+}
+if (varonce1102) {
+var1103 = varonce1102;
+} else {
+var1104 = "*)";
+var1105 = 2;
+var1106 = string__NativeString__to_s_with_length(var1104, var1105);
+var1103 = var1106;
+varonce1102 = var1103;
+}
+if (varonce1107) {
+var1108 = varonce1107;
+} else {
+var1109 = ")->value = NULL;";
+var1110 = 16;
+var1111 = string__NativeString__to_s_with_length(var1109, var1110);
+var1108 = var1111;
+varonce1107 = var1108;
+}
+var1112 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1112 = array_instance Array[Object] */
+var1113 = 5;
+var1114 = NEW_array__NativeArray(var1113, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1114)->values[0] = (val*) var1097;
+((struct instance_array__NativeArray*)var1114)->values[1] = (val*) var1101;
+((struct instance_array__NativeArray*)var1114)->values[2] = (val*) var1103;
+((struct instance_array__NativeArray*)var1114)->values[3] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1114)->values[4] = (val*) var1108;
+{
+((void (*)(val*, val*, long))(var1112->class->vft[COLOR_array__Array__with_native]))(var1112, var1114, var1113) /* with_native on <var1112:Array[Object]>*/;
+}
+}
+{
+var1115 = ((val* (*)(val*))(var1112->class->vft[COLOR_string__Object__to_s]))(var1112) /* to_s on <var1112:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1115); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1116) {
+var1117 = varonce1116;
+} else {
+var1118 = "return ";
+var1119 = 7;
+var1120 = string__NativeString__to_s_with_length(var1118, var1119);
+var1117 = var1120;
+varonce1116 = var1117;
+}
+if (varonce1121) {
+var1122 = varonce1121;
+} else {
+var1123 = ";";
+var1124 = 1;
+var1125 = string__NativeString__to_s_with_length(var1123, var1124);
+var1122 = var1125;
+varonce1121 = var1122;
+}
+var1126 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1126 = array_instance Array[Object] */
+var1127 = 3;
+var1128 = NEW_array__NativeArray(var1127, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1128)->values[0] = (val*) var1117;
+((struct instance_array__NativeArray*)var1128)->values[1] = (val*) var_res1041;
+((struct instance_array__NativeArray*)var1128)->values[2] = (val*) var1122;
+{
+((void (*)(val*, val*, long))(var1126->class->vft[COLOR_array__Array__with_native]))(var1126, var1128, var1127) /* with_native on <var1126:Array[Object]>*/;
+}
+}
+{
+var1129 = ((val* (*)(val*))(var1126->class->vft[COLOR_string__Object__to_s]))(var1126) /* to_s on <var1126:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1129); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (varonce1130) {
+var1131 = varonce1130;
+} else {
+var1132 = "}";
+var1133 = 1;
+var1134 = string__NativeString__to_s_with_length(var1132, var1133);
+var1131 = var1134;
+varonce1130 = var1131;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1131); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+goto RET_LABEL;
+} else {
+}
+}
+}
+if (varonce1135) {
+var1136 = varonce1135;
+} else {
+var1137 = "NEW_";
+var1138 = 4;
+var1139 = string__NativeString__to_s_with_length(var1137, var1138);
+var1136 = var1139;
+varonce1135 = var1136;
+}
+var1140 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1140 = array_instance Array[Object] */
+var1141 = 2;
+var1142 = NEW_array__NativeArray(var1141, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1142)->values[0] = (val*) var1136;
+((struct instance_array__NativeArray*)var1142)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var1140->class->vft[COLOR_array__Array__with_native]))(var1140, var1142, var1141) /* with_native on <var1140:Array[Object]>*/;
+}
+}
+{
+var1143 = ((val* (*)(val*))(var1140->class->vft[COLOR_string__Object__to_s]))(var1140) /* to_s on <var1140:Array[Object]>*/;
+}
+{
+var1144 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce1145) {
+var1146 = varonce1145;
+} else {
+var1147 = " NEW_";
+var1148 = 5;
+var1149 = string__NativeString__to_s_with_length(var1147, var1148);
+var1146 = var1149;
+varonce1145 = var1146;
+}
+if (varonce1150) {
+var1151 = varonce1150;
+} else {
+var1152 = "(const struct type* type);";
+var1153 = 26;
+var1154 = string__NativeString__to_s_with_length(var1152, var1153);
+var1151 = var1154;
+varonce1150 = var1151;
+}
+var1155 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1155 = array_instance Array[Object] */
+var1156 = 4;
+var1157 = NEW_array__NativeArray(var1156, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1157)->values[0] = (val*) var1144;
+((struct instance_array__NativeArray*)var1157)->values[1] = (val*) var1146;
+((struct instance_array__NativeArray*)var1157)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1157)->values[3] = (val*) var1151;
+{
+((void (*)(val*, val*, long))(var1155->class->vft[COLOR_array__Array__with_native]))(var1155, var1157, var1156) /* with_native on <var1155:Array[Object]>*/;
+}
+}
+{
+var1158 = ((val* (*)(val*))(var1155->class->vft[COLOR_string__Object__to_s]))(var1155) /* to_s on <var1155:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompiler__provide_declaration(self, var1143, var1158); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
+}
+if (varonce1159) {
+var1160 = varonce1159;
+} else {
+var1161 = "/* allocate ";
+var1162 = 12;
+var1163 = string__NativeString__to_s_with_length(var1161, var1162);
+var1160 = var1163;
+varonce1159 = var1160;
+}
+if (varonce1164) {
+var1165 = varonce1164;
+} else {
+var1166 = " */";
+var1167 = 3;
+var1168 = string__NativeString__to_s_with_length(var1166, var1167);
+var1165 = var1168;
+varonce1164 = var1165;
+}
+var1169 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1169 = array_instance Array[Object] */
+var1170 = 3;
+var1171 = NEW_array__NativeArray(var1170, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1171)->values[0] = (val*) var1160;
+((struct instance_array__NativeArray*)var1171)->values[1] = (val*) var_mtype;
+((struct instance_array__NativeArray*)var1171)->values[2] = (val*) var1165;
+{
+((void (*)(val*, val*, long))(var1169->class->vft[COLOR_array__Array__with_native]))(var1169, var1171, var1170) /* with_native on <var1169:Array[Object]>*/;
+}
+}
+{
+var1172 = ((val* (*)(val*))(var1169->class->vft[COLOR_string__Object__to_s]))(var1169) /* to_s on <var1169:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1172); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+{
+var1173 = abstract_compiler__MClassType__ctype(var_mtype);
+}
+if (varonce1174) {
+var1175 = varonce1174;
+} else {
+var1176 = " NEW_";
+var1177 = 5;
+var1178 = string__NativeString__to_s_with_length(var1176, var1177);
+var1175 = var1178;
+varonce1174 = var1175;
+}
+if (varonce1179) {
+var1180 = varonce1179;
+} else {
+var1181 = "(const struct type* type) {";
+var1182 = 27;
+var1183 = string__NativeString__to_s_with_length(var1181, var1182);
+var1180 = var1183;
+varonce1179 = var1180;
+}
+var1184 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1184 = array_instance Array[Object] */
+var1185 = 4;
+var1186 = NEW_array__NativeArray(var1185, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1186)->values[0] = (val*) var1173;
+((struct instance_array__NativeArray*)var1186)->values[1] = (val*) var1175;
+((struct instance_array__NativeArray*)var1186)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1186)->values[3] = (val*) var1180;
+{
+((void (*)(val*, val*, long))(var1184->class->vft[COLOR_array__Array__with_native]))(var1184, var1186, var1185) /* with_native on <var1184:Array[Object]>*/;
+}
+}
+{
+var1187 = ((val* (*)(val*))(var1184->class->vft[COLOR_string__Object__to_s]))(var1184) /* to_s on <var1184:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_decl(var_v, var1187); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
+}
+if (var_is_dead){
+if (varonce1188) {
+var1189 = varonce1188;
+} else {
+var1190 = " is DEAD";
+var1191 = 8;
+var1192 = string__NativeString__to_s_with_length(var1190, var1191);
+var1189 = var1192;
+varonce1188 = var1189;
+}
+var1193 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1193 = array_instance Array[Object] */
+var1194 = 2;
+var1195 = NEW_array__NativeArray(var1194, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1195)->values[0] = (val*) var_mclass;
+((struct instance_array__NativeArray*)var1195)->values[1] = (val*) var1189;
+{
+((void (*)(val*, val*, long))(var1193->class->vft[COLOR_array__Array__with_native]))(var1193, var1195, var1194) /* with_native on <var1193:Array[Object]>*/;
+}
+}
+{
+var1196 = ((val* (*)(val*))(var1193->class->vft[COLOR_string__Object__to_s]))(var1193) /* to_s on <var1193:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var1196); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+} else {
+if (varonce1197) {
+var1198 = varonce1197;
+} else {
+var1199 = "self";
+var1200 = 4;
+var1201 = string__NativeString__to_s_with_length(var1199, var1200);
+var1198 = var1201;
+varonce1197 = var1198;
+}
+{
+var1202 = abstract_compiler__AbstractCompilerVisitor__new_named_var(var_v, var_mtype, var1198);
+}
+var_res1203 = var1202;
+var1204 = 1;
+{
+{ /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res1203,var1204) on <var_res1203:RuntimeVariable> */
+var_res1203->attrs[COLOR_abstract_compiler__RuntimeVariable___is_exact].s = var1204; /* _is_exact on <var_res1203:RuntimeVariable> */
+RET_LABEL1205:(void)0;
+}
+}
+if (varonce1206) {
+var1207 = varonce1206;
+} else {
+var1208 = " = nit_alloc(sizeof(struct instance) + ";
+var1209 = 39;
+var1210 = string__NativeString__to_s_with_length(var1208, var1209);
+var1207 = var1210;
+varonce1206 = var1207;
+}
+{
+{ /* Inline array#AbstractArrayRead#length (var_attrs) on <var_attrs:Array[nullable MPropDef]> */
+var1213 = var_attrs->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_attrs:Array[nullable MPropDef]> */
+var1211 = var1213;
+RET_LABEL1212:(void)0;
+}
+}
+if (varonce1214) {
+var1215 = varonce1214;
+} else {
+var1216 = "*sizeof(nitattribute_t));";
+var1217 = 25;
+var1218 = string__NativeString__to_s_with_length(var1216, var1217);
+var1215 = var1218;
+varonce1214 = var1215;
+}
+var1219 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1219 = array_instance Array[Object] */
+var1220 = 4;
+var1221 = NEW_array__NativeArray(var1220, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1221)->values[0] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1221)->values[1] = (val*) var1207;
+var1222 = BOX_kernel__Int(var1211); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var1221)->values[2] = (val*) var1222;
+((struct instance_array__NativeArray*)var1221)->values[3] = (val*) var1215;
+{
+((void (*)(val*, val*, long))(var1219->class->vft[COLOR_array__Array__with_native]))(var1219, var1221, var1220) /* with_native on <var1219:Array[Object]>*/;
+}
+}
+{
+var1223 = ((val* (*)(val*))(var1219->class->vft[COLOR_string__Object__to_s]))(var1219) /* to_s on <var1219:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1223); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1224) {
+var1225 = varonce1224;
+} else {
+var1226 = "->type = type;";
+var1227 = 14;
+var1228 = string__NativeString__to_s_with_length(var1226, var1227);
+var1225 = var1228;
+varonce1224 = var1225;
+}
+var1229 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1229 = array_instance Array[Object] */
+var1230 = 2;
+var1231 = NEW_array__NativeArray(var1230, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1231)->values[0] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1231)->values[1] = (val*) var1225;
+{
+((void (*)(val*, val*, long))(var1229->class->vft[COLOR_array__Array__with_native]))(var1229, var1231, var1230) /* with_native on <var1229:Array[Object]>*/;
+}
+}
+{
+var1232 = ((val* (*)(val*))(var1229->class->vft[COLOR_string__Object__to_s]))(var1229) /* to_s on <var1229:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1232); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1233) {
+var1234 = varonce1233;
+} else {
+var1235 = "type";
+var1236 = 4;
+var1237 = string__NativeString__to_s_with_length(var1235, var1236);
+var1234 = var1237;
+varonce1233 = var1234;
+}
+{
+separate_compiler__SeparateCompiler__hardening_live_type(self, var_v, var1234); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
+}
+if (varonce1238) {
+var1239 = varonce1238;
+} else {
+var1240 = "class_";
+var1241 = 6;
+var1242 = string__NativeString__to_s_with_length(var1240, var1241);
+var1239 = var1242;
+varonce1238 = var1239;
+}
+var1243 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1243 = array_instance Array[Object] */
+var1244 = 2;
+var1245 = NEW_array__NativeArray(var1244, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1245)->values[0] = (val*) var1239;
+((struct instance_array__NativeArray*)var1245)->values[1] = (val*) var_c_name;
+{
+((void (*)(val*, val*, long))(var1243->class->vft[COLOR_array__Array__with_native]))(var1243, var1245, var1244) /* with_native on <var1243:Array[Object]>*/;
+}
+}
+{
+var1246 = ((val* (*)(val*))(var1243->class->vft[COLOR_string__Object__to_s]))(var1243) /* to_s on <var1243:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v, var1246); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1247) {
+var1248 = varonce1247;
+} else {
+var1249 = "->class = &class_";
+var1250 = 17;
+var1251 = string__NativeString__to_s_with_length(var1249, var1250);
+var1248 = var1251;
+varonce1247 = var1248;
+}
+if (varonce1252) {
+var1253 = varonce1252;
+} else {
+var1254 = ";";
+var1255 = 1;
+var1256 = string__NativeString__to_s_with_length(var1254, var1255);
+var1253 = var1256;
+varonce1252 = var1253;
+}
+var1257 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1257 = array_instance Array[Object] */
+var1258 = 4;
+var1259 = NEW_array__NativeArray(var1258, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1259)->values[0] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1259)->values[1] = (val*) var1248;
+((struct instance_array__NativeArray*)var1259)->values[2] = (val*) var_c_name;
+((struct instance_array__NativeArray*)var1259)->values[3] = (val*) var1253;
+{
+((void (*)(val*, val*, long))(var1257->class->vft[COLOR_array__Array__with_native]))(var1257, var1259, var1258) /* with_native on <var1257:Array[Object]>*/;
+}
+}
+{
+var1260 = ((val* (*)(val*))(var1257->class->vft[COLOR_string__Object__to_s]))(var1257) /* to_s on <var1257:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1260); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+{
+abstract_compiler__AbstractCompiler__generate_init_attr(self, var_v, var_res1203, var_mtype); /* Direct call abstract_compiler#AbstractCompiler#generate_init_attr on <self:SeparateCompiler>*/
+}
+{
+abstract_compiler__AbstractCompilerVisitor__set_finalizer(var_v, var_res1203); /* Direct call abstract_compiler#AbstractCompilerVisitor#set_finalizer on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce1261) {
+var1262 = varonce1261;
+} else {
+var1263 = "return ";
+var1264 = 7;
+var1265 = string__NativeString__to_s_with_length(var1263, var1264);
+var1262 = var1265;
+varonce1261 = var1262;
+}
+if (varonce1266) {
+var1267 = varonce1266;
+} else {
+var1268 = ";";
+var1269 = 1;
+var1270 = string__NativeString__to_s_with_length(var1268, var1269);
+var1267 = var1270;
+varonce1266 = var1267;
+}
+var1271 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var1271 = array_instance Array[Object] */
+var1272 = 3;
+var1273 = NEW_array__NativeArray(var1272, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var1273)->values[0] = (val*) var1262;
+((struct instance_array__NativeArray*)var1273)->values[1] = (val*) var_res1203;
+((struct instance_array__NativeArray*)var1273)->values[2] = (val*) var1267;
+{
+((void (*)(val*, val*, long))(var1271->class->vft[COLOR_array__Array__with_native]))(var1271, var1273, var1272) /* with_native on <var1271:Array[Object]>*/;
+}
+}
+{
+var1274 = ((val* (*)(val*))(var1271->class->vft[COLOR_string__Object__to_s]))(var1271) /* to_s on <var1271:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1274); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+}
+if (varonce1275) {
+var1276 = varonce1275;
+} else {
+var1277 = "}";
+var1278 = 1;
+var1279 = string__NativeString__to_s_with_length(var1277, var1278);
+var1276 = var1279;
+varonce1275 = var1276;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var1276); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_class_to_c for (self: Object, MClass) */
+void VIRTUAL_separate_compiler__SeparateCompiler__compile_class_to_c(val* self, val* p0) {
+separate_compiler__SeparateCompiler__compile_class_to_c(self, p0); /* Direct call separate_compiler#SeparateCompiler#compile_class_to_c on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#hardening_live_type for (self: SeparateCompiler, SeparateCompilerVisitor, String) */
+void separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var_v /* var v: SeparateCompilerVisitor */;
+val* var_t /* var t: String */;
+val* var1 /* : AbstractCompiler */;
+val* var3 /* : AbstractCompiler */;
+val* var4 /* : ModelBuilder */;
+val* var6 /* : ModelBuilder */;
+val* var7 /* : ToolContext */;
+val* var9 /* : ToolContext */;
+val* var10 /* : OptionBool */;
+val* var12 /* : OptionBool */;
+val* var13 /* : nullable Object */;
+val* var15 /* : nullable Object */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+static val* varonce;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : FlatString */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+long var25 /* : Int */;
+val* var26 /* : FlatString */;
+val* var27 /* : Array[Object] */;
+long var28 /* : Int */;
+val* var29 /* : NativeArray[Object] */;
+val* var30 /* : String */;
+static val* varonce31;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+long var34 /* : Int */;
+val* var35 /* : FlatString */;
+static val* varonce36;
+val* var37 /* : String */;
+char* var38 /* : NativeString */;
+long var39 /* : Int */;
+val* var40 /* : FlatString */;
+static val* varonce41;
+val* var42 /* : String */;
+char* var43 /* : NativeString */;
+long var44 /* : Int */;
+val* var45 /* : FlatString */;
+static val* varonce46;
+val* var47 /* : String */;
+char* var48 /* : NativeString */;
+long var49 /* : Int */;
+val* var50 /* : FlatString */;
+val* var51 /* : Array[Object] */;
+long var52 /* : Int */;
+val* var53 /* : NativeArray[Object] */;
+val* var54 /* : String */;
+static val* varonce55;
+val* var56 /* : String */;
+char* var57 /* : NativeString */;
+long var58 /* : Int */;
+val* var59 /* : FlatString */;
+static val* varonce60;
+val* var61 /* : String */;
+char* var62 /* : NativeString */;
+long var63 /* : Int */;
+val* var64 /* : FlatString */;
+val* var65 /* : Array[Object] */;
+long var66 /* : Int */;
+val* var67 /* : NativeArray[Object] */;
+val* var68 /* : String */;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+long var72 /* : Int */;
+val* var73 /* : FlatString */;
+static val* varonce74;
+val* var75 /* : String */;
+char* var76 /* : NativeString */;
+long var77 /* : Int */;
+val* var78 /* : FlatString */;
+/* Covariant cast for argument 0 (v) <p0:SeparateCompilerVisitor> isa VISITOR */
+/* <p0:SeparateCompilerVisitor> isa VISITOR */
+type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var)) {
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 826);
+show_backtrace(1);
+}
+var_v = p0;
+var_t = p1;
+{
+{ /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:SeparateCompilerVisitor> */
+var3 = var_v->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:SeparateCompilerVisitor> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
+var6 = var1->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler(SeparateCompiler)> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (var4) on <var4:ModelBuilder> */
+var9 = var4->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var4:ModelBuilder> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#ToolContext#opt_hardening (var7) on <var7:ToolContext> */
+var12 = var7->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <var7:ToolContext> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 47);
+show_backtrace(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var10) on <var10:OptionBool> */
+var15 = var10->attrs[COLOR_opts__Option___value].val; /* _value on <var10:OptionBool> */
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+var16 = ((struct instance_kernel__Bool*)var13)->value; /* autounbox from nullable Object to Bool */;
+var17 = !var16;
+if (var17){
+goto RET_LABEL;
+} else {
+}
+if (varonce) {
+var18 = varonce;
+} else {
+var19 = "if(";
+var20 = 3;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce = var18;
+}
+if (varonce22) {
+var23 = varonce22;
+} else {
+var24 = " == NULL) {";
+var25 = 11;
+var26 = string__NativeString__to_s_with_length(var24, var25);
+var23 = var26;
+varonce22 = var23;
+}
+var27 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var27 = array_instance Array[Object] */
+var28 = 3;
+var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var29)->values[0] = (val*) var18;
+((struct instance_array__NativeArray*)var29)->values[1] = (val*) var_t;
+((struct instance_array__NativeArray*)var29)->values[2] = (val*) var23;
+{
+((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
+}
+}
+{
+var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var30); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce31) {
+var32 = varonce31;
+} else {
+var33 = "type null";
+var34 = 9;
+var35 = string__NativeString__to_s_with_length(var33, var34);
+var32 = var35;
+varonce31 = var32;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var32); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce36) {
+var37 = varonce36;
+} else {
+var38 = "}";
+var39 = 1;
+var40 = string__NativeString__to_s_with_length(var38, var39);
+var37 = var40;
+varonce36 = var37;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var37); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce41) {
+var42 = varonce41;
+} else {
+var43 = "if(";
+var44 = 3;
+var45 = string__NativeString__to_s_with_length(var43, var44);
+var42 = var45;
+varonce41 = var42;
+}
+if (varonce46) {
+var47 = varonce46;
+} else {
+var48 = "->table_size == 0) {";
+var49 = 20;
+var50 = string__NativeString__to_s_with_length(var48, var49);
+var47 = var50;
+varonce46 = var47;
+}
+var51 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var51 = array_instance Array[Object] */
+var52 = 3;
+var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var53)->values[0] = (val*) var42;
+((struct instance_array__NativeArray*)var53)->values[1] = (val*) var_t;
+((struct instance_array__NativeArray*)var53)->values[2] = (val*) var47;
+{
+((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
+}
+}
+{
+var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce55) {
+var56 = varonce55;
+} else {
+var57 = "PRINT_ERROR(\"Insantiation of a dead type: %s\\n\", ";
+var58 = 49;
+var59 = string__NativeString__to_s_with_length(var57, var58);
+var56 = var59;
+varonce55 = var56;
+}
+if (varonce60) {
+var61 = varonce60;
+} else {
+var62 = "->name);";
+var63 = 8;
+var64 = string__NativeString__to_s_with_length(var62, var63);
+var61 = var64;
+varonce60 = var61;
+}
+var65 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var65 = array_instance Array[Object] */
+var66 = 3;
+var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var67)->values[0] = (val*) var56;
+((struct instance_array__NativeArray*)var67)->values[1] = (val*) var_t;
+((struct instance_array__NativeArray*)var67)->values[2] = (val*) var61;
+{
+((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
+}
+}
+{
+var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var68); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce69) {
+var70 = varonce69;
+} else {
+var71 = "type dead";
+var72 = 9;
+var73 = string__NativeString__to_s_with_length(var71, var72);
+var70 = var73;
+varonce69 = var70;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add_abort(var_v, var70); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
+}
+if (varonce74) {
+var75 = varonce74;
+} else {
+var76 = "}";
+var77 = 1;
+var78 = string__NativeString__to_s_with_length(var76, var77);
+var75 = var78;
+varonce74 = var75;
+}
+{
+abstract_compiler__AbstractCompilerVisitor__add(var_v, var75); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#hardening_live_type for (self: Object, SeparateCompilerVisitor, String) */
+void VIRTUAL_separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
+separate_compiler__SeparateCompiler__hardening_live_type(self, p0, p1); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#new_visitor for (self: SeparateCompiler): SeparateCompilerVisitor */
+val* separate_compiler__SeparateCompiler__new_visitor(val* self) {
+val* var /* : SeparateCompilerVisitor */;
+val* var1 /* : SeparateCompilerVisitor */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+var1 = NEW_separate_compiler__SeparateCompilerVisitor(&type_separate_compiler__SeparateCompilerVisitor);
+{
+abstract_compiler__AbstractCompilerVisitor__init(var1, self); /* Direct call abstract_compiler#AbstractCompilerVisitor#init on <var1:SeparateCompilerVisitor>*/
+}
+/* <var1:SeparateCompilerVisitor> isa VISITOR */
+type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= var1->type->table_size) {
+var2 = 0;
+} else {
+var2 = var1->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var2)) {
+var_class_name = var1 == NULL ? "null" : var1->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 839);
+show_backtrace(1);
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
+val* VIRTUAL_separate_compiler__SeparateCompiler__new_visitor(val* self) {
+val* var /* : AbstractCompilerVisitor */;
+val* var1 /* : SeparateCompilerVisitor */;
+var1 = separate_compiler__SeparateCompiler__new_visitor(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_tables for (self: SeparateCompiler): Map[MType, Array[nullable MType]] */
+val* separate_compiler__SeparateCompiler__type_tables(val* self) {
+val* var /* : Map[MType, Array[nullable MType]] */;
+val* var1 /* : Map[MType, Array[nullable MType]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 843);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_tables for (self: Object): Map[MType, Array[nullable MType]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__type_tables(val* self) {
+val* var /* : Map[MType, Array[nullable MType]] */;
+val* var1 /* : Map[MType, Array[nullable MType]] */;
+val* var3 /* : Map[MType, Array[nullable MType]] */;
+{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 843);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#type_tables= for (self: SeparateCompiler, Map[MType, Array[nullable MType]]) */
+void separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val = p0; /* _type_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#type_tables= for (self: Object, Map[MType, Array[nullable MType]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#type_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val = p0; /* _type_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables for (self: SeparateCompiler): Map[MClassType, Array[nullable MType]] */
+val* separate_compiler__SeparateCompiler__resolution_tables(val* self) {
+val* var /* : Map[MClassType, Array[nullable MType]] */;
+val* var1 /* : Map[MClassType, Array[nullable MType]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 844);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables for (self: Object): Map[MClassType, Array[nullable MType]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables(val* self) {
+val* var /* : Map[MClassType, Array[nullable MType]] */;
+val* var1 /* : Map[MClassType, Array[nullable MType]] */;
+val* var3 /* : Map[MClassType, Array[nullable MType]] */;
+{ /* Inline separate_compiler#SeparateCompiler#resolution_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 844);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables= for (self: SeparateCompiler, Map[MClassType, Array[nullable MType]]) */
+void separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val = p0; /* _resolution_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#resolution_tables= for (self: Object, Map[MClassType, Array[nullable MType]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#resolution_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val = p0; /* _resolution_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#method_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
+val* separate_compiler__SeparateCompiler__method_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 845);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#method_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__method_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var3 /* : Map[MClass, Array[nullable MPropDef]] */;
+{ /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 845);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#method_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
+void separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val = p0; /* _method_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#method_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#method_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val = p0; /* _method_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
+val* separate_compiler__SeparateCompiler__attr_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateCompiler> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 846);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
+val* VIRTUAL_separate_compiler__SeparateCompiler__attr_tables(val* self) {
+val* var /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var3 /* : Map[MClass, Array[nullable MPropDef]] */;
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:Object(SeparateCompiler)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 846);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
+void separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val = p0; /* _attr_tables on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#attr_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
+void VIRTUAL_separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val = p0; /* _attr_tables on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#display_stats for (self: SeparateCompiler) */
+void separate_compiler__SeparateCompiler__display_stats(val* self) {
+val* var /* : ModelBuilder */;
+val* var2 /* : ModelBuilder */;
+val* var3 /* : ToolContext */;
+val* var5 /* : ToolContext */;
+val* var6 /* : OptionBool */;
+val* var8 /* : OptionBool */;
+val* var9 /* : nullable Object */;
+val* var11 /* : nullable Object */;
+short int var12 /* : Bool */;
+val* var13 /* : ModelBuilder */;
+val* var15 /* : ModelBuilder */;
+val* var16 /* : ToolContext */;
+val* var18 /* : ToolContext */;
+val* var19 /* : OptionBool */;
+val* var21 /* : OptionBool */;
+val* var22 /* : nullable Object */;
+val* var24 /* : nullable Object */;
+short int var25 /* : Bool */;
+val* var26 /* : ModelBuilder */;
+val* var28 /* : ModelBuilder */;
+val* var29 /* : ToolContext */;
+val* var31 /* : ToolContext */;
+val* var_tc /* var tc: ToolContext */;
+static val* varonce;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+long var34 /* : Int */;
+val* var35 /* : FlatString */;
+long var36 /* : Int */;
+val* var37 /* : ModelBuilder */;
+val* var39 /* : ModelBuilder */;
+long var40 /* : Int */;
+long var42 /* : Int */;
+val* var43 /* : ModelBuilder */;
+val* var45 /* : ModelBuilder */;
+long var46 /* : Int */;
+long var48 /* : Int */;
+long var49 /* : Int */;
+short int var51 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var52 /* : Int */;
+val* var53 /* : ModelBuilder */;
+val* var55 /* : ModelBuilder */;
+long var56 /* : Int */;
+long var58 /* : Int */;
+long var59 /* : Int */;
+short int var61 /* : Bool */;
+int cltype62;
+int idtype63;
+const char* var_class_name64;
+long var65 /* : Int */;
+long var_nb_invok_total /* var nb_invok_total: Int */;
+static val* varonce66;
+val* var67 /* : String */;
+char* var68 /* : NativeString */;
+long var69 /* : Int */;
+val* var70 /* : FlatString */;
+val* var71 /* : Array[Object] */;
+long var72 /* : Int */;
+val* var73 /* : NativeArray[Object] */;
+val* var74 /* : Object */;
+val* var75 /* : String */;
+long var76 /* : Int */;
+static val* varonce77;
+val* var78 /* : String */;
+char* var79 /* : NativeString */;
+long var80 /* : Int */;
+val* var81 /* : FlatString */;
+val* var82 /* : ModelBuilder */;
+val* var84 /* : ModelBuilder */;
+long var85 /* : Int */;
+long var87 /* : Int */;
+static val* varonce88;
+val* var89 /* : String */;
+char* var90 /* : NativeString */;
+long var91 /* : Int */;
+val* var92 /* : FlatString */;
+val* var93 /* : ModelBuilder */;
+val* var95 /* : ModelBuilder */;
+long var96 /* : Int */;
+long var98 /* : Int */;
+val* var99 /* : String */;
+static val* varonce100;
+val* var101 /* : String */;
+char* var102 /* : NativeString */;
+long var103 /* : Int */;
+val* var104 /* : FlatString */;
+val* var105 /* : Array[Object] */;
+long var106 /* : Int */;
+val* var107 /* : NativeArray[Object] */;
+val* var108 /* : Object */;
+val* var109 /* : String */;
+long var110 /* : Int */;
+static val* varonce111;
+val* var112 /* : String */;
+char* var113 /* : NativeString */;
+long var114 /* : Int */;
+val* var115 /* : FlatString */;
+val* var116 /* : ModelBuilder */;
+val* var118 /* : ModelBuilder */;
+long var119 /* : Int */;
+long var121 /* : Int */;
+static val* varonce122;
+val* var123 /* : String */;
+char* var124 /* : NativeString */;
+long var125 /* : Int */;
+val* var126 /* : FlatString */;
+val* var127 /* : ModelBuilder */;
+val* var129 /* : ModelBuilder */;
+long var130 /* : Int */;
+long var132 /* : Int */;
+val* var133 /* : String */;
+static val* varonce134;
+val* var135 /* : String */;
+char* var136 /* : NativeString */;
+long var137 /* : Int */;
+val* var138 /* : FlatString */;
+val* var139 /* : Array[Object] */;
+long var140 /* : Int */;
+val* var141 /* : NativeArray[Object] */;
+val* var142 /* : Object */;
+val* var143 /* : String */;
+long var144 /* : Int */;
+static val* varonce145;
+val* var146 /* : String */;
+char* var147 /* : NativeString */;
+long var148 /* : Int */;
+val* var149 /* : FlatString */;
+val* var150 /* : ModelBuilder */;
+val* var152 /* : ModelBuilder */;
+long var153 /* : Int */;
+long var155 /* : Int */;
+static val* varonce156;
+val* var157 /* : String */;
+char* var158 /* : NativeString */;
+long var159 /* : Int */;
+val* var160 /* : FlatString */;
+val* var161 /* : ModelBuilder */;
+val* var163 /* : ModelBuilder */;
+long var164 /* : Int */;
+long var166 /* : Int */;
+val* var167 /* : String */;
+static val* varonce168;
+val* var169 /* : String */;
+char* var170 /* : NativeString */;
+long var171 /* : Int */;
+val* var172 /* : FlatString */;
+val* var173 /* : Array[Object] */;
+long var174 /* : Int */;
+val* var175 /* : NativeArray[Object] */;
+val* var176 /* : Object */;
+val* var177 /* : String */;
+long var178 /* : Int */;
+{
+((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__display_stats]))(self) /* display_stats on <self:SeparateCompiler>*/;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (var) on <var:ModelBuilder> */
+var5 = var->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var:ModelBuilder> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ToolContext#opt_tables_metrics (var3) on <var3:ToolContext> */
+var8 = var3->attrs[COLOR_separate_compiler__ToolContext___opt_tables_metrics].val; /* _opt_tables_metrics on <var3:ToolContext> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_tables_metrics");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 44);
+show_backtrace(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var6) on <var6:OptionBool> */
+var11 = var6->attrs[COLOR_opts__Option___value].val; /* _value on <var6:OptionBool> */
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+var12 = ((struct instance_kernel__Bool*)var9)->value; /* autounbox from nullable Object to Bool */;
+if (var12){
+{
+((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__display_sizes]))(self) /* display_sizes on <self:SeparateCompiler>*/;
+}
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var15 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (var13) on <var13:ModelBuilder> */
+var18 = var13->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var13:ModelBuilder> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var16) on <var16:ToolContext> */
+var21 = var16->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var16:ToolContext> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 65);
+show_backtrace(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var19) on <var19:OptionBool> */
+var24 = var19->attrs[COLOR_opts__Option___value].val; /* _value on <var19:OptionBool> */
+var22 = var24;
+RET_LABEL23:(void)0;
+}
+}
+var25 = ((struct instance_kernel__Bool*)var22)->value; /* autounbox from nullable Object to Bool */;
+if (var25){
+{
+separate_compiler__SeparateCompiler__display_isset_checks(self); /* Direct call separate_compiler#SeparateCompiler#display_isset_checks on <self:SeparateCompiler>*/
+}
+} else {
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var28 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var26 = var28;
+RET_LABEL27:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (var26) on <var26:ModelBuilder> */
+var31 = var26->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var26:ModelBuilder> */
+if (unlikely(var31 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var29 = var31;
+RET_LABEL30:(void)0;
+}
+}
+var_tc = var29;
+if (varonce) {
+var32 = varonce;
+} else {
+var33 = "# implementation of method invocation";
+var34 = 37;
+var35 = string__NativeString__to_s_with_length(var33, var34);
+var32 = var35;
+varonce = var32;
+}
+var36 = 2;
+{
+toolcontext__ToolContext__info(var_tc, var32, var36); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var39 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var39 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var37 = var39;
+RET_LABEL38:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var37) on <var37:ModelBuilder> */
+var42 = var37->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var37:ModelBuilder> */
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var45 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var45 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var43 = var45;
+RET_LABEL44:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var43) on <var43:ModelBuilder> */
+var48 = var43->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var43:ModelBuilder> */
+var46 = var48;
+RET_LABEL47:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var40,var46) on <var40:Int> */
+/* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
+/* <var46:Int> isa OTHER */
+var51 = 1; /* easy <var46:Int> isa OTHER*/
+if (unlikely(!var51)) {
+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", 374);
+show_backtrace(1);
+}
+var52 = var40 + var46;
+var49 = var52;
+goto RET_LABEL50;
+RET_LABEL50:(void)0;
+}
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var55 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var55 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var53 = var55;
+RET_LABEL54:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var53) on <var53:ModelBuilder> */
+var58 = var53->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var53:ModelBuilder> */
+var56 = var58;
+RET_LABEL57:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var49,var56) on <var49:Int> */
+/* Covariant cast for argument 0 (i) <var56:Int> isa OTHER */
+/* <var56:Int> isa OTHER */
+var61 = 1; /* easy <var56:Int> isa OTHER*/
+if (unlikely(!var61)) {
+var_class_name64 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name64);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var65 = var49 + var56;
+var59 = var65;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
+}
+}
+var_nb_invok_total = var59;
+if (varonce66) {
+var67 = varonce66;
+} else {
+var68 = "total number of invocations: ";
+var69 = 29;
+var70 = string__NativeString__to_s_with_length(var68, var69);
+var67 = var70;
+varonce66 = var67;
+}
+var71 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var71 = array_instance Array[Object] */
+var72 = 2;
+var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var73)->values[0] = (val*) var67;
+var74 = BOX_kernel__Int(var_nb_invok_total); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var73)->values[1] = (val*) var74;
+{
+((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
+}
+}
+{
+var75 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
+}
+var76 = 2;
+{
+toolcontext__ToolContext__info(var_tc, var75, var76); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
+}
+if (varonce77) {
+var78 = varonce77;
+} else {
+var79 = "invocations by VFT send: ";
+var80 = 29;
+var81 = string__NativeString__to_s_with_length(var79, var80);
+var78 = var81;
+varonce77 = var78;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var84 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var84 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var82 = var84;
+RET_LABEL83:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var82) on <var82:ModelBuilder> */
+var87 = var82->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var82:ModelBuilder> */
+var85 = var87;
+RET_LABEL86:(void)0;
+}
+}
+if (varonce88) {
+var89 = varonce88;
+} else {
+var90 = " (";
+var91 = 2;
+var92 = string__NativeString__to_s_with_length(var90, var91);
+var89 = var92;
+varonce88 = var89;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var95 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var95 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var93 = var95;
+RET_LABEL94:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var93) on <var93:ModelBuilder> */
+var98 = var93->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var93:ModelBuilder> */
+var96 = var98;
+RET_LABEL97:(void)0;
+}
+}
+{
+var99 = abstract_compiler__AbstractCompiler__div(self, var96, var_nb_invok_total);
+}
+if (varonce100) {
+var101 = varonce100;
+} else {
+var102 = "%)";
+var103 = 2;
+var104 = string__NativeString__to_s_with_length(var102, var103);
+var101 = var104;
+varonce100 = var101;
+}
+var105 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var105 = array_instance Array[Object] */
+var106 = 5;
+var107 = NEW_array__NativeArray(var106, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var107)->values[0] = (val*) var78;
+var108 = BOX_kernel__Int(var85); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var107)->values[1] = (val*) var108;
+((struct instance_array__NativeArray*)var107)->values[2] = (val*) var89;
+((struct instance_array__NativeArray*)var107)->values[3] = (val*) var99;
+((struct instance_array__NativeArray*)var107)->values[4] = (val*) var101;
+{
+((void (*)(val*, val*, long))(var105->class->vft[COLOR_array__Array__with_native]))(var105, var107, var106) /* with_native on <var105:Array[Object]>*/;
+}
+}
+{
+var109 = ((val* (*)(val*))(var105->class->vft[COLOR_string__Object__to_s]))(var105) /* to_s on <var105:Array[Object]>*/;
+}
+var110 = 2;
+{
+toolcontext__ToolContext__info(var_tc, var109, var110); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
+}
+if (varonce111) {
+var112 = varonce111;
+} else {
+var113 = "invocations by direct call: ";
+var114 = 29;
+var115 = string__NativeString__to_s_with_length(var113, var114);
+var112 = var115;
+varonce111 = var112;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var118 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var118 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var116 = var118;
+RET_LABEL117:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var116) on <var116:ModelBuilder> */
+var121 = var116->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var116:ModelBuilder> */
+var119 = var121;
+RET_LABEL120:(void)0;
+}
+}
+if (varonce122) {
+var123 = varonce122;
+} else {
+var124 = " (";
+var125 = 2;
+var126 = string__NativeString__to_s_with_length(var124, var125);
+var123 = var126;
+varonce122 = var123;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var129 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var129 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var127 = var129;
+RET_LABEL128:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var127) on <var127:ModelBuilder> */
+var132 = var127->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var127:ModelBuilder> */
+var130 = var132;
+RET_LABEL131:(void)0;
+}
+}
+{
+var133 = abstract_compiler__AbstractCompiler__div(self, var130, var_nb_invok_total);
+}
+if (varonce134) {
+var135 = varonce134;
+} else {
+var136 = "%)";
+var137 = 2;
+var138 = string__NativeString__to_s_with_length(var136, var137);
+var135 = var138;
+varonce134 = var135;
+}
+var139 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var139 = array_instance Array[Object] */
+var140 = 5;
+var141 = NEW_array__NativeArray(var140, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var141)->values[0] = (val*) var112;
+var142 = BOX_kernel__Int(var119); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var141)->values[1] = (val*) var142;
+((struct instance_array__NativeArray*)var141)->values[2] = (val*) var123;
+((struct instance_array__NativeArray*)var141)->values[3] = (val*) var133;
+((struct instance_array__NativeArray*)var141)->values[4] = (val*) var135;
+{
+((void (*)(val*, val*, long))(var139->class->vft[COLOR_array__Array__with_native]))(var139, var141, var140) /* with_native on <var139:Array[Object]>*/;
+}
+}
+{
+var143 = ((val* (*)(val*))(var139->class->vft[COLOR_string__Object__to_s]))(var139) /* to_s on <var139:Array[Object]>*/;
+}
+var144 = 2;
+{
+toolcontext__ToolContext__info(var_tc, var143, var144); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
+}
+if (varonce145) {
+var146 = varonce145;
+} else {
+var147 = "invocations by inlining: ";
+var148 = 29;
+var149 = string__NativeString__to_s_with_length(var147, var148);
+var146 = var149;
+varonce145 = var146;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var152 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var152 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var150 = var152;
+RET_LABEL151:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var150) on <var150:ModelBuilder> */
+var155 = var150->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var150:ModelBuilder> */
+var153 = var155;
+RET_LABEL154:(void)0;
+}
+}
+if (varonce156) {
+var157 = varonce156;
+} else {
+var158 = " (";
+var159 = 2;
+var160 = string__NativeString__to_s_with_length(var158, var159);
+var157 = var160;
+varonce156 = var157;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
+var163 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
+if (unlikely(var163 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
+show_backtrace(1);
+}
+var161 = var163;
+RET_LABEL162:(void)0;
+}
+}
+{
+{ /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var161) on <var161:ModelBuilder> */
+var166 = var161->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var161:ModelBuilder> */
+var164 = var166;
+RET_LABEL165:(void)0;
+}
+}
+{
+var167 = abstract_compiler__AbstractCompiler__div(self, var164, var_nb_invok_total);
+}
+if (varonce168) {
+var169 = varonce168;
+} else {
+var170 = "%)";
+var171 = 2;
+var172 = string__NativeString__to_s_with_length(var170, var171);
+var169 = var172;
+varonce168 = var169;
+}
+var173 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var173 = array_instance Array[Object] */
+var174 = 5;
+var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var175)->values[0] = (val*) var146;
+var176 = BOX_kernel__Int(var153); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var175)->values[1] = (val*) var176;
+((struct instance_array__NativeArray*)var175)->values[2] = (val*) var157;
+((struct instance_array__NativeArray*)var175)->values[3] = (val*) var167;
+((struct instance_array__NativeArray*)var175)->values[4] = (val*) var169;
+{
+((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
+}
+}
+{
+var177 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
+}
+var178 = 2;
+{
+toolcontext__ToolContext__info(var_tc, var177, var178); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#display_stats for (self: Object) */
+void VIRTUAL_separate_compiler__SeparateCompiler__display_stats(val* self) {
+separate_compiler__SeparateCompiler__display_stats(self); /* Direct call separate_compiler#SeparateCompiler#display_stats on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#display_sizes for (self: SeparateCompiler) */
+void separate_compiler__SeparateCompiler__display_sizes(val* self) {
+static val* varonce;
+val* var /* : String */;
+char* var1 /* : NativeString */;
+long var2 /* : Int */;
+val* var3 /* : FlatString */;
+static val* varonce4;
+val* var5 /* : String */;
+char* var6 /* : NativeString */;
+long var7 /* : Int */;
+val* var8 /* : FlatString */;
+long var9 /* : Int */;
+long var_total /* var total: Int */;
+long var10 /* : Int */;
+long var_holes /* var holes: Int */;
+val* var11 /* : Map[MType, Array[nullable MType]] */;
+val* var13 /* : Map[MType, Array[nullable MType]] */;
+val* var_ /* var : Map[MType, Array[nullable MType]] */;
+val* var14 /* : MapIterator[Object, nullable Object] */;
+val* var_15 /* var : MapIterator[MType, Array[nullable MType]] */;
+short int var16 /* : Bool */;
+val* var17 /* : Object */;
+val* var_t /* var t: MType */;
+val* var18 /* : nullable Object */;
+val* var_table /* var table: Array[nullable MType] */;
+long var19 /* : Int */;
+long var21 /* : Int */;
+long var22 /* : Int */;
+short int var24 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var25 /* : Int */;
+val* var_26 /* var : Array[nullable MType] */;
+val* var27 /* : ArrayIterator[nullable Object] */;
+val* var_28 /* var : ArrayIterator[nullable MType] */;
+short int var29 /* : Bool */;
+val* var30 /* : nullable Object */;
+val* var_e /* var e: nullable MType */;
+val* var31 /* : null */;
+short int var32 /* : Bool */;
+short int var33 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var35 /* : Bool */;
+short int var37 /* : Bool */;
+long var38 /* : Int */;
+long var39 /* : Int */;
+short int var41 /* : Bool */;
+int cltype42;
+int idtype43;
+const char* var_class_name44;
+long var45 /* : Int */;
+static val* varonce49;
+val* var50 /* : String */;
+char* var51 /* : NativeString */;
+long var52 /* : Int */;
+val* var53 /* : FlatString */;
+static val* varonce54;
+val* var55 /* : String */;
+char* var56 /* : NativeString */;
+long var57 /* : Int */;
+val* var58 /* : FlatString */;
+val* var59 /* : Array[Object] */;
+long var60 /* : Int */;
+val* var61 /* : NativeArray[Object] */;
+val* var62 /* : Object */;
+val* var63 /* : Object */;
+val* var64 /* : String */;
+static val* varonce65;
+val* var66 /* : String */;
+char* var67 /* : NativeString */;
+long var68 /* : Int */;
+val* var69 /* : FlatString */;
+static val* varonce70;
+val* var71 /* : String */;
+char* var72 /* : NativeString */;
+long var73 /* : Int */;
+val* var74 /* : FlatString */;
+long var75 /* : Int */;
+long var76 /* : Int */;
+val* var77 /* : Map[MClassType, Array[nullable MType]] */;
+val* var79 /* : Map[MClassType, Array[nullable MType]] */;
+val* var_80 /* var : Map[MClassType, Array[nullable MType]] */;
+val* var81 /* : MapIterator[Object, nullable Object] */;
+val* var_82 /* var : MapIterator[MClassType, Array[nullable MType]] */;
+short int var83 /* : Bool */;
+val* var84 /* : Object */;
+val* var_t85 /* var t: MClassType */;
+val* var86 /* : nullable Object */;
+val* var_table87 /* var table: Array[nullable MType] */;
+long var88 /* : Int */;
+long var90 /* : Int */;
+long var91 /* : Int */;
+short int var93 /* : Bool */;
+int cltype94;
+int idtype95;
+const char* var_class_name96;
+long var97 /* : Int */;
+val* var_98 /* var : Array[nullable MType] */;
+val* var99 /* : ArrayIterator[nullable Object] */;
+val* var_100 /* var : ArrayIterator[nullable MType] */;
+short int var101 /* : Bool */;
+val* var102 /* : nullable Object */;
+val* var_e103 /* var e: nullable MType */;
+val* var104 /* : null */;
+short int var105 /* : Bool */;
+short int var106 /* : Bool */;
+short int var108 /* : Bool */;
+short int var110 /* : Bool */;
+long var111 /* : Int */;
+long var112 /* : Int */;
+short int var114 /* : Bool */;
+int cltype115;
+int idtype116;
+const char* var_class_name117;
+long var118 /* : Int */;
+static val* varonce123;
+val* var124 /* : String */;
+char* var125 /* : NativeString */;
+long var126 /* : Int */;
+val* var127 /* : FlatString */;
+static val* varonce128;
+val* var129 /* : String */;
+char* var130 /* : NativeString */;
+long var131 /* : Int */;
+val* var132 /* : FlatString */;
+val* var133 /* : Array[Object] */;
+long var134 /* : Int */;
+val* var135 /* : NativeArray[Object] */;
+val* var136 /* : Object */;
+val* var137 /* : Object */;
+val* var138 /* : String */;
+static val* varonce139;
+val* var140 /* : String */;
+char* var141 /* : NativeString */;
+long var142 /* : Int */;
+val* var143 /* : FlatString */;
+static val* varonce144;
+val* var145 /* : String */;
+char* var146 /* : NativeString */;
+long var147 /* : Int */;
+val* var148 /* : FlatString */;
+long var149 /* : Int */;
+long var150 /* : Int */;
+val* var151 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var153 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var_154 /* var : Map[MClass, Array[nullable MPropDef]] */;
+val* var155 /* : MapIterator[Object, nullable Object] */;
+val* var_156 /* var : MapIterator[MClass, Array[nullable MPropDef]] */;
+short int var157 /* : Bool */;
+val* var158 /* : Object */;
+val* var_t159 /* var t: MClass */;
+val* var160 /* : nullable Object */;
+val* var_table161 /* var table: Array[nullable MPropDef] */;
+long var162 /* : Int */;
+long var164 /* : Int */;
+long var165 /* : Int */;
+short int var167 /* : Bool */;
+int cltype168;
+int idtype169;
+const char* var_class_name170;
+long var171 /* : Int */;
+val* var_172 /* var : Array[nullable MPropDef] */;
+val* var173 /* : ArrayIterator[nullable Object] */;
+val* var_174 /* var : ArrayIterator[nullable MPropDef] */;
+short int var175 /* : Bool */;
+val* var176 /* : nullable Object */;
+val* var_e177 /* var e: nullable MPropDef */;
+val* var178 /* : null */;
+short int var179 /* : Bool */;
+short int var180 /* : Bool */;
+short int var182 /* : Bool */;
+short int var184 /* : Bool */;
+long var185 /* : Int */;
+long var186 /* : Int */;
+short int var188 /* : Bool */;
+int cltype189;
+int idtype190;
+const char* var_class_name191;
+long var192 /* : Int */;
+static val* varonce197;
+val* var198 /* : String */;
+char* var199 /* : NativeString */;
+long var200 /* : Int */;
+val* var201 /* : FlatString */;
+static val* varonce202;
+val* var203 /* : String */;
+char* var204 /* : NativeString */;
+long var205 /* : Int */;
+val* var206 /* : FlatString */;
+val* var207 /* : Array[Object] */;
+long var208 /* : Int */;
+val* var209 /* : NativeArray[Object] */;
+val* var210 /* : Object */;
+val* var211 /* : Object */;
+val* var212 /* : String */;
+static val* varonce213;
+val* var214 /* : String */;
+char* var215 /* : NativeString */;
+long var216 /* : Int */;
+val* var217 /* : FlatString */;
+static val* varonce218;
+val* var219 /* : String */;
+char* var220 /* : NativeString */;
+long var221 /* : Int */;
+val* var222 /* : FlatString */;
+long var223 /* : Int */;
+long var224 /* : Int */;
+val* var225 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var227 /* : Map[MClass, Array[nullable MPropDef]] */;
+val* var_228 /* var : Map[MClass, Array[nullable MPropDef]] */;
+val* var229 /* : MapIterator[Object, nullable Object] */;
+val* var_230 /* var : MapIterator[MClass, Array[nullable MPropDef]] */;
+short int var231 /* : Bool */;
+val* var232 /* : Object */;
+val* var_t233 /* var t: MClass */;
+val* var234 /* : nullable Object */;
+val* var_table235 /* var table: Array[nullable MPropDef] */;
+long var236 /* : Int */;
+long var238 /* : Int */;
+long var239 /* : Int */;
+short int var241 /* : Bool */;
+int cltype242;
+int idtype243;
+const char* var_class_name244;
+long var245 /* : Int */;
+val* var_246 /* var : Array[nullable MPropDef] */;
+val* var247 /* : ArrayIterator[nullable Object] */;
+val* var_248 /* var : ArrayIterator[nullable MPropDef] */;
+short int var249 /* : Bool */;
+val* var250 /* : nullable Object */;
+val* var_e251 /* var e: nullable MPropDef */;
+val* var252 /* : null */;
+short int var253 /* : Bool */;
+short int var254 /* : Bool */;
+short int var256 /* : Bool */;
+short int var258 /* : Bool */;
+long var259 /* : Int */;
+long var260 /* : Int */;
+short int var262 /* : Bool */;
+int cltype263;
+int idtype264;
+const char* var_class_name265;
+long var266 /* : Int */;
+static val* varonce271;
+val* var272 /* : String */;
+char* var273 /* : NativeString */;
+long var274 /* : Int */;
+val* var275 /* : FlatString */;
+static val* varonce276;
+val* var277 /* : String */;
+char* var278 /* : NativeString */;
+long var279 /* : Int */;
+val* var280 /* : FlatString */;
+val* var281 /* : Array[Object] */;
+long var282 /* : Int */;
+val* var283 /* : NativeArray[Object] */;
+val* var284 /* : Object */;
+val* var285 /* : Object */;
+val* var286 /* : String */;
+if (varonce) {
+var = varonce;
+} else {
+var1 = "# size of subtyping tables";
+var2 = 26;
+var3 = string__NativeString__to_s_with_length(var1, var2);
+var = var3;
+varonce = var;
+}
+{
+file__Object__print(self, var); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce4) {
+var5 = varonce4;
+} else {
+var6 = "\11total \11holes";
+var7 = 13;
+var8 = string__NativeString__to_s_with_length(var6, var7);
+var5 = var8;
+varonce4 = var5;
+}
+{
+file__Object__print(self, var5); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+var9 = 0;
+var_total = var9;
+var10 = 0;
+var_holes = var10;
+{
+{ /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:SeparateCompiler> */
+var13 = self->attrs[COLOR_separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 843);
+show_backtrace(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+var_ = var11;
+{
+var14 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_) /* iterator on <var_:Map[MType, Array[nullable MType]]>*/;
+}
+var_15 = var14;
+for(;;) {
+{
+var16 = ((short int (*)(val*))(var_15->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_15) /* is_ok on <var_15:MapIterator[MType, Array[nullable MType]]>*/;
+}
+if (var16){
+{
+var17 = ((val* (*)(val*))(var_15->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_15) /* key on <var_15:MapIterator[MType, Array[nullable MType]]>*/;
+}
+var_t = var17;
+{
+var18 = ((val* (*)(val*))(var_15->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_15) /* item on <var_15:MapIterator[MType, Array[nullable MType]]>*/;
+}
+var_table = var18;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MType]> */
+var21 = var_table->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MType]> */
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var_total,var19) on <var_total:Int> */
+/* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
+/* <var19:Int> isa OTHER */
+var24 = 1; /* easy <var19:Int> isa OTHER*/
+if (unlikely(!var24)) {
+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", 374);
+show_backtrace(1);
+}
+var25 = var_total + var19;
+var22 = var25;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
+}
+}
+var_total = var22;
+var_26 = var_table;
+{
+var27 = array__AbstractArrayRead__iterator(var_26);
+}
+var_28 = var27;
+for(;;) {
+{
+var29 = array__ArrayIterator__is_ok(var_28);
+}
+if (var29){
+{
+var30 = array__ArrayIterator__item(var_28);
+}
+var_e = var30;
+var31 = NULL;
+if (var_e == NULL) {
+var32 = 1; /* is null */
+} else {
+var32 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_e,var31) on <var_e:nullable MType> */
+var_other = var31;
+{
+{ /* Inline kernel#Object#is_same_instance (var_e,var_other) on <var_e:nullable MType(MType)> */
+var37 = var_e == var_other;
+var35 = var37;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
+}
+}
+var33 = var35;
+goto RET_LABEL34;
+RET_LABEL34:(void)0;
+}
+var32 = var33;
+}
+if (var32){
+var38 = 1;
+{
+{ /* Inline kernel#Int#+ (var_holes,var38) on <var_holes:Int> */
+/* Covariant cast for argument 0 (i) <var38:Int> isa OTHER */
+/* <var38:Int> isa OTHER */
+var41 = 1; /* easy <var38:Int> isa OTHER*/
+if (unlikely(!var41)) {
+var_class_name44 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name44);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var45 = var_holes + var38;
+var39 = var45;
+goto RET_LABEL40;
+RET_LABEL40:(void)0;
+}
+}
+var_holes = var39;
+} else {
+}
+{
+array__ArrayIterator__next(var_28); /* Direct call array#ArrayIterator#next on <var_28:ArrayIterator[nullable MType]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_28) on <var_28:ArrayIterator[nullable MType]> */
+RET_LABEL46:(void)0;
+}
+}
+{
+((void (*)(val*))(var_15->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_15) /* next on <var_15:MapIterator[MType, Array[nullable MType]]>*/;
+}
+} else {
+goto BREAK_label47;
+}
+}
+BREAK_label47: (void)0;
+{
+{ /* Inline abstract_collection#MapIterator#finish (var_15) on <var_15:MapIterator[MType, Array[nullable MType]]> */
+RET_LABEL48:(void)0;
+}
+}
+if (varonce49) {
+var50 = varonce49;
+} else {
+var51 = "\11";
+var52 = 1;
+var53 = string__NativeString__to_s_with_length(var51, var52);
+var50 = var53;
+varonce49 = var50;
+}
+if (varonce54) {
+var55 = varonce54;
+} else {
+var56 = "\11";
+var57 = 1;
+var58 = string__NativeString__to_s_with_length(var56, var57);
+var55 = var58;
+varonce54 = var55;
+}
+var59 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var59 = array_instance Array[Object] */
+var60 = 4;
+var61 = NEW_array__NativeArray(var60, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var61)->values[0] = (val*) var50;
+var62 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var61)->values[1] = (val*) var62;
+((struct instance_array__NativeArray*)var61)->values[2] = (val*) var55;
+var63 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var61)->values[3] = (val*) var63;
+{
+((void (*)(val*, val*, long))(var59->class->vft[COLOR_array__Array__with_native]))(var59, var61, var60) /* with_native on <var59:Array[Object]>*/;
+}
+}
+{
+var64 = ((val* (*)(val*))(var59->class->vft[COLOR_string__Object__to_s]))(var59) /* to_s on <var59:Array[Object]>*/;
+}
+{
+file__Object__print(self, var64); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce65) {
+var66 = varonce65;
+} else {
+var67 = "# size of resolution tables";
+var68 = 27;
+var69 = string__NativeString__to_s_with_length(var67, var68);
+var66 = var69;
+varonce65 = var66;
+}
+{
+file__Object__print(self, var66); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce70) {
+var71 = varonce70;
+} else {
+var72 = "\11total \11holes";
+var73 = 13;
+var74 = string__NativeString__to_s_with_length(var72, var73);
+var71 = var74;
+varonce70 = var71;
+}
+{
+file__Object__print(self, var71); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+var75 = 0;
+var_total = var75;
+var76 = 0;
+var_holes = var76;
+{
+{ /* Inline separate_compiler#SeparateCompiler#resolution_tables (self) on <self:SeparateCompiler> */
+var79 = self->attrs[COLOR_separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
+if (unlikely(var79 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 844);
+show_backtrace(1);
+}
+var77 = var79;
+RET_LABEL78:(void)0;
+}
+}
+var_80 = var77;
+{
+var81 = ((val* (*)(val*))(var_80->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_80) /* iterator on <var_80:Map[MClassType, Array[nullable MType]]>*/;
+}
+var_82 = var81;
+for(;;) {
+{
+var83 = ((short int (*)(val*))(var_82->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_82) /* is_ok on <var_82:MapIterator[MClassType, Array[nullable MType]]>*/;
+}
+if (var83){
+{
+var84 = ((val* (*)(val*))(var_82->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_82) /* key on <var_82:MapIterator[MClassType, Array[nullable MType]]>*/;
+}
+var_t85 = var84;
+{
+var86 = ((val* (*)(val*))(var_82->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_82) /* item on <var_82:MapIterator[MClassType, Array[nullable MType]]>*/;
+}
+var_table87 = var86;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table87) on <var_table87:Array[nullable MType]> */
+var90 = var_table87->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table87:Array[nullable MType]> */
+var88 = var90;
+RET_LABEL89:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var_total,var88) on <var_total:Int> */
+/* Covariant cast for argument 0 (i) <var88:Int> isa OTHER */
+/* <var88:Int> isa OTHER */
+var93 = 1; /* easy <var88:Int> isa OTHER*/
+if (unlikely(!var93)) {
+var_class_name96 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name96);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var97 = var_total + var88;
+var91 = var97;
+goto RET_LABEL92;
+RET_LABEL92:(void)0;
+}
+}
+var_total = var91;
+var_98 = var_table87;
+{
+var99 = array__AbstractArrayRead__iterator(var_98);
+}
+var_100 = var99;
+for(;;) {
+{
+var101 = array__ArrayIterator__is_ok(var_100);
+}
+if (var101){
+{
+var102 = array__ArrayIterator__item(var_100);
+}
+var_e103 = var102;
+var104 = NULL;
+if (var_e103 == NULL) {
+var105 = 1; /* is null */
+} else {
+var105 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_e103,var104) on <var_e103:nullable MType> */
+var_other = var104;
+{
+{ /* Inline kernel#Object#is_same_instance (var_e103,var_other) on <var_e103:nullable MType(MType)> */
+var110 = var_e103 == var_other;
+var108 = var110;
+goto RET_LABEL109;
+RET_LABEL109:(void)0;
+}
+}
+var106 = var108;
+goto RET_LABEL107;
+RET_LABEL107:(void)0;
+}
+var105 = var106;
+}
+if (var105){
+var111 = 1;
+{
+{ /* Inline kernel#Int#+ (var_holes,var111) on <var_holes:Int> */
+/* Covariant cast for argument 0 (i) <var111:Int> isa OTHER */
+/* <var111:Int> isa OTHER */
+var114 = 1; /* easy <var111:Int> isa OTHER*/
+if (unlikely(!var114)) {
+var_class_name117 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name117);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var118 = var_holes + var111;
+var112 = var118;
+goto RET_LABEL113;
+RET_LABEL113:(void)0;
+}
+}
+var_holes = var112;
+} else {
+}
+{
+array__ArrayIterator__next(var_100); /* Direct call array#ArrayIterator#next on <var_100:ArrayIterator[nullable MType]>*/
+}
+} else {
+goto BREAK_label119;
+}
+}
+BREAK_label119: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_100) on <var_100:ArrayIterator[nullable MType]> */
+RET_LABEL120:(void)0;
+}
+}
+{
+((void (*)(val*))(var_82->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_82) /* next on <var_82:MapIterator[MClassType, Array[nullable MType]]>*/;
+}
+} else {
+goto BREAK_label121;
+}
+}
+BREAK_label121: (void)0;
+{
+{ /* Inline abstract_collection#MapIterator#finish (var_82) on <var_82:MapIterator[MClassType, Array[nullable MType]]> */
+RET_LABEL122:(void)0;
+}
+}
+if (varonce123) {
+var124 = varonce123;
+} else {
+var125 = "\11";
+var126 = 1;
+var127 = string__NativeString__to_s_with_length(var125, var126);
+var124 = var127;
+varonce123 = var124;
+}
+if (varonce128) {
+var129 = varonce128;
+} else {
+var130 = "\11";
+var131 = 1;
+var132 = string__NativeString__to_s_with_length(var130, var131);
+var129 = var132;
+varonce128 = var129;
+}
+var133 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var133 = array_instance Array[Object] */
+var134 = 4;
+var135 = NEW_array__NativeArray(var134, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var135)->values[0] = (val*) var124;
+var136 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var135)->values[1] = (val*) var136;
+((struct instance_array__NativeArray*)var135)->values[2] = (val*) var129;
+var137 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var135)->values[3] = (val*) var137;
+{
+((void (*)(val*, val*, long))(var133->class->vft[COLOR_array__Array__with_native]))(var133, var135, var134) /* with_native on <var133:Array[Object]>*/;
+}
+}
+{
+var138 = ((val* (*)(val*))(var133->class->vft[COLOR_string__Object__to_s]))(var133) /* to_s on <var133:Array[Object]>*/;
+}
+{
+file__Object__print(self, var138); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce139) {
+var140 = varonce139;
+} else {
+var141 = "# size of methods tables";
+var142 = 24;
+var143 = string__NativeString__to_s_with_length(var141, var142);
+var140 = var143;
+varonce139 = var140;
+}
+{
+file__Object__print(self, var140); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce144) {
+var145 = varonce144;
+} else {
+var146 = "\11total \11holes";
+var147 = 13;
+var148 = string__NativeString__to_s_with_length(var146, var147);
+var145 = var148;
+varonce144 = var145;
+}
+{
+file__Object__print(self, var145); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+var149 = 0;
+var_total = var149;
+var150 = 0;
+var_holes = var150;
+{
+{ /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:SeparateCompiler> */
+var153 = self->attrs[COLOR_separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateCompiler> */
+if (unlikely(var153 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 845);
+show_backtrace(1);
+}
+var151 = var153;
+RET_LABEL152:(void)0;
+}
+}
+var_154 = var151;
+{
+var155 = ((val* (*)(val*))(var_154->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_154) /* iterator on <var_154:Map[MClass, Array[nullable MPropDef]]>*/;
+}
+var_156 = var155;
+for(;;) {
+{
+var157 = ((short int (*)(val*))(var_156->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_156) /* is_ok on <var_156:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+if (var157){
+{
+var158 = ((val* (*)(val*))(var_156->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_156) /* key on <var_156:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+var_t159 = var158;
+{
+var160 = ((val* (*)(val*))(var_156->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_156) /* item on <var_156:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+var_table161 = var160;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table161) on <var_table161:Array[nullable MPropDef]> */
+var164 = var_table161->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table161:Array[nullable MPropDef]> */
+var162 = var164;
+RET_LABEL163:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var_total,var162) on <var_total:Int> */
+/* Covariant cast for argument 0 (i) <var162:Int> isa OTHER */
+/* <var162:Int> isa OTHER */
+var167 = 1; /* easy <var162:Int> isa OTHER*/
+if (unlikely(!var167)) {
+var_class_name170 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name170);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var171 = var_total + var162;
+var165 = var171;
+goto RET_LABEL166;
+RET_LABEL166:(void)0;
+}
+}
+var_total = var165;
+var_172 = var_table161;
+{
+var173 = array__AbstractArrayRead__iterator(var_172);
+}
+var_174 = var173;
+for(;;) {
+{
+var175 = array__ArrayIterator__is_ok(var_174);
+}
+if (var175){
+{
+var176 = array__ArrayIterator__item(var_174);
+}
+var_e177 = var176;
+var178 = NULL;
+if (var_e177 == NULL) {
+var179 = 1; /* is null */
+} else {
+var179 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_e177,var178) on <var_e177:nullable MPropDef> */
+var_other = var178;
+{
+{ /* Inline kernel#Object#is_same_instance (var_e177,var_other) on <var_e177:nullable MPropDef(MPropDef)> */
+var184 = var_e177 == var_other;
+var182 = var184;
+goto RET_LABEL183;
+RET_LABEL183:(void)0;
+}
+}
+var180 = var182;
+goto RET_LABEL181;
+RET_LABEL181:(void)0;
+}
+var179 = var180;
+}
+if (var179){
+var185 = 1;
+{
+{ /* Inline kernel#Int#+ (var_holes,var185) on <var_holes:Int> */
+/* Covariant cast for argument 0 (i) <var185:Int> isa OTHER */
+/* <var185:Int> isa OTHER */
+var188 = 1; /* easy <var185:Int> isa OTHER*/
+if (unlikely(!var188)) {
+var_class_name191 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name191);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var192 = var_holes + var185;
+var186 = var192;
+goto RET_LABEL187;
+RET_LABEL187:(void)0;
+}
+}
+var_holes = var186;
+} else {
+}
+{
+array__ArrayIterator__next(var_174); /* Direct call array#ArrayIterator#next on <var_174:ArrayIterator[nullable MPropDef]>*/
+}
+} else {
+goto BREAK_label193;
+}
+}
+BREAK_label193: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_174) on <var_174:ArrayIterator[nullable MPropDef]> */
+RET_LABEL194:(void)0;
+}
+}
+{
+((void (*)(val*))(var_156->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_156) /* next on <var_156:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+} else {
+goto BREAK_label195;
+}
+}
+BREAK_label195: (void)0;
+{
+{ /* Inline abstract_collection#MapIterator#finish (var_156) on <var_156:MapIterator[MClass, Array[nullable MPropDef]]> */
+RET_LABEL196:(void)0;
+}
+}
+if (varonce197) {
+var198 = varonce197;
+} else {
+var199 = "\11";
+var200 = 1;
+var201 = string__NativeString__to_s_with_length(var199, var200);
+var198 = var201;
+varonce197 = var198;
+}
+if (varonce202) {
+var203 = varonce202;
+} else {
+var204 = "\11";
+var205 = 1;
+var206 = string__NativeString__to_s_with_length(var204, var205);
+var203 = var206;
+varonce202 = var203;
+}
+var207 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var207 = array_instance Array[Object] */
+var208 = 4;
+var209 = NEW_array__NativeArray(var208, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var209)->values[0] = (val*) var198;
+var210 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var209)->values[1] = (val*) var210;
+((struct instance_array__NativeArray*)var209)->values[2] = (val*) var203;
+var211 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var209)->values[3] = (val*) var211;
+{
+((void (*)(val*, val*, long))(var207->class->vft[COLOR_array__Array__with_native]))(var207, var209, var208) /* with_native on <var207:Array[Object]>*/;
+}
+}
+{
+var212 = ((val* (*)(val*))(var207->class->vft[COLOR_string__Object__to_s]))(var207) /* to_s on <var207:Array[Object]>*/;
+}
+{
+file__Object__print(self, var212); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce213) {
+var214 = varonce213;
+} else {
+var215 = "# size of attributes tables";
+var216 = 27;
+var217 = string__NativeString__to_s_with_length(var215, var216);
+var214 = var217;
+varonce213 = var214;
+}
+{
+file__Object__print(self, var214); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce218) {
+var219 = varonce218;
+} else {
+var220 = "\11total \11holes";
+var221 = 13;
+var222 = string__NativeString__to_s_with_length(var220, var221);
+var219 = var222;
+varonce218 = var219;
+}
+{
+file__Object__print(self, var219); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+var223 = 0;
+var_total = var223;
+var224 = 0;
+var_holes = var224;
+{
+{ /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:SeparateCompiler> */
+var227 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateCompiler> */
+if (unlikely(var227 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 846);
+show_backtrace(1);
+}
+var225 = var227;
+RET_LABEL226:(void)0;
+}
+}
+var_228 = var225;
+{
+var229 = ((val* (*)(val*))(var_228->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_228) /* iterator on <var_228:Map[MClass, Array[nullable MPropDef]]>*/;
+}
+var_230 = var229;
+for(;;) {
+{
+var231 = ((short int (*)(val*))(var_230->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var_230) /* is_ok on <var_230:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+if (var231){
+{
+var232 = ((val* (*)(val*))(var_230->class->vft[COLOR_abstract_collection__MapIterator__key]))(var_230) /* key on <var_230:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+var_t233 = var232;
+{
+var234 = ((val* (*)(val*))(var_230->class->vft[COLOR_abstract_collection__MapIterator__item]))(var_230) /* item on <var_230:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+var_table235 = var234;
+{
+{ /* Inline array#AbstractArrayRead#length (var_table235) on <var_table235:Array[nullable MPropDef]> */
+var238 = var_table235->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_table235:Array[nullable MPropDef]> */
+var236 = var238;
+RET_LABEL237:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#+ (var_total,var236) on <var_total:Int> */
+/* Covariant cast for argument 0 (i) <var236:Int> isa OTHER */
+/* <var236:Int> isa OTHER */
+var241 = 1; /* easy <var236:Int> isa OTHER*/
+if (unlikely(!var241)) {
+var_class_name244 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name244);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var245 = var_total + var236;
+var239 = var245;
+goto RET_LABEL240;
+RET_LABEL240:(void)0;
+}
+}
+var_total = var239;
+var_246 = var_table235;
+{
+var247 = array__AbstractArrayRead__iterator(var_246);
+}
+var_248 = var247;
+for(;;) {
+{
+var249 = array__ArrayIterator__is_ok(var_248);
+}
+if (var249){
+{
+var250 = array__ArrayIterator__item(var_248);
+}
+var_e251 = var250;
+var252 = NULL;
+if (var_e251 == NULL) {
+var253 = 1; /* is null */
+} else {
+var253 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_e251,var252) on <var_e251:nullable MPropDef> */
+var_other = var252;
+{
+{ /* Inline kernel#Object#is_same_instance (var_e251,var_other) on <var_e251:nullable MPropDef(MPropDef)> */
+var258 = var_e251 == var_other;
+var256 = var258;
+goto RET_LABEL257;
+RET_LABEL257:(void)0;
+}
+}
+var254 = var256;
+goto RET_LABEL255;
+RET_LABEL255:(void)0;
+}
+var253 = var254;
+}
+if (var253){
+var259 = 1;
+{
+{ /* Inline kernel#Int#+ (var_holes,var259) on <var_holes:Int> */
+/* Covariant cast for argument 0 (i) <var259:Int> isa OTHER */
+/* <var259:Int> isa OTHER */
+var262 = 1; /* easy <var259:Int> isa OTHER*/
+if (unlikely(!var262)) {
+var_class_name265 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name265);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var266 = var_holes + var259;
+var260 = var266;
+goto RET_LABEL261;
+RET_LABEL261:(void)0;
+}
+}
+var_holes = var260;
+} else {
+}
+{
+array__ArrayIterator__next(var_248); /* Direct call array#ArrayIterator#next on <var_248:ArrayIterator[nullable MPropDef]>*/
+}
+} else {
+goto BREAK_label267;
+}
+}
+BREAK_label267: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_248) on <var_248:ArrayIterator[nullable MPropDef]> */
+RET_LABEL268:(void)0;
+}
+}
+{
+((void (*)(val*))(var_230->class->vft[COLOR_abstract_collection__MapIterator__next]))(var_230) /* next on <var_230:MapIterator[MClass, Array[nullable MPropDef]]>*/;
+}
+} else {
+goto BREAK_label269;
+}
+}
+BREAK_label269: (void)0;
+{
+{ /* Inline abstract_collection#MapIterator#finish (var_230) on <var_230:MapIterator[MClass, Array[nullable MPropDef]]> */
+RET_LABEL270:(void)0;
+}
+}
+if (varonce271) {
+var272 = varonce271;
+} else {
+var273 = "\11";
+var274 = 1;
+var275 = string__NativeString__to_s_with_length(var273, var274);
+var272 = var275;
+varonce271 = var272;
+}
+if (varonce276) {
+var277 = varonce276;
+} else {
+var278 = "\11";
+var279 = 1;
+var280 = string__NativeString__to_s_with_length(var278, var279);
+var277 = var280;
+varonce276 = var277;
+}
+var281 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var281 = array_instance Array[Object] */
+var282 = 4;
+var283 = NEW_array__NativeArray(var282, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var283)->values[0] = (val*) var272;
+var284 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var283)->values[1] = (val*) var284;
+((struct instance_array__NativeArray*)var283)->values[2] = (val*) var277;
+var285 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var283)->values[3] = (val*) var285;
+{
+((void (*)(val*, val*, long))(var281->class->vft[COLOR_array__Array__with_native]))(var281, var283, var282) /* with_native on <var281:Array[Object]>*/;
+}
+}
+{
+var286 = ((val* (*)(val*))(var281->class->vft[COLOR_string__Object__to_s]))(var281) /* to_s on <var281:Array[Object]>*/;
+}
+{
+file__Object__print(self, var286); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#display_sizes for (self: Object) */
+void VIRTUAL_separate_compiler__SeparateCompiler__display_sizes(val* self) {
+separate_compiler__SeparateCompiler__display_sizes(self); /* Direct call separate_compiler#SeparateCompiler#display_sizes on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#isset_checks_count for (self: SeparateCompiler): Int */
+long separate_compiler__SeparateCompiler__isset_checks_count(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <self:SeparateCompiler> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#isset_checks_count for (self: Object): Int */
+long VIRTUAL_separate_compiler__SeparateCompiler__isset_checks_count(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+{ /* Inline separate_compiler#SeparateCompiler#isset_checks_count (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <self:Object(SeparateCompiler)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#isset_checks_count= for (self: SeparateCompiler, Int) */
+void separate_compiler__SeparateCompiler__isset_checks_count_61d(val* self, long p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l = p0; /* _isset_checks_count on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#isset_checks_count= for (self: Object, Int) */
+void VIRTUAL_separate_compiler__SeparateCompiler__isset_checks_count_61d(val* self, long p0) {
+{ /* Inline separate_compiler#SeparateCompiler#isset_checks_count= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l = p0; /* _isset_checks_count on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#attr_read_count for (self: SeparateCompiler): Int */
+long separate_compiler__SeparateCompiler__attr_read_count(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on <self:SeparateCompiler> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#attr_read_count for (self: Object): Int */
+long VIRTUAL_separate_compiler__SeparateCompiler__attr_read_count(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+{ /* Inline separate_compiler#SeparateCompiler#attr_read_count (self) on <self:Object(SeparateCompiler)> */
+var3 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on <self:Object(SeparateCompiler)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method separate_compiler#SeparateCompiler#attr_read_count= for (self: SeparateCompiler, Int) */
+void separate_compiler__SeparateCompiler__attr_read_count_61d(val* self, long p0) {
+self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l = p0; /* _attr_read_count on <self:SeparateCompiler> */
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#attr_read_count= for (self: Object, Int) */
+void VIRTUAL_separate_compiler__SeparateCompiler__attr_read_count_61d(val* self, long p0) {
+{ /* Inline separate_compiler#SeparateCompiler#attr_read_count= (self,p0) on <self:Object(SeparateCompiler)> */
+self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l = p0; /* _attr_read_count on <self:Object(SeparateCompiler)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#display_isset_checks for (self: SeparateCompiler) */
+void separate_compiler__SeparateCompiler__display_isset_checks(val* self) {
+static val* varonce;
+val* var /* : String */;
+char* var1 /* : NativeString */;
+long var2 /* : Int */;
+val* var3 /* : FlatString */;
+static val* varonce4;
+val* var5 /* : String */;
+char* var6 /* : NativeString */;
+long var7 /* : Int */;
+val* var8 /* : FlatString */;
+long var9 /* : Int */;
+long var11 /* : Int */;
+val* var12 /* : Array[Object] */;
+long var13 /* : Int */;
+val* var14 /* : NativeArray[Object] */;
+val* var15 /* : Object */;
+val* var16 /* : String */;
+static val* varonce17;
+val* var18 /* : String */;
+char* var19 /* : NativeString */;
+long var20 /* : Int */;
+val* var21 /* : FlatString */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+long var25 /* : Int */;
+val* var26 /* : FlatString */;
+long var27 /* : Int */;
+long var29 /* : Int */;
+val* var30 /* : Array[Object] */;
+long var31 /* : Int */;
+val* var32 /* : NativeArray[Object] */;
+val* var33 /* : Object */;
+val* var34 /* : String */;
+if (varonce) {
+var = varonce;
+} else {
+var1 = "# total number of compiled attribute reads";
+var2 = 42;
+var3 = string__NativeString__to_s_with_length(var1, var2);
+var = var3;
+varonce = var;
+}
+{
+file__Object__print(self, var); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce4) {
+var5 = varonce4;
+} else {
+var6 = "\11";
+var7 = 1;
+var8 = string__NativeString__to_s_with_length(var6, var7);
+var5 = var8;
+varonce4 = var5;
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#attr_read_count (self) on <self:SeparateCompiler> */
+var11 = self->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on <self:SeparateCompiler> */
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+var12 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var12 = array_instance Array[Object] */
+var13 = 2;
+var14 = NEW_array__NativeArray(var13, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var14)->values[0] = (val*) var5;
+var15 = BOX_kernel__Int(var9); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var14)->values[1] = (val*) var15;
+{
+((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Object]>*/;
+}
+}
+{
+var16 = ((val* (*)(val*))(var12->class->vft[COLOR_string__Object__to_s]))(var12) /* to_s on <var12:Array[Object]>*/;
+}
+{
+file__Object__print(self, var16); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce17) {
+var18 = varonce17;
+} else {
+var19 = "# total number of compiled isset-checks";
+var20 = 39;
+var21 = string__NativeString__to_s_with_length(var19, var20);
+var18 = var21;
+varonce17 = var18;
+}
+{
+file__Object__print(self, var18); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+if (varonce22) {
+var23 = varonce22;
+} else {
+var24 = "\11";
+var25 = 1;
+var26 = string__NativeString__to_s_with_length(var24, var25);
+var23 = var26;
+varonce22 = var23;
+}
+{
+{ /* Inline separate_compiler#SeparateCompiler#isset_checks_count (self) on <self:SeparateCompiler> */
+var29 = self->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <self:SeparateCompiler> */
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
+var30 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var30 = array_instance Array[Object] */
+var31 = 2;
+var32 = NEW_array__NativeArray(var31, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var32)->values[0] = (val*) var23;
+var33 = BOX_kernel__Int(var27); /* autobox from Int to Object */
+((struct instance_array__NativeArray*)var32)->values[1] = (val*) var33;
+{
+((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on <var30:Array[Object]>*/;
+}
+}
+{
+var34 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Object__to_s]))(var30) /* to_s on <var30:Array[Object]>*/;
+}
+{
+file__Object__print(self, var34); /* Direct call file#Object#print on <self:SeparateCompiler>*/
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#display_isset_checks for (self: Object) */
+void VIRTUAL_separate_compiler__SeparateCompiler__display_isset_checks(val* self) {
+separate_compiler__SeparateCompiler__display_isset_checks(self); /* Direct call separate_compiler#SeparateCompiler#display_isset_checks on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_nitni_structs for (self: SeparateCompiler) */
+void separate_compiler__SeparateCompiler__compile_nitni_structs(val* self) {
+val* var /* : CodeWriter */;
+val* var2 /* : CodeWriter */;
+static val* varonce;
+val* var3 /* : String */;
+char* var4 /* : NativeString */;
+long var5 /* : Int */;
+val* var6 /* : FlatString */;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
+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 = "struct nitni_instance {\n\11struct nitni_instance *next,\n\11\11*prev; /* adjacent global references in global list */\n\11int count; /* number of time this global reference has been marked */\n\11struct instance *value;\n};\n";
+var5 = 210;
+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>*/
+}
+{
+((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_nitni_structs]))(self) /* compile_nitni_structs on <self:SeparateCompiler>*/;
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#compile_nitni_structs for (self: Object) */
+void VIRTUAL_separate_compiler__SeparateCompiler__compile_nitni_structs(val* self) {
+separate_compiler__SeparateCompiler__compile_nitni_structs(self); /* Direct call separate_compiler#SeparateCompiler#compile_nitni_structs on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#finalize_ffi_for_module for (self: SeparateCompiler, MModule) */
+void separate_compiler__SeparateCompiler__finalize_ffi_for_module(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MModule */;
+val* var2 /* : MModule */;
+val* var_old_module /* var old_module: MModule */;
+var_mmodule = p0;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
+var2 = self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+var_old_module = var;
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,var_mmodule) on <self:SeparateCompiler> */
+self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var_mmodule; /* _mainmodule on <self:SeparateCompiler> */
+RET_LABEL3:(void)0;
+}
+}
+{
+((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__finalize_ffi_for_module]))(self, p0) /* finalize_ffi_for_module on <self:SeparateCompiler>*/;
+}
+{
+{ /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,var_old_module) on <self:SeparateCompiler> */
+self->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var_old_module; /* _mainmodule on <self:SeparateCompiler> */
+RET_LABEL4:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompiler#finalize_ffi_for_module for (self: Object, MModule) */
+void VIRTUAL_separate_compiler__SeparateCompiler__finalize_ffi_for_module(val* self, val* p0) {
+separate_compiler__SeparateCompiler__finalize_ffi_for_module(self, p0); /* Direct call separate_compiler#SeparateCompiler#finalize_ffi_for_module on <self:Object(SeparateCompiler)>*/
+RET_LABEL:;
+}
+/* method separate_compiler#SeparateCompilerVisitor#adapt_signature for (self: SeparateCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
+void separate_compiler__SeparateCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
+val* var_m /* var m: MMethodDef */;
+val* var_args /* var args: Array[RuntimeVariable] */;
+val* var /* : nullable MSignature */;
+val* var2 /* : nullable MSignature */;
+val* var3 /* : MClassDef */;
+val* var5 /* : MClassDef */;
+val* var6 /* : MClassType */;
+val* var8 /* : MClassType */;
+val* var9 /* : MClassDef */;
+val* var11 /* : MClassDef */;
+val* var12 /* : MClassType */;
+val* var14 /* : MClassType */;
+val* var15 /* : MClassDef */;
+val* var17 /* : MClassDef */;
+val* var18 /* : MModule */;
+val* var20 /* : MModule */;
+short int var21 /* : Bool */;
+val* var22 /* : MSignature */;
+val* var_msignature /* var msignature: MSignature */;
+val* var23 /* : nullable Object */;
+val* var_recv /* var recv: RuntimeVariable */;
+val* var24 /* : MType */;
+val* var26 /* : MType */;
+val* var27 /* : String */;
+val* var28 /* : MClassDef */;
+val* var30 /* : MClassDef */;
+val* var31 /* : MClass */;
+val* var33 /* : MClass */;
+val* var34 /* : MClassType */;
+val* var36 /* : MClassType */;
+val* var37 /* : String */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var41 /* : Bool */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+val* var44 /* : nullable Object */;
+val* var45 /* : MClassDef */;
+val* var47 /* : MClassDef */;
+val* var48 /* : MClass */;
+val* var50 /* : MClass */;
+val* var51 /* : MClassType */;
+val* var53 /* : MClassType */;
+val* var54 /* : RuntimeVariable */;
+long var55 /* : Int */;
+long var_i /* var i: Int */;
+long var56 /* : Int */;
+long var_ /* var : Int */;
+short int var57 /* : Bool */;
+short int var59 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+short int var60 /* : Bool */;
+val* var61 /* : Array[MParameter] */;
+val* var63 /* : Array[MParameter] */;
+val* var64 /* : nullable Object */;
+val* var65 /* : MType */;
+val* var67 /* : MType */;
+val* var_t /* var t: MType */;
+long var68 /* : Int */;
+long var70 /* : Int */;
+short int var71 /* : Bool */;
+short int var72 /* : Bool */;
+short int var74 /* : Bool */;
+long var75 /* : Int */;
+long var76 /* : Int */;
+short int var78 /* : Bool */;
+int cltype79;
+int idtype80;
+const char* var_class_name81;
+long var82 /* : Int */;
+val* var83 /* : nullable Object */;
+val* var84 /* : MType */;
+val* var86 /* : MType */;
+long var87 /* : Int */;
+long var88 /* : Int */;
+short int var90 /* : Bool */;
+int cltype91;
+int idtype92;
+const char* var_class_name93;
+long var94 /* : Int */;
+long var95 /* : Int */;
+long var96 /* : Int */;
+short int var98 /* : Bool */;
+int cltype99;
+int idtype100;
+const char* var_class_name101;
+long var102 /* : Int */;
+val* var103 /* : nullable Object */;
+val* var104 /* : RuntimeVariable */;
+long var105 /* : Int */;
+long var106 /* : Int */;
+var_m = p0;
+var_args = p1;
+{
+{ /* Inline model#MMethodDef#msignature (var_m) on <var_m:MMethodDef> */
+var2 = var_m->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_m:MMethodDef> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
+var5 = var_m->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var3) on <var3:MClassDef> */
+var8 = var3->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var3:MClassDef> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
+show_backtrace(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
+var11 = var_m->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
+if (unlikely(var11 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var9) on <var9:MClassDef> */
+var14 = var9->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var9:MClassDef> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
+show_backtrace(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
+var17 = var_m->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mmodule (var15) on <var15:MClassDef> */
+var20 = var15->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var15:MClassDef> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
+show_backtrace(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+var21 = 1;
+if (var == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 949);
+show_backtrace(1);
+} else {
+var22 = model__MSignature__resolve_for(var, var6, var12, var18, var21);
+}
+var_msignature = var22;
+{
+var23 = abstract_collection__SequenceRead__first(var_args);
+}
+var_recv = var23;
+{
+{ /* Inline abstract_compiler#RuntimeVariable#mtype (var_recv) on <var_recv:RuntimeVariable> */
+var26 = var_recv->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
+if (unlikely(var26 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
+show_backtrace(1);
+}
+var24 = var26;
+RET_LABEL25:(void)0;
+}
+}
+{
+var27 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_compiler__MType__ctype]))(var24) /* ctype on <var24:MType>*/;
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
+var30 = var_m->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var28 = var30;
+RET_LABEL29:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mclass (var28) on <var28:MClassDef> */
+var33 = var28->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var28:MClassDef> */
+if (unlikely(var33 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
+show_backtrace(1);
+}
+var31 = var33;
+RET_LABEL32:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#mclass_type (var31) on <var31:MClass> */
+var36 = var31->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var31:MClass> */
+if (unlikely(var36 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
+show_backtrace(1);
+}
+var34 = var36;
+RET_LABEL35:(void)0;
+}
+}
+{
+var37 = abstract_compiler__MClassType__ctype(var34);
+}
+{
+{ /* Inline kernel#Object#!= (var27,var37) on <var27:String> */
+var_other = var37;
+{
+var42 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___61d_61d]))(var27, var_other) /* == on <var27:String>*/;
+var41 = var42;
+}
+var43 = !var41;
+var39 = var43;
+goto RET_LABEL40;
+RET_LABEL40:(void)0;
+}
+var38 = var39;
+}
+if (var38){
+{
+var44 = abstract_collection__SequenceRead__first(var_args);
+}
+{
+{ /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
+var47 = var_m->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
+if (unlikely(var47 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
+show_backtrace(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mclass (var45) on <var45:MClassDef> */
+var50 = var45->attrs[COLOR_model__MClassDef___mclass].val; /* _mclass on <var45:MClassDef> */
+if (unlikely(var50 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 492);
+show_backtrace(1);
+}
+var48 = var50;
+RET_LABEL49:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#mclass_type (var48) on <var48:MClass> */
+var53 = var48->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var48:MClass> */
+if (unlikely(var53 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
+show_backtrace(1);
+}
+var51 = var53;
+RET_LABEL52:(void)0;
+}
+}
+{
+var54 = separate_compiler__SeparateCompilerVisitor__autobox(self, var44, var51);
+}
+{
+abstract_collection__Sequence__first_61d(var_args, var54); /* Direct call abstract_collection#Sequence#first= on <var_args:Array[RuntimeVariable]>*/
+}
+} else {
+}
+var55 = 0;
+var_i = var55;
+{
+var56 = model__MSignature__arity(var_msignature);
+}
+var_ = var56;
+for(;;) {
+{
+{ /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
+/* <var_:Int> isa OTHER */
+var59 = 1; /* easy <var_:Int> isa OTHER*/
+if (unlikely(!var59)) {
+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);
+}
+var60 = var_i < var_;
+var57 = var60;
+goto RET_LABEL58;
+RET_LABEL58:(void)0;
+}
+}
+if (var57){
+{
+{ /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
+var63 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
+if (unlikely(var63 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
+show_backtrace(1);
+}
+var61 = var63;
+RET_LABEL62:(void)0;
+}
+}
+{
+var64 = array__Array___91d_93d(var61, var_i);
+}
+{
+{ /* Inline model#MParameter#mtype (var64) on <var64:nullable Object(MParameter)> */
+var67 = var64->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var64:nullable Object(MParameter)> */
+if (unlikely(var67 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
+show_backtrace(1);
+}
+var65 = var67;
+RET_LABEL66:(void)0;
+}
+}
+var_t = var65;
+{
+{ /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
+var70 = var_msignature->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
+var68 = var70;
+RET_LABEL69:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#== (var_i,var68) on <var_i:Int> */
+var74 = var_i == var68;
+var72 = var74;
+goto RET_LABEL73;
+RET_LABEL73:(void)0;
+}
+var71 = var72;
+}
+if (var71){
+var75 = 1;
+{
+{ /* Inline kernel#Int#+ (var_i,var75) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var75:Int> isa OTHER */
+/* <var75:Int> isa OTHER */
+var78 = 1; /* easy <var75:Int> isa OTHER*/
+if (unlikely(!var78)) {
+var_class_name81 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name81);
+PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
+show_backtrace(1);
+}
+var82 = var_i + var75;
+var76 = var82;
+goto RET_LABEL77;
+RET_LABEL77:(void)0;