+{
+{ /* Inline modelbuilder#AModule#mmodule (var_res) on <var_res:nullable AModule(AModule)> */
+var24 = var_res->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_res:nullable AModule(AModule)> */
+var22 = var24;
+RET_LABEL23:(void)0;
+}
+}
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 365);
+show_backtrace(1);
+}
+var = var22;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#get_mmodule_by_name for (self: Object, ANode, nullable MGroup, String): nullable MModule */
+val* VIRTUAL_modelbuilder__ModelBuilder__get_mmodule_by_name(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable MModule */;
+val* var1 /* : nullable MModule */;
+var1 = modelbuilder__ModelBuilder__get_mmodule_by_name(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#search_module_in_paths for (self: ModelBuilder, nullable Location, String, Collection[String]): nullable ModulePath */
+val* modelbuilder__ModelBuilder__search_module_in_paths(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable ModulePath */;
+val* var_location /* var location: nullable Location */;
+val* var_name /* var name: String */;
+val* var_lookpaths /* var lookpaths: Collection[String] */;
+val* var1 /* : null */;
+val* var_candidate /* var candidate: nullable String */;
+val* var2 /* : Iterator[nullable Object] */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable Object */;
+val* var_dirname /* var dirname: String */;
+static val* varonce;
+val* var5 /* : String */;
+char* var6 /* : NativeString */;
+long var7 /* : Int */;
+val* var8 /* : FlatString */;
+val* var9 /* : String */;
+val* var10 /* : String */;
+static val* varonce11;
+val* var12 /* : String */;
+char* var13 /* : NativeString */;
+long var14 /* : Int */;
+val* var15 /* : FlatString */;
+val* var16 /* : String */;
+val* var17 /* : String */;
+val* var_try_file /* var try_file: String */;
+short int var18 /* : Bool */;
+val* var19 /* : null */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+short int var27 /* : Bool */;
+val* var28 /* : String */;
+val* var_abs_candidate /* var abs_candidate: String */;
+val* var29 /* : String */;
+val* var_abs_try_file /* var abs_try_file: String */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+val* var36 /* : ToolContext */;
+val* var38 /* : ToolContext */;
+static val* varonce39;
+val* var40 /* : String */;
+char* var41 /* : NativeString */;
+long var42 /* : Int */;
+val* var43 /* : FlatString */;
+static val* varonce44;
+val* var45 /* : String */;
+char* var46 /* : NativeString */;
+long var47 /* : Int */;
+val* var48 /* : FlatString */;
+static val* varonce49;
+val* var50 /* : String */;
+char* var51 /* : NativeString */;
+long var52 /* : Int */;
+val* var53 /* : FlatString */;
+val* var54 /* : Array[Object] */;
+long var55 /* : Int */;
+val* var56 /* : NativeArray[Object] */;
+val* var57 /* : String */;
+static val* varonce58;
+val* var59 /* : String */;
+char* var60 /* : NativeString */;
+long var61 /* : Int */;
+val* var62 /* : FlatString */;
+val* var63 /* : String */;
+val* var64 /* : String */;
+static val* varonce65;
+val* var66 /* : String */;
+char* var67 /* : NativeString */;
+long var68 /* : Int */;
+val* var69 /* : FlatString */;
+val* var70 /* : String */;
+val* var71 /* : String */;
+static val* varonce72;
+val* var73 /* : String */;
+char* var74 /* : NativeString */;
+long var75 /* : Int */;
+val* var76 /* : FlatString */;
+val* var77 /* : String */;
+val* var78 /* : String */;
+short int var79 /* : Bool */;
+val* var80 /* : null */;
+short int var81 /* : Bool */;
+short int var82 /* : Bool */;
+short int var83 /* : Bool */;
+short int var84 /* : Bool */;
+short int var86 /* : Bool */;
+short int var87 /* : Bool */;
+short int var88 /* : Bool */;
+val* var89 /* : String */;
+val* var_abs_candidate90 /* var abs_candidate: String */;
+val* var91 /* : String */;
+val* var_abs_try_file92 /* var abs_try_file: String */;
+short int var93 /* : Bool */;
+short int var94 /* : Bool */;
+short int var96 /* : Bool */;
+short int var97 /* : Bool */;
+short int var98 /* : Bool */;
+val* var99 /* : ToolContext */;
+val* var101 /* : ToolContext */;
+static val* varonce102;
+val* var103 /* : String */;
+char* var104 /* : NativeString */;
+long var105 /* : Int */;
+val* var106 /* : FlatString */;
+static val* varonce107;
+val* var108 /* : String */;
+char* var109 /* : NativeString */;
+long var110 /* : Int */;
+val* var111 /* : FlatString */;
+static val* varonce112;
+val* var113 /* : String */;
+char* var114 /* : NativeString */;
+long var115 /* : Int */;
+val* var116 /* : FlatString */;
+val* var117 /* : Array[Object] */;
+long var118 /* : Int */;
+val* var119 /* : NativeArray[Object] */;
+val* var120 /* : String */;
+val* var121 /* : null */;
+short int var122 /* : Bool */;
+short int var123 /* : Bool */;
+val* var124 /* : null */;
+val* var125 /* : nullable ModulePath */;
+var_location = p0;
+var_name = p1;
+var_lookpaths = p2;
+var1 = NULL;
+var_candidate = var1;
+{
+var2 = ((val* (*)(val*))(var_lookpaths->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lookpaths) /* iterator on <var_lookpaths:Collection[String]>*/;
+}
+for(;;) {
+{
+var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
+}
+if(!var3) break;
+{
+var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
+}
+var_dirname = var4;
+if (varonce) {
+var5 = varonce;
+} else {
+var6 = "/";
+var7 = 1;
+var8 = string__NativeString__to_s_with_length(var6, var7);
+var5 = var8;
+varonce = var5;
+}
+{
+var9 = string__FlatString___43d(var_dirname, var5);
+}
+{
+var10 = string__FlatString___43d(var9, var_name);
+}
+if (varonce11) {
+var12 = varonce11;
+} else {
+var13 = ".nit";
+var14 = 4;
+var15 = string__NativeString__to_s_with_length(var13, var14);
+var12 = var15;
+varonce11 = var12;
+}
+{
+var16 = string__FlatString___43d(var10, var12);
+}
+{
+var17 = file__String__simplify_path(var16);
+}
+var_try_file = var17;
+{
+var18 = file__String__file_exists(var_try_file);
+}
+if (var18){
+var19 = NULL;
+if (var_candidate == NULL) {
+var20 = 1; /* is null */
+} else {
+var20 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var21 = string__FlatString___61d_61d(var_candidate, var19);
+var20 = var21;
+}
+if (var20){
+var_candidate = var_try_file;
+} else {
+{
+{ /* Inline kernel#Object#!= (var_candidate,var_try_file) on <var_candidate:nullable String(String)> */
+var_other = var_try_file;
+{
+var26 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___61d_61d]))(var_candidate, var_other) /* == on <var_candidate:nullable String(String)>*/;
+var25 = var26;
+}
+var27 = !var25;
+var23 = var27;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
+}
+var22 = var23;
+}
+if (var22){
+{
+var28 = modelbuilder__ModelBuilder__module_absolute_path(self, var_candidate);
+}
+var_abs_candidate = var28;
+{
+var29 = modelbuilder__ModelBuilder__module_absolute_path(self, var_try_file);
+}
+var_abs_try_file = var29;
+{
+{ /* Inline kernel#Object#!= (var_abs_candidate,var_abs_try_file) on <var_abs_candidate:String> */
+var_other = var_abs_try_file;
+{
+var34 = ((short int (*)(val*, val*))(var_abs_candidate->class->vft[COLOR_kernel__Object___61d_61d]))(var_abs_candidate, var_other) /* == on <var_abs_candidate:String>*/;
+var33 = var34;
+}
+var35 = !var33;
+var31 = var35;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+var30 = var31;
+}
+if (var30){
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var38 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var38 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
+show_backtrace(1);
+}
+var36 = var38;
+RET_LABEL37:(void)0;
+}
+}
+if (varonce39) {
+var40 = varonce39;
+} else {
+var41 = "Error: conflicting module file for ";
+var42 = 35;
+var43 = string__NativeString__to_s_with_length(var41, var42);
+var40 = var43;
+varonce39 = var40;
+}
+if (varonce44) {
+var45 = varonce44;
+} else {
+var46 = ": ";
+var47 = 2;
+var48 = string__NativeString__to_s_with_length(var46, var47);
+var45 = var48;
+varonce44 = var45;
+}
+if (varonce49) {
+var50 = varonce49;
+} else {
+var51 = " ";
+var52 = 1;
+var53 = string__NativeString__to_s_with_length(var51, var52);
+var50 = var53;
+varonce49 = var50;
+}
+var54 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var54 = array_instance Array[Object] */
+var55 = 6;
+var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var56)->values[0] = (val*) var40;
+((struct instance_array__NativeArray*)var56)->values[1] = (val*) var_name;
+((struct instance_array__NativeArray*)var56)->values[2] = (val*) var45;
+((struct instance_array__NativeArray*)var56)->values[3] = (val*) var_candidate;
+((struct instance_array__NativeArray*)var56)->values[4] = (val*) var50;
+((struct instance_array__NativeArray*)var56)->values[5] = (val*) var_try_file;
+{
+((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
+}
+}
+{
+var57 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
+}
+{
+toolcontext__ToolContext__error(var36, var_location, var57); /* Direct call toolcontext#ToolContext#error on <var36:ToolContext>*/
+}
+} else {
+}
+} else {
+}
+}
+} else {
+}
+if (varonce58) {
+var59 = varonce58;
+} else {
+var60 = "/";
+var61 = 1;
+var62 = string__NativeString__to_s_with_length(var60, var61);
+var59 = var62;
+varonce58 = var59;
+}
+{
+var63 = string__FlatString___43d(var_dirname, var59);
+}
+{
+var64 = string__FlatString___43d(var63, var_name);
+}
+if (varonce65) {
+var66 = varonce65;
+} else {
+var67 = "/";
+var68 = 1;
+var69 = string__NativeString__to_s_with_length(var67, var68);
+var66 = var69;
+varonce65 = var66;
+}
+{
+var70 = string__FlatString___43d(var64, var66);
+}
+{
+var71 = string__FlatString___43d(var70, var_name);
+}
+if (varonce72) {
+var73 = varonce72;
+} else {
+var74 = ".nit";
+var75 = 4;
+var76 = string__NativeString__to_s_with_length(var74, var75);
+var73 = var76;
+varonce72 = var73;
+}
+{
+var77 = string__FlatString___43d(var71, var73);
+}
+{
+var78 = file__String__simplify_path(var77);
+}
+var_try_file = var78;
+{
+var79 = file__String__file_exists(var_try_file);
+}
+if (var79){
+var80 = NULL;
+if (var_candidate == NULL) {
+var81 = 1; /* is null */
+} else {
+var81 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var82 = string__FlatString___61d_61d(var_candidate, var80);
+var81 = var82;
+}
+if (var81){
+var_candidate = var_try_file;
+} else {
+{
+{ /* Inline kernel#Object#!= (var_candidate,var_try_file) on <var_candidate:nullable String(String)> */
+var_other = var_try_file;
+{
+var87 = ((short int (*)(val*, val*))(var_candidate->class->vft[COLOR_kernel__Object___61d_61d]))(var_candidate, var_other) /* == on <var_candidate:nullable String(String)>*/;
+var86 = var87;
+}
+var88 = !var86;
+var84 = var88;
+goto RET_LABEL85;
+RET_LABEL85:(void)0;
+}
+var83 = var84;
+}
+if (var83){
+{
+var89 = modelbuilder__ModelBuilder__module_absolute_path(self, var_candidate);
+}
+var_abs_candidate90 = var89;
+{
+var91 = modelbuilder__ModelBuilder__module_absolute_path(self, var_try_file);
+}
+var_abs_try_file92 = var91;
+{
+{ /* Inline kernel#Object#!= (var_abs_candidate90,var_abs_try_file92) on <var_abs_candidate90:String> */
+var_other = var_abs_try_file92;
+{
+var97 = ((short int (*)(val*, val*))(var_abs_candidate90->class->vft[COLOR_kernel__Object___61d_61d]))(var_abs_candidate90, var_other) /* == on <var_abs_candidate90:String>*/;
+var96 = var97;
+}
+var98 = !var96;
+var94 = var98;
+goto RET_LABEL95;
+RET_LABEL95:(void)0;
+}
+var93 = var94;
+}
+if (var93){
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var101 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var101 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
+show_backtrace(1);
+}
+var99 = var101;
+RET_LABEL100:(void)0;
+}
+}
+if (varonce102) {
+var103 = varonce102;
+} else {
+var104 = "Error: conflicting module file for ";
+var105 = 35;
+var106 = string__NativeString__to_s_with_length(var104, var105);
+var103 = var106;
+varonce102 = var103;
+}
+if (varonce107) {
+var108 = varonce107;
+} else {
+var109 = ": ";
+var110 = 2;
+var111 = string__NativeString__to_s_with_length(var109, var110);
+var108 = var111;
+varonce107 = var108;
+}
+if (varonce112) {
+var113 = varonce112;
+} else {
+var114 = " ";
+var115 = 1;
+var116 = string__NativeString__to_s_with_length(var114, var115);
+var113 = var116;
+varonce112 = var113;
+}
+var117 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var117 = array_instance Array[Object] */
+var118 = 6;
+var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var119)->values[0] = (val*) var103;
+((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_name;
+((struct instance_array__NativeArray*)var119)->values[2] = (val*) var108;
+((struct instance_array__NativeArray*)var119)->values[3] = (val*) var_candidate;
+((struct instance_array__NativeArray*)var119)->values[4] = (val*) var113;
+((struct instance_array__NativeArray*)var119)->values[5] = (val*) var_try_file;
+{
+((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
+}
+}
+{
+var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
+}
+{
+toolcontext__ToolContext__error(var99, var_location, var120); /* Direct call toolcontext#ToolContext#error on <var99:ToolContext>*/
+}
+} else {
+}
+} else {
+}
+}
+} else {
+}
+CONTINUE_label: (void)0;
+{
+((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
+}
+}
+BREAK_label: (void)0;
+var121 = NULL;
+if (var_candidate == NULL) {
+var122 = 1; /* is null */
+} else {
+var122 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var123 = string__FlatString___61d_61d(var_candidate, var121);
+var122 = var123;
+}
+if (var122){
+var124 = NULL;
+var = var124;
+goto RET_LABEL;
+} else {
+}
+{
+var125 = modelbuilder__ModelBuilder__identify_file(self, var_candidate);
+}
+var = var125;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#search_module_in_paths for (self: Object, nullable Location, String, Collection[String]): nullable ModulePath */
+val* VIRTUAL_modelbuilder__ModelBuilder__search_module_in_paths(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable ModulePath */;
+val* var1 /* : nullable ModulePath */;
+var1 = modelbuilder__ModelBuilder__search_module_in_paths(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#identified_files for (self: ModelBuilder): HashMap[String, nullable ModulePath] */
+val* modelbuilder__ModelBuilder__identified_files(val* self) {
+val* var /* : HashMap[String, nullable ModulePath] */;
+val* var1 /* : HashMap[String, nullable ModulePath] */;
+var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on <self:ModelBuilder> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 405);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#identified_files for (self: Object): HashMap[String, nullable ModulePath] */
+val* VIRTUAL_modelbuilder__ModelBuilder__identified_files(val* self) {
+val* var /* : HashMap[String, nullable ModulePath] */;
+val* var1 /* : HashMap[String, nullable ModulePath] */;
+val* var3 /* : HashMap[String, nullable ModulePath] */;
+{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on <self:Object(ModelBuilder)> */
+var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on <self:Object(ModelBuilder)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 405);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#identify_file for (self: ModelBuilder, String): nullable ModulePath */
+val* modelbuilder__ModelBuilder__identify_file(val* self, val* p0) {
+val* var /* : nullable ModulePath */;
+val* var_path /* var path: String */;
+val* var1 /* : nullable String */;
+static val* varonce;
+val* var2 /* : String */;
+char* var3 /* : NativeString */;
+long var4 /* : Int */;
+val* var5 /* : FlatString */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+val* var12 /* : null */;
+val* var13 /* : Array[String] */;
+val* var15 /* : Array[String] */;
+val* var16 /* : nullable ModulePath */;
+val* var_res /* var res: nullable ModulePath */;
+val* var17 /* : null */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+val* var24 /* : null */;
+val* var_candidate /* var candidate: nullable Object */;
+short int var25 /* : Bool */;
+val* var26 /* : nullable MGroup */;
+val* var_mgroup /* var mgroup: nullable MGroup */;
+val* var27 /* : null */;
+short int var28 /* : Bool */;
+short int var29 /* : Bool */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+short int var33 /* : Bool */;
+val* var34 /* : nullable String */;
+val* var36 /* : nullable String */;
+val* var37 /* : String */;
+val* var39 /* : String */;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+long var43 /* : Int */;
+val* var44 /* : FlatString */;
+val* var45 /* : String */;
+val* var46 /* : String */;
+val* var_owner_path /* var owner_path: String */;
+short int var47 /* : Bool */;
+val* var48 /* : null */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+val* var51 /* : ToolContext */;
+val* var53 /* : ToolContext */;
+val* var54 /* : null */;
+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 */;
+val* var69 /* : null */;
+static val* varonce70;
+val* var71 /* : String */;
+char* var72 /* : NativeString */;
+long var73 /* : Int */;
+val* var74 /* : FlatString */;
+val* var75 /* : String */;
+val* var_pn /* var pn: String */;
+val* var76 /* : String */;
+val* var_rp /* var rp: String */;
+val* var77 /* : HashMap[String, nullable ModulePath] */;
+val* var79 /* : HashMap[String, nullable ModulePath] */;
+short int var80 /* : Bool */;
+val* var81 /* : HashMap[String, nullable ModulePath] */;
+val* var83 /* : HashMap[String, nullable ModulePath] */;
+val* var84 /* : nullable Object */;
+static val* varonce85;
+val* var86 /* : String */;
+char* var87 /* : NativeString */;
+long var88 /* : Int */;
+val* var89 /* : FlatString */;
+val* var90 /* : String */;
+val* var91 /* : String */;
+val* var_mgrouppath /* var mgrouppath: String */;
+val* var92 /* : nullable MGroup */;
+val* var_mgroup93 /* var mgroup: nullable MGroup */;
+val* var94 /* : null */;
+short int var95 /* : Bool */;
+short int var96 /* : Bool */;
+val* var_other98 /* var other: nullable Object */;
+short int var99 /* : Bool */;
+short int var101 /* : Bool */;
+val* var102 /* : MProject */;
+val* var103 /* : Model */;
+val* var105 /* : Model */;
+val* var_mproject /* var mproject: MProject */;
+val* var106 /* : MGroup */;
+val* var107 /* : null */;
+val* var110 /* : ToolContext */;
+val* var112 /* : ToolContext */;
+static val* varonce113;
+val* var114 /* : String */;
+char* var115 /* : NativeString */;
+long var116 /* : Int */;
+val* var117 /* : FlatString */;
+static val* varonce118;
+val* var119 /* : String */;
+char* var120 /* : NativeString */;
+long var121 /* : Int */;
+val* var122 /* : FlatString */;
+val* var123 /* : Array[Object] */;
+long var124 /* : Int */;
+val* var125 /* : NativeArray[Object] */;
+val* var126 /* : String */;
+long var127 /* : Int */;
+val* var128 /* : ModulePath */;
+val* var_res130 /* var res: ModulePath */;
+val* var131 /* : Array[ModulePath] */;
+val* var133 /* : Array[ModulePath] */;
+val* var134 /* : HashMap[String, nullable ModulePath] */;
+val* var136 /* : HashMap[String, nullable ModulePath] */;
+var_path = p0;
+{
+var1 = file__String__file_extension(var_path);
+}
+if (varonce) {
+var2 = varonce;
+} else {
+var3 = "nit";
+var4 = 3;
+var5 = string__NativeString__to_s_with_length(var3, var4);
+var2 = var5;
+varonce = var2;
+}
+if (var1 == NULL) {
+var6 = 1; /* <var2:String> cannot be null */
+} else {
+{ /* Inline kernel#Object#!= (var1,var2) on <var1:nullable String> */
+var_other = var2;
+{
+var10 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_other) /* == on <var1:nullable String(String)>*/;
+var9 = var10;
+}
+var11 = !var9;
+var7 = var11;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+var6 = var7;
+}
+if (var6){
+var12 = NULL;
+{
+{ /* Inline modelbuilder#ModelBuilder#paths (self) on <self:ModelBuilder> */
+var15 = self->attrs[COLOR_modelbuilder__ModelBuilder___paths].val; /* _paths on <self:ModelBuilder> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _paths");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 289);
+show_backtrace(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+var16 = modelbuilder__ModelBuilder__search_module_in_paths(self, var12, var_path, var13);
+}
+var_res = var16;
+var17 = NULL;
+if (var_res == NULL) {
+var18 = 0; /* is null */
+} else {
+var18 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_res,var17) on <var_res:nullable ModulePath> */
+var_other = var17;
+{
+var22 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable ModulePath(ModulePath)>*/;
+var21 = var22;
+}
+var23 = !var21;
+var19 = var23;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
+}
+var18 = var19;
+}
+if (var18){
+var = var_res;
+goto RET_LABEL;
+} else {
+}
+var24 = NULL;
+var_candidate = var24;
+{
+var25 = file__String__file_exists(var_path);
+}
+if (var25){
+{
+var26 = modelbuilder__ModelBuilder__get_mgroup(self, var_path);
+}
+var_mgroup = var26;
+var27 = NULL;
+if (var_mgroup == NULL) {
+var28 = 0; /* is null */
+} else {
+var28 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_mgroup,var27) on <var_mgroup:nullable MGroup> */
+var_other = var27;
+{
+var32 = ((short int (*)(val*, val*))(var_mgroup->class->vft[COLOR_kernel__Object___61d_61d]))(var_mgroup, var_other) /* == on <var_mgroup:nullable MGroup(MGroup)>*/;
+var31 = var32;
+}
+var33 = !var31;
+var29 = var33;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
+}
+var28 = var29;
+}
+if (var28){
+{
+{ /* Inline mproject#MGroup#filepath (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var36 = var_mgroup->attrs[COLOR_mproject__MGroup___filepath].val; /* _filepath on <var_mgroup:nullable MGroup(MGroup)> */
+var34 = var36;
+RET_LABEL35:(void)0;
+}
+}
+{
+{ /* Inline mproject#MGroup#name (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var39 = var_mgroup->attrs[COLOR_mproject__MGroup___name].val; /* _name on <var_mgroup:nullable MGroup(MGroup)> */
+if (unlikely(var39 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mproject.nit", 56);
+show_backtrace(1);
+}
+var37 = var39;
+RET_LABEL38:(void)0;
+}
+}
+if (varonce40) {
+var41 = varonce40;
+} else {
+var42 = ".nit";
+var43 = 4;
+var44 = string__NativeString__to_s_with_length(var42, var43);
+var41 = var44;
+varonce40 = var41;
+}
+{
+var45 = string__FlatString___43d(var37, var41);
+}
+if (var34 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 423);
+show_backtrace(1);
+} else {
+var46 = file__String__join_path(var34, var45);
+}
+var_owner_path = var46;
+{
+var47 = file__String__file_exists(var_owner_path);
+}
+if (var47){
+var_candidate = var_owner_path;
+} else {
+}
+} else {
+}
+} else {
+}
+var48 = NULL;
+if (var_candidate == NULL) {
+var49 = 1; /* is null */
+} else {
+var49 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var50 = string__FlatString___61d_61d(var_candidate, var48);
+var49 = var50;
+}
+if (var49){
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var53 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var53 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
+show_backtrace(1);
+}
+var51 = var53;
+RET_LABEL52:(void)0;
+}
+}
+var54 = NULL;
+if (varonce55) {
+var56 = varonce55;
+} else {
+var57 = "Error: cannot find module `";
+var58 = 27;
+var59 = string__NativeString__to_s_with_length(var57, var58);
+var56 = var59;
+varonce55 = var56;
+}
+if (varonce60) {
+var61 = varonce60;
+} else {
+var62 = "`.";
+var63 = 2;
+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_path;
+((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]>*/;
+}
+{
+toolcontext__ToolContext__error(var51, var54, var68); /* Direct call toolcontext#ToolContext#error on <var51:ToolContext>*/
+}
+var69 = NULL;
+var = var69;
+goto RET_LABEL;
+} else {
+}
+var_path = var_candidate;
+} else {
+}
+if (varonce70) {
+var71 = varonce70;
+} else {
+var72 = ".nit";
+var73 = 4;
+var74 = string__NativeString__to_s_with_length(var72, var73);
+var71 = var74;
+varonce70 = var71;
+}
+{
+var75 = file__String__basename(var_path, var71);
+}
+var_pn = var75;
+{
+var76 = modelbuilder__ModelBuilder__module_absolute_path(self, var_path);
+}
+var_rp = var76;
+{
+{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on <self:ModelBuilder> */
+var79 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on <self:ModelBuilder> */
+if (unlikely(var79 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 405);
+show_backtrace(1);
+}
+var77 = var79;
+RET_LABEL78:(void)0;
+}
+}
+{
+var80 = abstract_collection__MapRead__has_key(var77, var_rp);
+}
+if (var80){
+{
+{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on <self:ModelBuilder> */
+var83 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on <self:ModelBuilder> */
+if (unlikely(var83 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files");
+PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 405);