+}
+var123 = NULL;
+if (var_candidate == NULL) {
+var124 = 1; /* is null */
+} else {
+var124 = 0; /* arg is null but recv is not */
+}
+if (0) {
+var125 = string__FlatString___61d_61d(var_candidate, var123);
+var124 = var125;
+}
+if (var124){
+var126 = NULL;
+var = var126;
+goto RET_LABEL;
+} else {
+}
+{
+var127 = modelbuilder__ModelBuilder__identify_file(self, var_candidate);
+}
+var = var127;
+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", "modelbuilder.nit", 416);
+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", "modelbuilder.nit", 416);
+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_res129 /* var res: ModulePath */;
+val* var130 /* : Array[ModulePath] */;
+val* var132 /* : Array[ModulePath] */;
+val* var133 /* : HashMap[String, nullable ModulePath] */;
+val* var135 /* : 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", "modelbuilder.nit", 300);
+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", "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", "modelbuilder.nit", 434);
+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", "modelbuilder.nit", 106);
+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", "modelbuilder.nit", 416);
+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", "modelbuilder.nit", 416);
+show_backtrace(1);
+}
+var81 = var83;
+RET_LABEL82:(void)0;
+}
+}
+{
+var84 = hash_collection__HashMap___91d_93d(var81, var_rp);
+}
+var = var84;
+goto RET_LABEL;
+} else {
+}
+if (varonce85) {
+var86 = varonce85;
+} else {
+var87 = "..";
+var88 = 2;
+var89 = string__NativeString__to_s_with_length(var87, var88);
+var86 = var89;
+varonce85 = var86;
+}
+{
+var90 = file__String__join_path(var_path, var86);
+}
+{
+var91 = file__String__simplify_path(var90);
+}
+var_mgrouppath = var91;
+{
+var92 = modelbuilder__ModelBuilder__get_mgroup(self, var_mgrouppath);
+}
+var_mgroup93 = var92;
+var94 = NULL;
+if (var_mgroup93 == NULL) {
+var95 = 1; /* is null */
+} else {
+var95 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_mgroup93,var94) on <var_mgroup93:nullable MGroup> */
+var_other98 = var94;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mgroup93,var_other98) on <var_mgroup93:nullable MGroup(MGroup)> */
+var101 = var_mgroup93 == var_other98;
+var99 = var101;
+goto RET_LABEL100;
+RET_LABEL100:(void)0;
+}
+}
+var96 = var99;
+goto RET_LABEL97;
+RET_LABEL97:(void)0;
+}
+var95 = var96;
+}
+if (var95){
+var102 = NEW_mproject__MProject(&type_mproject__MProject);
+{
+{ /* Inline modelbuilder#ModelBuilder#model (self) on <self:ModelBuilder> */
+var105 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
+if (unlikely(var105 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103);
+show_backtrace(1);
+}
+var103 = var105;
+RET_LABEL104:(void)0;
+}
+}
+{
+mproject__MProject__init(var102, var_pn, var103); /* Direct call mproject#MProject#init on <var102:MProject>*/
+}
+var_mproject = var102;
+var106 = NEW_mproject__MGroup(&type_mproject__MGroup);
+var107 = NULL;
+{
+mproject__MGroup__init(var106, var_pn, var_mproject, var107); /* Direct call mproject#MGroup#init on <var106:MGroup>*/
+}
+var_mgroup93 = var106;
+{
+{ /* Inline mproject#MGroup#filepath= (var_mgroup93,var_path) on <var_mgroup93:nullable MGroup(MGroup)> */
+var_mgroup93->attrs[COLOR_mproject__MGroup___filepath].val = var_path; /* _filepath on <var_mgroup93:nullable MGroup(MGroup)> */
+RET_LABEL108:(void)0;
+}
+}
+{
+{ /* Inline mproject#MProject#root= (var_mproject,var_mgroup93) on <var_mproject:MProject> */
+var_mproject->attrs[COLOR_mproject__MProject___root].val = var_mgroup93; /* _root on <var_mproject:MProject> */
+RET_LABEL109:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var112 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var112 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var110 = var112;
+RET_LABEL111:(void)0;
+}
+}
+if (varonce113) {
+var114 = varonce113;
+} else {
+var115 = "found project `";
+var116 = 15;
+var117 = string__NativeString__to_s_with_length(var115, var116);
+var114 = var117;
+varonce113 = var114;
+}
+if (varonce118) {
+var119 = varonce118;
+} else {
+var120 = "` at ";
+var121 = 5;
+var122 = string__NativeString__to_s_with_length(var120, var121);
+var119 = var122;
+varonce118 = var119;
+}
+var123 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var123 = array_instance Array[Object] */
+var124 = 4;
+var125 = NEW_array__NativeArray(var124, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var125)->values[0] = (val*) var114;
+((struct instance_array__NativeArray*)var125)->values[1] = (val*) var_pn;
+((struct instance_array__NativeArray*)var125)->values[2] = (val*) var119;
+((struct instance_array__NativeArray*)var125)->values[3] = (val*) var_path;
+{
+((void (*)(val*, val*, long))(var123->class->vft[COLOR_array__Array__with_native]))(var123, var125, var124) /* with_native on <var123:Array[Object]>*/;
+}
+}
+{
+var126 = ((val* (*)(val*))(var123->class->vft[COLOR_string__Object__to_s]))(var123) /* to_s on <var123:Array[Object]>*/;
+}
+var127 = 2;
+{
+toolcontext__ToolContext__info(var110, var126, var127); /* Direct call toolcontext#ToolContext#info on <var110:ToolContext>*/
+}
+} else {
+}
+var128 = NEW_modelbuilder__ModulePath(&type_modelbuilder__ModulePath);
+{
+((void (*)(val*, val*))(var128->class->vft[COLOR_modelbuilder__ModulePath__name_61d]))(var128, var_pn) /* name= on <var128:ModulePath>*/;
+}
+{
+((void (*)(val*, val*))(var128->class->vft[COLOR_modelbuilder__ModulePath__filepath_61d]))(var128, var_path) /* filepath= on <var128:ModulePath>*/;
+}
+{
+((void (*)(val*, val*))(var128->class->vft[COLOR_modelbuilder__ModulePath__mgroup_61d]))(var128, var_mgroup93) /* mgroup= on <var128:ModulePath>*/;
+}
+{
+((void (*)(val*))(var128->class->vft[COLOR_kernel__Object__init]))(var128) /* init on <var128:ModulePath>*/;
+}
+var_res129 = var128;
+{
+{ /* Inline modelbuilder#MGroup#module_paths (var_mgroup93) on <var_mgroup93:nullable MGroup(MGroup)> */
+var132 = var_mgroup93->attrs[COLOR_modelbuilder__MGroup___module_paths].val; /* _module_paths on <var_mgroup93:nullable MGroup(MGroup)> */
+if (unlikely(var132 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _module_paths");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 786);
+show_backtrace(1);
+}
+var130 = var132;
+RET_LABEL131:(void)0;
+}
+}
+{
+array__Array__add(var130, var_res129); /* Direct call array#Array#add on <var130:Array[ModulePath]>*/
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#identified_files (self) on <self:ModelBuilder> */
+var135 = self->attrs[COLOR_modelbuilder__ModelBuilder___identified_files].val; /* _identified_files on <self:ModelBuilder> */
+if (unlikely(var135 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _identified_files");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 416);
+show_backtrace(1);
+}
+var133 = var135;
+RET_LABEL134:(void)0;
+}
+}
+{
+hash_collection__HashMap___91d_93d_61d(var133, var_rp, var_res129); /* Direct call hash_collection#HashMap#[]= on <var133:HashMap[String, nullable ModulePath]>*/
+}
+var = var_res129;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#identify_file for (self: Object, String): nullable ModulePath */
+val* VIRTUAL_modelbuilder__ModelBuilder__identify_file(val* self, val* p0) {
+val* var /* : nullable ModulePath */;
+val* var1 /* : nullable ModulePath */;
+var1 = modelbuilder__ModelBuilder__identify_file(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#mgroups for (self: ModelBuilder): HashMap[String, nullable MGroup] */
+val* modelbuilder__ModelBuilder__mgroups(val* self) {
+val* var /* : HashMap[String, nullable MGroup] */;
+val* var1 /* : HashMap[String, nullable MGroup] */;
+var1 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#mgroups for (self: Object): HashMap[String, nullable MGroup] */
+val* VIRTUAL_modelbuilder__ModelBuilder__mgroups(val* self) {
+val* var /* : HashMap[String, nullable MGroup] */;
+val* var1 /* : HashMap[String, nullable MGroup] */;
+val* var3 /* : HashMap[String, nullable MGroup] */;
+{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on <self:Object(ModelBuilder)> */
+var3 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on <self:Object(ModelBuilder)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#get_mgroup for (self: ModelBuilder, String): nullable MGroup */
+val* modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) {
+val* var /* : nullable MGroup */;
+val* var_dirpath /* var dirpath: String */;
+val* var1 /* : String */;
+val* var_rdp /* var rdp: String */;
+val* var2 /* : HashMap[String, nullable MGroup] */;
+val* var4 /* : HashMap[String, nullable MGroup] */;
+short int var5 /* : Bool */;
+val* var6 /* : HashMap[String, nullable MGroup] */;
+val* var8 /* : HashMap[String, nullable MGroup] */;
+val* var9 /* : nullable Object */;
+static val* varonce;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+long var12 /* : Int */;
+val* var13 /* : FlatString */;
+val* var14 /* : String */;
+val* var_pn /* var pn: String */;
+static val* varonce15;
+val* var16 /* : String */;
+char* var17 /* : NativeString */;
+long var18 /* : Int */;
+val* var19 /* : FlatString */;
+val* var20 /* : String */;
+val* var21 /* : String */;
+val* var22 /* : String */;
+val* var_mp /* var mp: String */;
+val* var_dirpath2 /* var dirpath2: String */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+static val* varonce25;
+val* var26 /* : String */;
+char* var27 /* : NativeString */;
+long var28 /* : Int */;
+val* var29 /* : FlatString */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+val* var32 /* : String */;
+static val* varonce33;
+val* var34 /* : String */;
+char* var35 /* : NativeString */;
+long var36 /* : Int */;
+val* var37 /* : FlatString */;
+val* var38 /* : String */;
+val* var39 /* : null */;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+long var43 /* : Int */;
+val* var44 /* : FlatString */;
+val* var45 /* : String */;
+val* var46 /* : String */;
+val* var_parentpath /* var parentpath: String */;
+val* var47 /* : nullable MGroup */;
+val* var_parent /* var parent: nullable MGroup */;
+val* var48 /* : null */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var52 /* : Bool */;
+short int var54 /* : Bool */;
+val* var55 /* : MProject */;
+val* var56 /* : Model */;
+val* var58 /* : Model */;
+val* var_mproject /* var mproject: MProject */;
+val* var59 /* : MGroup */;
+val* var60 /* : null */;
+val* var_mgroup /* var mgroup: nullable Object */;
+val* var62 /* : ToolContext */;
+val* var64 /* : ToolContext */;
+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 */;
+val* var75 /* : Array[Object] */;
+long var76 /* : Int */;
+val* var77 /* : NativeArray[Object] */;
+val* var78 /* : String */;
+long var79 /* : Int */;
+val* var80 /* : MGroup */;
+val* var81 /* : MProject */;
+val* var83 /* : MProject */;
+val* var84 /* : ToolContext */;
+val* var86 /* : ToolContext */;
+static val* varonce87;
+val* var88 /* : String */;
+char* var89 /* : NativeString */;
+long var90 /* : Int */;
+val* var91 /* : FlatString */;
+val* var92 /* : String */;
+static val* varonce93;
+val* var94 /* : String */;
+char* var95 /* : NativeString */;
+long var96 /* : Int */;
+val* var97 /* : FlatString */;
+val* var98 /* : Array[Object] */;
+long var99 /* : Int */;
+val* var100 /* : NativeArray[Object] */;
+val* var101 /* : String */;
+long var102 /* : Int */;
+static val* varonce103;
+val* var104 /* : String */;
+char* var105 /* : NativeString */;
+long var106 /* : Int */;
+val* var107 /* : FlatString */;
+val* var108 /* : String */;
+val* var_readme /* var readme: String */;
+short int var109 /* : Bool */;
+short int var110 /* : Bool */;
+static val* varonce111;
+val* var112 /* : String */;
+char* var113 /* : NativeString */;
+long var114 /* : Int */;
+val* var115 /* : FlatString */;
+val* var116 /* : String */;
+short int var117 /* : Bool */;
+val* var118 /* : MDoc */;
+val* var_mdoc /* var mdoc: MDoc */;
+val* var119 /* : IFStream */;
+val* var_s /* var s: IFStream */;
+short int var120 /* : Bool */;
+short int var121 /* : Bool */;
+val* var122 /* : Array[String] */;
+val* var124 /* : Array[String] */;
+val* var125 /* : String */;
+val* var129 /* : HashMap[String, nullable MGroup] */;
+val* var131 /* : HashMap[String, nullable MGroup] */;
+var_dirpath = p0;
+{
+var1 = modelbuilder__ModelBuilder__module_absolute_path(self, var_dirpath);
+}
+var_rdp = var1;
+{
+{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on <self:ModelBuilder> */
+var4 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471);
+show_backtrace(1);
+}
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
+{
+var5 = abstract_collection__MapRead__has_key(var2, var_rdp);
+}
+if (var5){
+{
+{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on <self:ModelBuilder> */
+var8 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471);
+show_backtrace(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
+}
+}
+{
+var9 = hash_collection__HashMap___91d_93d(var6, var_rdp);
+}
+var = var9;
+goto RET_LABEL;
+} else {
+}
+if (varonce) {
+var10 = varonce;
+} else {
+var11 = ".nit";
+var12 = 4;
+var13 = string__NativeString__to_s_with_length(var11, var12);
+var10 = var13;
+varonce = var10;
+}
+{
+var14 = file__String__basename(var_rdp, var10);
+}
+var_pn = var14;
+if (varonce15) {
+var16 = varonce15;
+} else {
+var17 = ".nit";
+var18 = 4;
+var19 = string__NativeString__to_s_with_length(var17, var18);
+var16 = var19;
+varonce15 = var16;
+}
+{
+var20 = string__FlatString___43d(var_pn, var16);
+}
+{
+var21 = file__String__join_path(var_dirpath, var20);
+}
+{
+var22 = file__String__simplify_path(var21);
+}
+var_mp = var22;
+var_dirpath2 = var_dirpath;
+{
+var23 = file__String__file_exists(var_mp);
+}
+var24 = !var23;
+if (var24){
+if (varonce25) {
+var26 = varonce25;
+} else {
+var27 = "src";
+var28 = 3;
+var29 = string__NativeString__to_s_with_length(var27, var28);
+var26 = var29;
+varonce25 = var26;
+}
+{
+var31 = string__FlatString___61d_61d(var_pn, var26);
+var30 = var31;
+}
+if (var30){
+{
+var32 = file__String__dirname(var_rdp);
+}
+var_dirpath2 = var32;
+if (varonce33) {
+var34 = varonce33;
+} else {
+var35 = "";
+var36 = 0;
+var37 = string__NativeString__to_s_with_length(var35, var36);
+var34 = var37;
+varonce33 = var34;
+}
+{
+var38 = file__String__basename(var_dirpath2, var34);
+}
+var_pn = var38;
+} else {
+var39 = NULL;
+var = var39;
+goto RET_LABEL;
+}
+} else {
+}
+if (varonce40) {
+var41 = varonce40;
+} else {
+var42 = "..";
+var43 = 2;
+var44 = string__NativeString__to_s_with_length(var42, var43);
+var41 = var44;
+varonce40 = var41;
+}
+{
+var45 = file__String__join_path(var_dirpath, var41);
+}
+{
+var46 = file__String__simplify_path(var45);
+}
+var_parentpath = var46;
+{
+var47 = modelbuilder__ModelBuilder__get_mgroup(self, var_parentpath);
+}
+var_parent = var47;
+var48 = NULL;
+if (var_parent == NULL) {
+var49 = 1; /* is null */
+} else {
+var49 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_parent,var48) on <var_parent:nullable MGroup> */
+var_other = var48;
+{
+{ /* Inline kernel#Object#is_same_instance (var_parent,var_other) on <var_parent:nullable MGroup(MGroup)> */
+var54 = var_parent == var_other;
+var52 = var54;
+goto RET_LABEL53;
+RET_LABEL53:(void)0;
+}
+}
+var50 = var52;
+goto RET_LABEL51;
+RET_LABEL51:(void)0;
+}
+var49 = var50;
+}
+if (var49){
+var55 = NEW_mproject__MProject(&type_mproject__MProject);
+{
+{ /* Inline modelbuilder#ModelBuilder#model (self) on <self:ModelBuilder> */
+var58 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
+if (unlikely(var58 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103);
+show_backtrace(1);
+}
+var56 = var58;
+RET_LABEL57:(void)0;
+}
+}
+{
+mproject__MProject__init(var55, var_pn, var56); /* Direct call mproject#MProject#init on <var55:MProject>*/
+}
+var_mproject = var55;
+var59 = NEW_mproject__MGroup(&type_mproject__MGroup);
+var60 = NULL;
+{
+mproject__MGroup__init(var59, var_pn, var_mproject, var60); /* Direct call mproject#MGroup#init on <var59:MGroup>*/
+}
+var_mgroup = var59;
+{
+{ /* Inline mproject#MProject#root= (var_mproject,var_mgroup) on <var_mproject:MProject> */
+var_mproject->attrs[COLOR_mproject__MProject___root].val = var_mgroup; /* _root on <var_mproject:MProject> */
+RET_LABEL61:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var64 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var64 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+if (varonce65) {
+var66 = varonce65;
+} else {
+var67 = "found project `";
+var68 = 15;
+var69 = string__NativeString__to_s_with_length(var67, var68);
+var66 = var69;
+varonce65 = var66;
+}
+if (varonce70) {
+var71 = varonce70;
+} else {
+var72 = "` at ";
+var73 = 5;
+var74 = string__NativeString__to_s_with_length(var72, var73);
+var71 = var74;
+varonce70 = var71;
+}
+var75 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var75 = array_instance Array[Object] */
+var76 = 4;
+var77 = NEW_array__NativeArray(var76, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var77)->values[0] = (val*) var66;
+((struct instance_array__NativeArray*)var77)->values[1] = (val*) var_mproject;
+((struct instance_array__NativeArray*)var77)->values[2] = (val*) var71;
+((struct instance_array__NativeArray*)var77)->values[3] = (val*) var_dirpath;
+{
+((void (*)(val*, val*, long))(var75->class->vft[COLOR_array__Array__with_native]))(var75, var77, var76) /* with_native on <var75:Array[Object]>*/;
+}
+}
+{
+var78 = ((val* (*)(val*))(var75->class->vft[COLOR_string__Object__to_s]))(var75) /* to_s on <var75:Array[Object]>*/;
+}
+var79 = 2;
+{
+toolcontext__ToolContext__info(var62, var78, var79); /* Direct call toolcontext#ToolContext#info on <var62:ToolContext>*/
+}
+} else {
+var80 = NEW_mproject__MGroup(&type_mproject__MGroup);
+{
+{ /* Inline mproject#MGroup#mproject (var_parent) on <var_parent:nullable MGroup(MGroup)> */
+var83 = var_parent->attrs[COLOR_mproject__MGroup___mproject].val; /* _mproject on <var_parent:nullable MGroup(MGroup)> */
+if (unlikely(var83 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
+PRINT_ERROR(" (%s:%d)\n", "model/mproject.nit", 60);
+show_backtrace(1);
+}
+var81 = var83;
+RET_LABEL82:(void)0;
+}
+}
+{
+mproject__MGroup__init(var80, var_pn, var81, var_parent); /* Direct call mproject#MGroup#init on <var80:MGroup>*/
+}
+var_mgroup = var80;
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var86 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var86 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var84 = var86;
+RET_LABEL85:(void)0;
+}
+}
+if (varonce87) {
+var88 = varonce87;
+} else {
+var89 = "found sub group `";
+var90 = 17;
+var91 = string__NativeString__to_s_with_length(var89, var90);
+var88 = var91;
+varonce87 = var88;
+}
+{
+var92 = mproject__MGroup__full_name(var_mgroup);
+}
+if (varonce93) {
+var94 = varonce93;
+} else {
+var95 = "` at ";
+var96 = 5;
+var97 = string__NativeString__to_s_with_length(var95, var96);
+var94 = var97;
+varonce93 = var94;
+}
+var98 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var98 = array_instance Array[Object] */
+var99 = 4;
+var100 = NEW_array__NativeArray(var99, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var100)->values[0] = (val*) var88;
+((struct instance_array__NativeArray*)var100)->values[1] = (val*) var92;
+((struct instance_array__NativeArray*)var100)->values[2] = (val*) var94;
+((struct instance_array__NativeArray*)var100)->values[3] = (val*) var_dirpath;
+{
+((void (*)(val*, val*, long))(var98->class->vft[COLOR_array__Array__with_native]))(var98, var100, var99) /* with_native on <var98:Array[Object]>*/;
+}
+}
+{
+var101 = ((val* (*)(val*))(var98->class->vft[COLOR_string__Object__to_s]))(var98) /* to_s on <var98:Array[Object]>*/;
+}
+var102 = 2;
+{
+toolcontext__ToolContext__info(var84, var101, var102); /* Direct call toolcontext#ToolContext#info on <var84:ToolContext>*/
+}
+}
+if (varonce103) {
+var104 = varonce103;
+} else {
+var105 = "README.md";
+var106 = 9;
+var107 = string__NativeString__to_s_with_length(var105, var106);
+var104 = var107;
+varonce103 = var104;
+}
+{
+var108 = file__String__join_path(var_dirpath2, var104);
+}
+var_readme = var108;
+{
+var109 = file__String__file_exists(var_readme);
+}
+var110 = !var109;
+if (var110){
+if (varonce111) {
+var112 = varonce111;
+} else {
+var113 = "README";
+var114 = 6;
+var115 = string__NativeString__to_s_with_length(var113, var114);
+var112 = var115;
+varonce111 = var112;
+}
+{
+var116 = file__String__join_path(var_dirpath2, var112);
+}
+var_readme = var116;
+} else {
+}
+{
+var117 = file__String__file_exists(var_readme);
+}
+if (var117){
+var118 = NEW_mdoc__MDoc(&type_mdoc__MDoc);
+{
+((void (*)(val*))(var118->class->vft[COLOR_kernel__Object__init]))(var118) /* init on <var118:MDoc>*/;
+}
+var_mdoc = var118;
+var119 = NEW_file__IFStream(&type_file__IFStream);
+{
+file__IFStream__open(var119, var_readme); /* Direct call file#IFStream#open on <var119:IFStream>*/
+}
+var_s = var119;
+for(;;) {
+{
+var120 = stream__BufferedIStream__eof(var_s);
+}
+var121 = !var120;
+if (var121){
+{
+{ /* Inline mdoc#MDoc#content (var_mdoc) on <var_mdoc:MDoc> */
+var124 = var_mdoc->attrs[COLOR_mdoc__MDoc___content].val; /* _content on <var_mdoc:MDoc> */
+if (unlikely(var124 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _content");
+PRINT_ERROR(" (%s:%d)\n", "model/mdoc.nit", 22);
+show_backtrace(1);
+}
+var122 = var124;
+RET_LABEL123:(void)0;
+}
+}
+{
+var125 = stream__IStream__read_line(var_s);
+}
+{
+array__Array__add(var122, var125); /* Direct call array#Array#add on <var122:Array[String]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline mdoc#MEntity#mdoc= (var_mgroup,var_mdoc) on <var_mgroup:nullable Object(MGroup)> */
+var_mgroup->attrs[COLOR_mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mgroup:nullable Object(MGroup)> */
+RET_LABEL126:(void)0;
+}
+}
+{
+{ /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mgroup) on <var_mdoc:MDoc> */
+var_mdoc->attrs[COLOR_mdoc__MDoc___original_mentity].val = var_mgroup; /* _original_mentity on <var_mdoc:MDoc> */
+RET_LABEL127:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline mproject#MGroup#filepath= (var_mgroup,var_dirpath) on <var_mgroup:nullable Object(MGroup)> */
+var_mgroup->attrs[COLOR_mproject__MGroup___filepath].val = var_dirpath; /* _filepath on <var_mgroup:nullable Object(MGroup)> */
+RET_LABEL128:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#mgroups (self) on <self:ModelBuilder> */
+var131 = self->attrs[COLOR_modelbuilder__ModelBuilder___mgroups].val; /* _mgroups on <self:ModelBuilder> */
+if (unlikely(var131 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroups");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 471);
+show_backtrace(1);
+}
+var129 = var131;
+RET_LABEL130:(void)0;
+}
+}
+{
+hash_collection__HashMap___91d_93d_61d(var129, var_rdp, var_mgroup); /* Direct call hash_collection#HashMap#[]= on <var129:HashMap[String, nullable MGroup]>*/
+}
+var = var_mgroup;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#get_mgroup for (self: Object, String): nullable MGroup */
+val* VIRTUAL_modelbuilder__ModelBuilder__get_mgroup(val* self, val* p0) {
+val* var /* : nullable MGroup */;
+val* var1 /* : nullable MGroup */;
+var1 = modelbuilder__ModelBuilder__get_mgroup(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#module_absolute_path for (self: ModelBuilder, String): String */
+val* modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) {
+val* var /* : String */;
+val* var_path /* var path: String */;
+val* var1 /* : String */;
+val* var2 /* : String */;
+val* var3 /* : String */;
+var_path = p0;
+{
+var1 = file__Object__getcwd(self);
+}
+{
+var2 = file__String__join_path(var1, var_path);
+}
+{
+var3 = file__String__simplify_path(var2);
+}
+var = var3;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#module_absolute_path for (self: Object, String): String */
+val* VIRTUAL_modelbuilder__ModelBuilder__module_absolute_path(val* self, val* p0) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = modelbuilder__ModelBuilder__module_absolute_path(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#load_module_ast for (self: ModelBuilder, String): nullable AModule */
+val* modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) {
+val* var /* : nullable AModule */;
+val* var_filename /* var filename: 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 /* : ToolContext */;
+val* var14 /* : ToolContext */;
+val* var15 /* : null */;
+static val* varonce16;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+long var19 /* : Int */;
+val* var20 /* : FlatString */;
+static val* varonce21;
+val* var22 /* : String */;
+char* var23 /* : NativeString */;
+long var24 /* : Int */;
+val* var25 /* : FlatString */;
+val* var26 /* : Array[Object] */;
+long var27 /* : Int */;
+val* var28 /* : NativeArray[Object] */;
+val* var29 /* : String */;
+val* var30 /* : null */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+val* var33 /* : ToolContext */;
+val* var35 /* : ToolContext */;
+val* var36 /* : null */;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+long var40 /* : Int */;
+val* var41 /* : FlatString */;
+static val* varonce42;
+val* var43 /* : String */;
+char* var44 /* : NativeString */;
+long var45 /* : Int */;
+val* var46 /* : FlatString */;
+val* var47 /* : Array[Object] */;
+long var48 /* : Int */;
+val* var49 /* : NativeArray[Object] */;
+val* var50 /* : String */;
+val* var51 /* : null */;
+val* var52 /* : ToolContext */;
+val* var54 /* : ToolContext */;
+static val* varonce55;
+val* var56 /* : String */;
+char* var57 /* : NativeString */;
+long var58 /* : Int */;
+val* var59 /* : FlatString */;
+val* var60 /* : Array[Object] */;
+long var61 /* : Int */;
+val* var62 /* : NativeArray[Object] */;
+val* var63 /* : String */;
+long var64 /* : Int */;
+val* var65 /* : IFStream */;
+val* var_file /* var file: IFStream */;
+val* var66 /* : Lexer */;
+val* var67 /* : SourceFile */;
+val* var_lexer /* var lexer: Lexer */;
+val* var68 /* : Parser */;
+val* var_parser /* var parser: Parser */;
+val* var69 /* : Start */;
+val* var_tree /* var tree: Start */;
+val* var70 /* : nullable AModule */;
+val* var72 /* : nullable AModule */;
+val* var_nmodule /* var nmodule: nullable AModule */;
+val* var73 /* : null */;
+short int var74 /* : Bool */;
+short int var75 /* : Bool */;
+val* var_other77 /* var other: nullable Object */;
+short int var78 /* : Bool */;
+short int var80 /* : Bool */;
+val* var81 /* : EOF */;
+val* var83 /* : EOF */;
+val* var_neof /* var neof: EOF */;
+short int var84 /* : Bool */;
+int cltype;
+int idtype;
+val* var85 /* : String */;
+val* var87 /* : String */;
+val* var88 /* : null */;
+var_filename = p0;
+{
+var1 = file__String__file_extension(var_filename);
+}
+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){
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var14 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+var15 = NULL;
+if (varonce16) {
+var17 = varonce16;
+} else {
+var18 = "Error: file ";
+var19 = 12;
+var20 = string__NativeString__to_s_with_length(var18, var19);
+var17 = var20;
+varonce16 = var17;
+}
+if (varonce21) {
+var22 = varonce21;
+} else {
+var23 = " is not a valid nit module.";
+var24 = 27;
+var25 = string__NativeString__to_s_with_length(var23, var24);
+var22 = var25;
+varonce21 = var22;
+}
+var26 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var26 = array_instance Array[Object] */
+var27 = 3;
+var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
+((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_filename;
+((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
+{
+((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
+}
+}
+{
+var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
+}
+{
+toolcontext__ToolContext__error(var12, var15, var29); /* Direct call toolcontext#ToolContext#error on <var12:ToolContext>*/
+}
+var30 = NULL;
+var = var30;
+goto RET_LABEL;
+} else {
+}
+{
+var31 = file__String__file_exists(var_filename);
+}
+var32 = !var31;
+if (var32){
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var35 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var35 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+var36 = NULL;
+if (varonce37) {
+var38 = varonce37;
+} else {
+var39 = "Error: file ";
+var40 = 12;
+var41 = string__NativeString__to_s_with_length(var39, var40);
+var38 = var41;
+varonce37 = var38;
+}
+if (varonce42) {
+var43 = varonce42;
+} else {
+var44 = " not found.";
+var45 = 11;
+var46 = string__NativeString__to_s_with_length(var44, var45);
+var43 = var46;
+varonce42 = var43;
+}
+var47 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var47 = array_instance Array[Object] */
+var48 = 3;
+var49 = NEW_array__NativeArray(var48, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var49)->values[0] = (val*) var38;
+((struct instance_array__NativeArray*)var49)->values[1] = (val*) var_filename;
+((struct instance_array__NativeArray*)var49)->values[2] = (val*) var43;
+{
+((void (*)(val*, val*, long))(var47->class->vft[COLOR_array__Array__with_native]))(var47, var49, var48) /* with_native on <var47:Array[Object]>*/;
+}
+}
+{
+var50 = ((val* (*)(val*))(var47->class->vft[COLOR_string__Object__to_s]))(var47) /* to_s on <var47:Array[Object]>*/;
+}
+{
+toolcontext__ToolContext__error(var33, var36, var50); /* Direct call toolcontext#ToolContext#error on <var33:ToolContext>*/
+}
+var51 = NULL;
+var = var51;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var54 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var54 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var52 = var54;
+RET_LABEL53:(void)0;
+}
+}
+if (varonce55) {
+var56 = varonce55;
+} else {
+var57 = "load module ";
+var58 = 12;
+var59 = string__NativeString__to_s_with_length(var57, var58);
+var56 = var59;
+varonce55 = var56;
+}
+var60 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var60 = array_instance Array[Object] */
+var61 = 2;
+var62 = NEW_array__NativeArray(var61, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var62)->values[0] = (val*) var56;
+((struct instance_array__NativeArray*)var62)->values[1] = (val*) var_filename;
+{
+((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on <var60:Array[Object]>*/;
+}
+}
+{
+var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on <var60:Array[Object]>*/;
+}
+var64 = 2;
+{
+toolcontext__ToolContext__info(var52, var63, var64); /* Direct call toolcontext#ToolContext#info on <var52:ToolContext>*/
+}
+var65 = NEW_file__IFStream(&type_file__IFStream);
+{
+file__IFStream__open(var65, var_filename); /* Direct call file#IFStream#open on <var65:IFStream>*/
+}
+var_file = var65;
+var66 = NEW_lexer_work__Lexer(&type_lexer_work__Lexer);
+var67 = NEW_location__SourceFile(&type_location__SourceFile);
+{
+location__SourceFile__init(var67, var_filename, var_file); /* Direct call location#SourceFile#init on <var67:SourceFile>*/
+}
+{
+lexer_work__Lexer__init(var66, var67); /* Direct call lexer_work#Lexer#init on <var66:Lexer>*/
+}
+var_lexer = var66;
+var68 = NEW_parser_work__Parser(&type_parser_work__Parser);
+{
+parser_work__Parser__init(var68, var_lexer); /* Direct call parser_work#Parser#init on <var68:Parser>*/
+}
+var_parser = var68;
+{
+var69 = parser_work__Parser__parse(var_parser);
+}
+var_tree = var69;
+{
+file__IFStream__close(var_file); /* Direct call file#IFStream#close on <var_file:IFStream>*/
+}
+{
+{ /* Inline parser_nodes#Start#n_base (var_tree) on <var_tree:Start> */
+var72 = var_tree->attrs[COLOR_parser_nodes__Start___n_base].val; /* _n_base on <var_tree:Start> */
+var70 = var72;
+RET_LABEL71:(void)0;
+}
+}
+var_nmodule = var70;
+var73 = NULL;
+if (var_nmodule == NULL) {
+var74 = 1; /* is null */
+} else {
+var74 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_nmodule,var73) on <var_nmodule:nullable AModule> */
+var_other77 = var73;
+{
+{ /* Inline kernel#Object#is_same_instance (var_nmodule,var_other77) on <var_nmodule:nullable AModule(AModule)> */
+var80 = var_nmodule == var_other77;
+var78 = var80;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
+}
+}
+var75 = var78;
+goto RET_LABEL76;
+RET_LABEL76:(void)0;
+}
+var74 = var75;
+}
+if (var74){
+{
+{ /* Inline parser_nodes#Start#n_eof (var_tree) on <var_tree:Start> */
+var83 = var_tree->attrs[COLOR_parser_nodes__Start___n_eof].val; /* _n_eof on <var_tree:Start> */
+if (unlikely(var83 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_eof");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 2073);
+show_backtrace(1);
+}
+var81 = var83;
+RET_LABEL82:(void)0;
+}
+}
+var_neof = var81;
+/* <var_neof:EOF> isa AError */
+cltype = type_parser_nodes__AError.color;
+idtype = type_parser_nodes__AError.id;
+if(cltype >= var_neof->type->table_size) {
+var84 = 0;
+} else {
+var84 = var_neof->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var84)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 562);
+show_backtrace(1);
+}
+{
+{ /* Inline lexer_work#AError#message (var_neof) on <var_neof:EOF(AError)> */
+var87 = var_neof->attrs[COLOR_lexer_work__AError___message].val; /* _message on <var_neof:EOF(AError)> */
+if (unlikely(var87 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _message");
+PRINT_ERROR(" (%s:%d)\n", "parser/lexer_work.nit", 50);
+show_backtrace(1);
+}
+var85 = var87;
+RET_LABEL86:(void)0;
+}
+}
+{
+modelbuilder__ModelBuilder__error(self, var_neof, var85); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
+}
+var88 = NULL;
+var = var88;
+goto RET_LABEL;
+} else {
+}
+var = var_nmodule;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#load_module_ast for (self: Object, String): nullable AModule */
+val* VIRTUAL_modelbuilder__ModelBuilder__load_module_ast(val* self, val* p0) {
+val* var /* : nullable AModule */;
+val* var1 /* : nullable AModule */;
+var1 = modelbuilder__ModelBuilder__load_module_ast(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#load_module for (self: ModelBuilder, String): nullable AModule */
+val* modelbuilder__ModelBuilder__load_module(val* self, val* p0) {
+val* var /* : nullable AModule */;
+val* var_filename /* var filename: String */;
+val* var1 /* : nullable ModulePath */;
+val* var_file /* var file: nullable ModulePath */;
+val* var2 /* : null */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
+short int var8 /* : Bool */;
+val* var9 /* : null */;
+val* var10 /* : nullable MModule */;
+val* var12 /* : nullable MModule */;
+val* var_mmodule /* var mmodule: nullable MModule */;
+val* var13 /* : null */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+val* var_other17 /* var other: nullable Object */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+short int var20 /* : Bool */;
+val* var21 /* : HashMap[MModule, AModule] */;
+val* var23 /* : HashMap[MModule, AModule] */;
+val* var24 /* : nullable Object */;
+val* var25 /* : String */;
+val* var27 /* : String */;
+val* var28 /* : nullable AModule */;
+val* var_nmodule /* var nmodule: nullable AModule */;
+val* var29 /* : null */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+short int var35 /* : Bool */;
+val* var36 /* : null */;
+val* var37 /* : MGroup */;
+val* var39 /* : MGroup */;
+val* var40 /* : String */;
+val* var42 /* : String */;
+val* var43 /* : nullable MModule */;
+val* var44 /* : null */;
+short int var45 /* : Bool */;
+short int var46 /* : Bool */;
+short int var48 /* : Bool */;
+short int var50 /* : Bool */;
+val* var51 /* : null */;
+var_filename = p0;
+{
+var1 = modelbuilder__ModelBuilder__identify_file(self, var_filename);
+}
+var_file = var1;
+var2 = NULL;
+if (var_file == NULL) {
+var3 = 1; /* is null */
+} else {
+var3 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_file,var2) on <var_file:nullable ModulePath> */
+var_other = var2;
+{
+{ /* Inline kernel#Object#is_same_instance (var_file,var_other) on <var_file:nullable ModulePath(ModulePath)> */
+var8 = var_file == var_other;
+var6 = var8;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
+}
+}
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+var3 = var4;
+}
+if (var3){
+var9 = NULL;
+var = var9;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline modelbuilder#ModulePath#mmodule (var_file) on <var_file:nullable ModulePath(ModulePath)> */
+var12 = var_file->attrs[COLOR_modelbuilder__ModulePath___mmodule].val; /* _mmodule on <var_file:nullable ModulePath(ModulePath)> */
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var_mmodule = var10;
+var13 = NULL;
+if (var_mmodule == NULL) {
+var14 = 0; /* is null */
+} else {
+var14 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_mmodule,var13) on <var_mmodule:nullable MModule> */
+var_other17 = var13;
+{
+var19 = ((short int (*)(val*, val*))(var_mmodule->class->vft[COLOR_kernel__Object___61d_61d]))(var_mmodule, var_other17) /* == on <var_mmodule:nullable MModule(MModule)>*/;
+var18 = var19;
+}
+var20 = !var18;
+var15 = var20;
+goto RET_LABEL16;
+RET_LABEL16:(void)0;
+}
+var14 = var15;
+}
+if (var14){
+{
+{ /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on <self:ModelBuilder> */
+var23 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
+if (unlikely(var23 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 728);
+show_backtrace(1);
+}
+var21 = var23;
+RET_LABEL22:(void)0;
+}
+}
+{
+var24 = hash_collection__HashMap___91d_93d(var21, var_mmodule);
+}
+var = var24;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline modelbuilder#ModulePath#filepath (var_file) on <var_file:nullable ModulePath(ModulePath)> */
+var27 = var_file->attrs[COLOR_modelbuilder__ModulePath___filepath].val; /* _filepath on <var_file:nullable ModulePath(ModulePath)> */
+if (unlikely(var27 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filepath");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 773);
+show_backtrace(1);
+}
+var25 = var27;
+RET_LABEL26:(void)0;
+}
+}
+{
+var28 = modelbuilder__ModelBuilder__load_module_ast(self, var25);
+}
+var_nmodule = var28;
+var29 = NULL;
+if (var_nmodule == NULL) {
+var30 = 1; /* is null */
+} else {
+var30 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_nmodule,var29) on <var_nmodule:nullable AModule> */
+var_other = var29;
+{
+{ /* Inline kernel#Object#is_same_instance (var_nmodule,var_other) on <var_nmodule:nullable AModule(AModule)> */
+var35 = var_nmodule == var_other;
+var33 = var35;
+goto RET_LABEL34;
+RET_LABEL34:(void)0;
+}
+}
+var31 = var33;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+var30 = var31;
+}
+if (var30){
+var36 = NULL;
+var = var36;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline modelbuilder#ModulePath#mgroup (var_file) on <var_file:nullable ModulePath(ModulePath)> */
+var39 = var_file->attrs[COLOR_modelbuilder__ModulePath___mgroup].val; /* _mgroup on <var_file:nullable ModulePath(ModulePath)> */
+if (unlikely(var39 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 776);
+show_backtrace(1);
+}
+var37 = var39;
+RET_LABEL38:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModulePath#name (var_file) on <var_file:nullable ModulePath(ModulePath)> */
+var42 = var_file->attrs[COLOR_modelbuilder__ModulePath___name].val; /* _name on <var_file:nullable ModulePath(ModulePath)> */
+if (unlikely(var42 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 769);
+show_backtrace(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+var43 = modelbuilder__ModelBuilder__build_a_mmodule(self, var37, var40, var_nmodule);
+}
+var_mmodule = var43;
+var44 = NULL;
+if (var_mmodule == NULL) {
+var45 = 1; /* is null */
+} else {
+var45 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_mmodule,var44) on <var_mmodule:nullable MModule> */
+var_other = var44;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mmodule,var_other) on <var_mmodule:nullable MModule(MModule)> */
+var50 = var_mmodule == var_other;
+var48 = var50;
+goto RET_LABEL49;
+RET_LABEL49:(void)0;
+}
+}
+var46 = var48;
+goto RET_LABEL47;
+RET_LABEL47:(void)0;
+}
+var45 = var46;
+}
+if (var45){
+var51 = NULL;
+var = var51;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline modelbuilder#ModulePath#mmodule= (var_file,var_mmodule) on <var_file:nullable ModulePath(ModulePath)> */
+var_file->attrs[COLOR_modelbuilder__ModulePath___mmodule].val = var_mmodule; /* _mmodule on <var_file:nullable ModulePath(ModulePath)> */
+RET_LABEL52:(void)0;
+}
+}
+{
+modelbuilder__ModelBuilder__build_module_importation(self, var_nmodule); /* Direct call modelbuilder#ModelBuilder#build_module_importation on <self:ModelBuilder>*/
+}
+var = var_nmodule;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#load_module for (self: Object, String): nullable AModule */
+val* VIRTUAL_modelbuilder__ModelBuilder__load_module(val* self, val* p0) {
+val* var /* : nullable AModule */;
+val* var1 /* : nullable AModule */;
+var1 = modelbuilder__ModelBuilder__load_module(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#build_a_mmodule for (self: ModelBuilder, nullable MGroup, String, AModule): nullable MModule */
+val* modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable MModule */;
+val* var_mgroup /* var mgroup: nullable MGroup */;
+val* var_mod_name /* var mod_name: String */;
+val* var_nmodule /* var nmodule: AModule */;
+val* var1 /* : nullable AModuledecl */;
+val* var3 /* : nullable AModuledecl */;
+val* var_decl /* var decl: nullable AModuledecl */;
+val* var4 /* : null */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var8 /* : Bool */;
+short int var10 /* : Bool */;
+val* var11 /* : AModuleName */;
+val* var13 /* : AModuleName */;
+val* var14 /* : TId */;
+val* var16 /* : TId */;
+val* var17 /* : String */;
+val* var_decl_name /* var decl_name: String */;
+short int var18 /* : Bool */;
+short int var19 /* : Bool */;
+val* var_other21 /* var other: nullable Object */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+val* var25 /* : AModuleName */;
+val* var27 /* : AModuleName */;
+static val* varonce;
+val* var28 /* : String */;
+char* var29 /* : NativeString */;
+long var30 /* : Int */;
+val* var31 /* : FlatString */;
+static val* varonce32;
+val* var33 /* : String */;
+char* var34 /* : NativeString */;
+long var35 /* : Int */;
+val* var36 /* : FlatString */;
+val* var37 /* : Array[Object] */;
+long var38 /* : Int */;
+val* var39 /* : NativeArray[Object] */;
+val* var40 /* : String */;
+val* var41 /* : MModule */;
+val* var42 /* : Model */;
+val* var44 /* : Model */;
+val* var45 /* : Location */;
+val* var47 /* : Location */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var49 /* : Array[AModule] */;
+val* var51 /* : Array[AModule] */;
+val* var52 /* : HashMap[MModule, AModule] */;
+val* var54 /* : HashMap[MModule, AModule] */;
+val* var55 /* : null */;
+short int var56 /* : Bool */;
+short int var57 /* : Bool */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+short int var61 /* : Bool */;
+val* var62 /* : nullable ADoc */;
+val* var64 /* : nullable ADoc */;
+val* var_ndoc /* var ndoc: nullable ADoc */;
+val* var65 /* : null */;
+short int var66 /* : Bool */;
+short int var67 /* : Bool */;
+short int var69 /* : Bool */;
+short int var70 /* : Bool */;
+short int var71 /* : Bool */;
+val* var72 /* : MDoc */;
+val* var_mdoc /* var mdoc: MDoc */;
+static val* varonce75;
+val* var76 /* : String */;
+char* var77 /* : NativeString */;
+long var78 /* : Int */;
+val* var79 /* : FlatString */;
+static val* varonce80;
+val* var81 /* : String */;
+char* var82 /* : NativeString */;
+long var83 /* : Int */;
+val* var84 /* : FlatString */;
+static val* varonce85;
+val* var86 /* : String */;
+char* var87 /* : NativeString */;
+long var88 /* : Int */;
+val* var89 /* : FlatString */;
+val* var90 /* : Array[Object] */;
+long var91 /* : Int */;
+val* var92 /* : NativeArray[Object] */;
+val* var93 /* : String */;
+var_mgroup = p0;
+var_mod_name = p1;
+var_nmodule = p2;
+{
+{ /* Inline parser_nodes#AModule#n_moduledecl (var_nmodule) on <var_nmodule:AModule> */
+var3 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <var_nmodule:AModule> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+var_decl = var1;
+var4 = NULL;
+if (var_decl == NULL) {
+var5 = 1; /* is null */
+} else {
+var5 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_decl,var4) on <var_decl:nullable AModuledecl> */
+var_other = var4;
+{
+{ /* Inline kernel#Object#is_same_instance (var_decl,var_other) on <var_decl:nullable AModuledecl(AModuledecl)> */
+var10 = var_decl == var_other;
+var8 = var10;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+}
+var6 = var8;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
+}
+var5 = var6;
+}
+if (var5){
+} else {
+{
+{ /* Inline parser_nodes#AModuledecl#n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
+var13 = var_decl->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 869);
+show_backtrace(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+{ /* Inline parser_nodes#AModuleName#n_id (var11) on <var11:AModuleName> */
+var16 = var11->attrs[COLOR_parser_nodes__AModuleName___n_id].val; /* _n_id on <var11:AModuleName> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1990);
+show_backtrace(1);
+}
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+{
+var17 = lexer_work__Token__text(var14);
+}
+var_decl_name = var17;
+{
+{ /* Inline kernel#Object#!= (var_decl_name,var_mod_name) on <var_decl_name:String> */
+var_other21 = var_mod_name;
+{
+var23 = ((short int (*)(val*, val*))(var_decl_name->class->vft[COLOR_kernel__Object___61d_61d]))(var_decl_name, var_other21) /* == on <var_decl_name:String>*/;
+var22 = var23;
+}
+var24 = !var22;
+var19 = var24;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
+}
+var18 = var19;
+}
+if (var18){
+{
+{ /* Inline parser_nodes#AModuledecl#n_name (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
+var27 = var_decl->attrs[COLOR_parser_nodes__AModuledecl___n_name].val; /* _n_name on <var_decl:nullable AModuledecl(AModuledecl)> */
+if (unlikely(var27 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 869);
+show_backtrace(1);
+}
+var25 = var27;
+RET_LABEL26:(void)0;
+}
+}
+if (varonce) {
+var28 = varonce;
+} else {
+var29 = "Error: module name missmatch; declared ";
+var30 = 39;
+var31 = string__NativeString__to_s_with_length(var29, var30);
+var28 = var31;
+varonce = var28;
+}
+if (varonce32) {
+var33 = varonce32;
+} else {
+var34 = " file named ";
+var35 = 12;
+var36 = string__NativeString__to_s_with_length(var34, var35);
+var33 = var36;
+varonce32 = var33;
+}
+var37 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var37 = array_instance Array[Object] */
+var38 = 4;
+var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var39)->values[0] = (val*) var28;
+((struct instance_array__NativeArray*)var39)->values[1] = (val*) var_decl_name;
+((struct instance_array__NativeArray*)var39)->values[2] = (val*) var33;
+((struct instance_array__NativeArray*)var39)->values[3] = (val*) var_mod_name;
+{
+((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
+}
+}
+{
+var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
+}
+{
+modelbuilder__ModelBuilder__error(self, var25, var40); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
+}
+} else {
+}
+}
+var41 = NEW_mmodule__MModule(&type_mmodule__MModule);
+{
+{ /* Inline modelbuilder#ModelBuilder#model (self) on <self:ModelBuilder> */
+var44 = self->attrs[COLOR_modelbuilder__ModelBuilder___model].val; /* _model on <self:ModelBuilder> */
+if (unlikely(var44 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 103);
+show_backtrace(1);
+}
+var42 = var44;
+RET_LABEL43:(void)0;
+}
+}
+{
+{ /* Inline parser_nodes#ANode#location (var_nmodule) on <var_nmodule:AModule> */
+var47 = var_nmodule->attrs[COLOR_parser_nodes__ANode___location].val; /* _location on <var_nmodule:AModule> */
+if (unlikely(var47 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 23);
+show_backtrace(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+mmodule__MModule__init(var41, var42, var_mgroup, var_mod_name, var45); /* Direct call mmodule#MModule#init on <var41:MModule>*/
+}
+var_mmodule = var41;
+{
+{ /* Inline modelbuilder#AModule#mmodule= (var_nmodule,var_mmodule) on <var_nmodule:AModule> */
+var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val = var_mmodule; /* _mmodule on <var_nmodule:AModule> */
+RET_LABEL48:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#nmodules (self) on <self:ModelBuilder> */
+var51 = self->attrs[COLOR_modelbuilder__ModelBuilder___nmodules].val; /* _nmodules on <self:ModelBuilder> */
+if (unlikely(var51 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _nmodules");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 725);
+show_backtrace(1);
+}
+var49 = var51;
+RET_LABEL50:(void)0;
+}
+}
+{
+array__Array__add(var49, var_nmodule); /* Direct call array#Array#add on <var49:Array[AModule]>*/
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#mmodule2nmodule (self) on <self:ModelBuilder> */
+var54 = self->attrs[COLOR_modelbuilder__ModelBuilder___mmodule2nmodule].val; /* _mmodule2nmodule on <self:ModelBuilder> */
+if (unlikely(var54 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule2nmodule");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 728);
+show_backtrace(1);
+}
+var52 = var54;
+RET_LABEL53:(void)0;
+}
+}
+{
+hash_collection__HashMap___91d_93d_61d(var52, var_mmodule, var_nmodule); /* Direct call hash_collection#HashMap#[]= on <var52:HashMap[MModule, AModule]>*/
+}
+var55 = NULL;
+if (var_decl == NULL) {
+var56 = 0; /* is null */
+} else {
+var56 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_decl,var55) on <var_decl:nullable AModuledecl> */
+var_other21 = var55;
+{
+var60 = ((short int (*)(val*, val*))(var_decl->class->vft[COLOR_kernel__Object___61d_61d]))(var_decl, var_other21) /* == on <var_decl:nullable AModuledecl(AModuledecl)>*/;
+var59 = var60;
+}
+var61 = !var59;
+var57 = var61;
+goto RET_LABEL58;
+RET_LABEL58:(void)0;
+}
+var56 = var57;
+}
+if (var56){
+{
+{ /* Inline parser_nodes#AModuledecl#n_doc (var_decl) on <var_decl:nullable AModuledecl(AModuledecl)> */
+var64 = var_decl->attrs[COLOR_parser_nodes__AModuledecl___n_doc].val; /* _n_doc on <var_decl:nullable AModuledecl(AModuledecl)> */
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+var_ndoc = var62;
+var65 = NULL;
+if (var_ndoc == NULL) {
+var66 = 0; /* is null */
+} else {
+var66 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_ndoc,var65) on <var_ndoc:nullable ADoc> */
+var_other21 = var65;
+{
+var70 = ((short int (*)(val*, val*))(var_ndoc->class->vft[COLOR_kernel__Object___61d_61d]))(var_ndoc, var_other21) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
+var69 = var70;
+}
+var71 = !var69;
+var67 = var71;
+goto RET_LABEL68;
+RET_LABEL68:(void)0;
+}
+var66 = var67;
+}
+if (var66){
+{
+var72 = modelbuilder__ADoc__to_mdoc(var_ndoc);
+}
+var_mdoc = var72;
+{
+{ /* Inline mdoc#MEntity#mdoc= (var_mmodule,var_mdoc) on <var_mmodule:MModule> */
+var_mmodule->attrs[COLOR_mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mmodule:MModule> */
+RET_LABEL73:(void)0;
+}
+}
+{
+{ /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mmodule) on <var_mdoc:MDoc> */
+var_mdoc->attrs[COLOR_mdoc__MDoc___original_mentity].val = var_mmodule; /* _original_mentity on <var_mdoc:MDoc> */
+RET_LABEL74:(void)0;
+}
+}
+} else {
+if (varonce75) {
+var76 = varonce75;
+} else {
+var77 = "missing-doc";
+var78 = 11;
+var79 = string__NativeString__to_s_with_length(var77, var78);
+var76 = var79;
+varonce75 = var76;
+}
+if (varonce80) {
+var81 = varonce80;
+} else {
+var82 = "Documentation warning: Undocumented module `";
+var83 = 44;
+var84 = string__NativeString__to_s_with_length(var82, var83);
+var81 = var84;
+varonce80 = var81;
+}
+if (varonce85) {
+var86 = varonce85;
+} else {
+var87 = "`";
+var88 = 1;
+var89 = string__NativeString__to_s_with_length(var87, var88);
+var86 = var89;
+varonce85 = var86;
+}
+var90 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var90 = array_instance Array[Object] */
+var91 = 3;
+var92 = NEW_array__NativeArray(var91, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var92)->values[0] = (val*) var81;
+((struct instance_array__NativeArray*)var92)->values[1] = (val*) var_mmodule;
+((struct instance_array__NativeArray*)var92)->values[2] = (val*) var86;
+{
+((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[Object]>*/;
+}
+}
+{
+var93 = ((val* (*)(val*))(var90->class->vft[COLOR_string__Object__to_s]))(var90) /* to_s on <var90:Array[Object]>*/;
+}
+{
+modelbuilder__ModelBuilder__advice(self, var_decl, var76, var93); /* Direct call modelbuilder#ModelBuilder#advice on <self:ModelBuilder>*/
+}
+}
+} else {
+}
+var = var_mmodule;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#build_a_mmodule for (self: Object, nullable MGroup, String, AModule): nullable MModule */
+val* VIRTUAL_modelbuilder__ModelBuilder__build_a_mmodule(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable MModule */;
+val* var1 /* : nullable MModule */;
+var1 = modelbuilder__ModelBuilder__build_a_mmodule(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder#ModelBuilder#build_module_importation for (self: ModelBuilder, AModule) */
+void modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) {
+val* var_nmodule /* var nmodule: AModule */;
+short int var /* : Bool */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var5 /* : nullable MModule */;
+val* var7 /* : nullable MModule */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var8 /* : Bool */;
+short int var_stdimport /* var stdimport: Bool */;
+val* var9 /* : Array[MModule] */;
+val* var_imported_modules /* var imported_modules: Array[MModule] */;
+val* var10 /* : ANodes[AImport] */;
+val* var12 /* : ANodes[AImport] */;
+val* var_ /* var : ANodes[AImport] */;
+val* var13 /* : Iterator[ANode] */;
+val* var_14 /* var : Iterator[AImport] */;
+short int var15 /* : Bool */;
+val* var16 /* : nullable Object */;
+val* var_aimport /* var aimport: AImport */;
+short int var17 /* : Bool */;
+short int var18 /* : Bool */;
+int cltype;
+int idtype;
+short int var19 /* : Bool */;
+val* var20 /* : nullable MGroup */;
+val* var22 /* : nullable MGroup */;
+val* var_mgroup /* var mgroup: nullable MGroup */;
+val* var23 /* : AModuleName */;
+val* var25 /* : AModuleName */;
+val* var26 /* : nullable TQuad */;
+val* var28 /* : nullable TQuad */;
+val* var29 /* : null */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var33 /* : Bool */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+val* var36 /* : null */;
+val* var37 /* : AModuleName */;
+val* var39 /* : AModuleName */;
+val* var40 /* : ANodes[TId] */;
+val* var42 /* : ANodes[TId] */;
+val* var_43 /* var : ANodes[TId] */;
+val* var44 /* : Iterator[ANode] */;
+val* var_45 /* var : Iterator[TId] */;
+short int var46 /* : Bool */;
+val* var47 /* : nullable Object */;
+val* var_grp /* var grp: TId */;
+val* var48 /* : String */;
+val* var49 /* : nullable ModulePath */;
+val* var_path /* var path: nullable ModulePath */;
+val* var50 /* : null */;
+short int var51 /* : Bool */;
+short int var52 /* : Bool */;
+val* var_other54 /* var other: nullable Object */;
+short int var55 /* : Bool */;
+short int var57 /* : Bool */;
+val* var58 /* : MGroup */;
+val* var60 /* : MGroup */;
+val* var63 /* : AModuleName */;
+val* var65 /* : AModuleName */;
+val* var66 /* : TId */;
+val* var68 /* : TId */;
+val* var69 /* : String */;
+val* var_mod_name /* var mod_name: String */;
+val* var70 /* : AModuleName */;
+val* var72 /* : AModuleName */;
+val* var73 /* : nullable MModule */;
+val* var_sup /* var sup: nullable MModule */;
+val* var74 /* : null */;
+short int var75 /* : Bool */;
+short int var76 /* : Bool */;
+short int var78 /* : Bool */;
+short int var80 /* : Bool */;
+val* var82 /* : AVisibility */;
+val* var84 /* : AVisibility */;
+val* var85 /* : MVisibility */;
+val* var_mvisibility /* var mvisibility: MVisibility */;
+val* var86 /* : MVisibility */;
+short int var87 /* : Bool */;
+short int var88 /* : Bool */;
+short int var90 /* : Bool */;
+short int var92 /* : Bool */;
+val* var93 /* : AVisibility */;
+val* var95 /* : AVisibility */;
+static val* varonce;
+val* var96 /* : String */;
+char* var97 /* : NativeString */;
+long var98 /* : Int */;
+val* var99 /* : FlatString */;
+short int var100 /* : Bool */;
+short int var101 /* : Bool */;
+short int var103 /* : Bool */;
+short int var105 /* : Bool */;
+val* var106 /* : AModuleName */;
+val* var108 /* : AModuleName */;
+static val* varonce109;
+val* var110 /* : String */;
+char* var111 /* : NativeString */;
+long var112 /* : Int */;
+val* var113 /* : FlatString */;
+static val* varonce114;
+val* var115 /* : String */;
+char* var116 /* : NativeString */;
+long var117 /* : Int */;
+val* var118 /* : FlatString */;
+val* var119 /* : Array[Object] */;
+long var120 /* : Int */;
+val* var121 /* : NativeArray[Object] */;
+val* var122 /* : String */;
+val* var123 /* : POSetElement[MModule] */;
+val* var125 /* : POSetElement[MModule] */;
+short int var126 /* : Bool */;
+val* var127 /* : AModuleName */;
+val* var129 /* : AModuleName */;
+static val* varonce130;
+val* var131 /* : String */;
+char* var132 /* : NativeString */;
+long var133 /* : Int */;
+val* var134 /* : FlatString */;
+static val* varonce135;
+val* var136 /* : String */;
+char* var137 /* : NativeString */;
+long var138 /* : Int */;
+val* var139 /* : FlatString */;
+static val* varonce140;
+val* var141 /* : String */;
+char* var142 /* : NativeString */;
+long var143 /* : Int */;
+val* var144 /* : FlatString */;
+val* var145 /* : Array[Object] */;
+long var146 /* : Int */;
+val* var147 /* : NativeArray[Object] */;
+val* var148 /* : String */;
+static val* varonce151;
+val* var152 /* : String */;
+char* var153 /* : NativeString */;
+long var154 /* : Int */;
+val* var155 /* : FlatString */;
+val* var_mod_name156 /* var mod_name: String */;
+val* var157 /* : null */;
+val* var158 /* : nullable MModule */;
+val* var_sup159 /* var sup: nullable MModule */;
+val* var160 /* : null */;
+short int var161 /* : Bool */;
+short int var162 /* : Bool */;
+short int var164 /* : Bool */;
+short int var165 /* : Bool */;
+short int var166 /* : Bool */;
+val* var167 /* : MVisibility */;
+val* var168 /* : ToolContext */;
+val* var170 /* : ToolContext */;
+static val* varonce171;
+val* var172 /* : String */;
+char* var173 /* : NativeString */;
+long var174 /* : Int */;
+val* var175 /* : FlatString */;
+static val* varonce176;
+val* var177 /* : String */;
+char* var178 /* : NativeString */;
+long var179 /* : Int */;
+val* var180 /* : FlatString */;
+val* var181 /* : String */;
+val* var182 /* : Array[Object] */;
+long var183 /* : Int */;
+val* var184 /* : NativeArray[Object] */;
+val* var185 /* : String */;
+long var186 /* : Int */;
+val* var187 /* : POSetElement[MModule] */;
+val* var189 /* : POSetElement[MModule] */;
+val* var190 /* : Collection[Object] */;
+val* var_directs /* var directs: Collection[MModule] */;
+val* var191 /* : ANodes[AImport] */;
+val* var193 /* : ANodes[AImport] */;
+val* var_194 /* var : ANodes[AImport] */;
+val* var195 /* : Iterator[ANode] */;
+val* var_196 /* var : Iterator[AImport] */;
+short int var197 /* : Bool */;
+val* var198 /* : nullable Object */;
+val* var_nim /* var nim: AImport */;
+short int var199 /* : Bool */;
+int cltype200;
+int idtype201;
+short int var202 /* : Bool */;
+val* var204 /* : nullable MModule */;
+val* var206 /* : nullable MModule */;
+val* var_im /* var im: nullable MModule */;
+val* var207 /* : null */;
+short int var208 /* : Bool */;
+short int var209 /* : Bool */;
+short int var211 /* : Bool */;
+short int var213 /* : Bool */;
+short int var214 /* : Bool */;
+var_nmodule = p0;
+{
+{ /* Inline modelbuilder#AModule#is_importation_done (var_nmodule) on <var_nmodule:AModule> */
+var2 = var_nmodule->attrs[COLOR_modelbuilder__AModule___is_importation_done].s; /* _is_importation_done on <var_nmodule:AModule> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+if (var){
+goto RET_LABEL;
+} else {
+}
+var3 = 1;
+{
+{ /* Inline modelbuilder#AModule#is_importation_done= (var_nmodule,var3) on <var_nmodule:AModule> */
+var_nmodule->attrs[COLOR_modelbuilder__AModule___is_importation_done].s = var3; /* _is_importation_done on <var_nmodule:AModule> */
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline modelbuilder#AModule#mmodule (var_nmodule) on <var_nmodule:AModule> */
+var7 = var_nmodule->attrs[COLOR_modelbuilder__AModule___mmodule].val; /* _mmodule on <var_nmodule:AModule> */
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 667);
+show_backtrace(1);
+}
+var_mmodule = var5;
+var8 = 1;
+var_stdimport = var8;
+var9 = NEW_array__Array(&type_array__Arraymmodule__MModule);
+{
+((void (*)(val*))(var9->class->vft[COLOR_kernel__Object__init]))(var9) /* init on <var9:Array[MModule]>*/;
+}
+var_imported_modules = var9;
+{
+{ /* Inline parser_nodes#AModule#n_imports (var_nmodule) on <var_nmodule:AModule> */
+var12 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <var_nmodule:AModule> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 857);
+show_backtrace(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var_ = var10;
+{
+var13 = parser_nodes__ANodes__iterator(var_);
+}
+var_14 = var13;
+for(;;) {
+{
+var15 = ((short int (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on <var_14:Iterator[AImport]>*/;
+}
+if (var15){
+{
+var16 = ((val* (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__item]))(var_14) /* item on <var_14:Iterator[AImport]>*/;
+}
+var_aimport = var16;
+var17 = 0;
+var_stdimport = var17;
+/* <var_aimport:AImport> isa AStdImport */
+cltype = type_parser_nodes__AStdImport.color;
+idtype = type_parser_nodes__AStdImport.id;
+if(cltype >= var_aimport->type->table_size) {
+var18 = 0;
+} else {
+var18 = var_aimport->type->type_table[cltype] == idtype;
+}
+var19 = !var18;
+if (var19){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline mmodule#MModule#mgroup (var_mmodule) on <var_mmodule:MModule> */
+var22 = var_mmodule->attrs[COLOR_mmodule__MModule___mgroup].val; /* _mgroup on <var_mmodule:MModule> */
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+var_mgroup = var20;
+{
+{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var25 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882);
+show_backtrace(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+{ /* Inline parser_nodes#AModuleName#n_quad (var23) on <var23:AModuleName> */
+var28 = var23->attrs[COLOR_parser_nodes__AModuleName___n_quad].val; /* _n_quad on <var23:AModuleName> */
+var26 = var28;
+RET_LABEL27:(void)0;
+}
+}
+var29 = NULL;
+if (var26 == NULL) {
+var30 = 0; /* is null */
+} else {
+var30 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var26,var29) on <var26:nullable TQuad> */
+var_other = var29;
+{
+var34 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_kernel__Object___61d_61d]))(var26, var_other) /* == on <var26:nullable TQuad(TQuad)>*/;
+var33 = var34;
+}
+var35 = !var33;
+var31 = var35;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
+}
+var30 = var31;
+}
+if (var30){
+var36 = NULL;
+var_mgroup = var36;
+} else {
+}
+{
+{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var39 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var39 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882);
+show_backtrace(1);
+}
+var37 = var39;
+RET_LABEL38:(void)0;
+}
+}
+{
+{ /* Inline parser_nodes#AModuleName#n_path (var37) on <var37:AModuleName> */
+var42 = var37->attrs[COLOR_parser_nodes__AModuleName___n_path].val; /* _n_path on <var37:AModuleName> */
+if (unlikely(var42 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_path");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1989);
+show_backtrace(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+var_43 = var40;
+{
+var44 = parser_nodes__ANodes__iterator(var_43);
+}
+var_45 = var44;
+for(;;) {
+{
+var46 = ((short int (*)(val*))(var_45->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_45) /* is_ok on <var_45:Iterator[TId]>*/;
+}
+if (var46){
+{
+var47 = ((val* (*)(val*))(var_45->class->vft[COLOR_abstract_collection__Iterator__item]))(var_45) /* item on <var_45:Iterator[TId]>*/;
+}
+var_grp = var47;
+{
+var48 = lexer_work__Token__text(var_grp);
+}
+{
+var49 = modelbuilder__ModelBuilder__search_mmodule_by_name(self, var_grp, var_mgroup, var48);
+}
+var_path = var49;
+var50 = NULL;
+if (var_path == NULL) {
+var51 = 1; /* is null */
+} else {
+var51 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_path,var50) on <var_path:nullable ModulePath> */
+var_other54 = var50;
+{
+{ /* Inline kernel#Object#is_same_instance (var_path,var_other54) on <var_path:nullable ModulePath(ModulePath)> */
+var57 = var_path == var_other54;
+var55 = var57;
+goto RET_LABEL56;
+RET_LABEL56:(void)0;
+}
+}
+var52 = var55;
+goto RET_LABEL53;
+RET_LABEL53:(void)0;
+}
+var51 = var52;
+}
+if (var51){
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline modelbuilder#ModulePath#mgroup (var_path) on <var_path:nullable ModulePath(ModulePath)> */
+var60 = var_path->attrs[COLOR_modelbuilder__ModulePath___mgroup].val; /* _mgroup on <var_path:nullable ModulePath(ModulePath)> */
+if (unlikely(var60 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mgroup");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 776);
+show_backtrace(1);
+}
+var58 = var60;
+RET_LABEL59:(void)0;
+}
+}
+var_mgroup = var58;
+{
+((void (*)(val*))(var_45->class->vft[COLOR_abstract_collection__Iterator__next]))(var_45) /* next on <var_45:Iterator[TId]>*/;
+}
+} else {
+goto BREAK_label61;
+}
+}
+BREAK_label61: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_45) on <var_45:Iterator[TId]> */
+RET_LABEL62:(void)0;
+}
+}
+{
+{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var65 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var65 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882);
+show_backtrace(1);
+}
+var63 = var65;
+RET_LABEL64:(void)0;
+}
+}
+{
+{ /* Inline parser_nodes#AModuleName#n_id (var63) on <var63:AModuleName> */
+var68 = var63->attrs[COLOR_parser_nodes__AModuleName___n_id].val; /* _n_id on <var63:AModuleName> */
+if (unlikely(var68 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 1990);
+show_backtrace(1);
+}
+var66 = var68;
+RET_LABEL67:(void)0;
+}
+}
+{
+var69 = lexer_work__Token__text(var66);
+}
+var_mod_name = var69;
+{
+{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var72 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var72 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882);
+show_backtrace(1);
+}
+var70 = var72;
+RET_LABEL71:(void)0;
+}
+}
+{
+var73 = modelbuilder__ModelBuilder__get_mmodule_by_name(self, var70, var_mgroup, var_mod_name);
+}
+var_sup = var73;
+var74 = NULL;
+if (var_sup == NULL) {
+var75 = 1; /* is null */
+} else {
+var75 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_sup,var74) on <var_sup:nullable MModule> */
+var_other54 = var74;
+{
+{ /* Inline kernel#Object#is_same_instance (var_sup,var_other54) on <var_sup:nullable MModule(MModule)> */
+var80 = var_sup == var_other54;
+var78 = var80;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
+}
+}
+var76 = var78;
+goto RET_LABEL77;
+RET_LABEL77:(void)0;
+}
+var75 = var76;
+}
+if (var75){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline modelbuilder#AStdImport#mmodule= (var_aimport,var_sup) on <var_aimport:AImport(AStdImport)> */
+var_aimport->attrs[COLOR_modelbuilder__AStdImport___mmodule].val = var_sup; /* _mmodule on <var_aimport:AImport(AStdImport)> */
+RET_LABEL81:(void)0;
+}
+}
+{
+array__Array__add(var_imported_modules, var_sup); /* Direct call array#Array#add on <var_imported_modules:Array[MModule]>*/
+}
+{
+{ /* Inline parser_nodes#AStdImport#n_visibility (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var84 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val; /* _n_visibility on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var84 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 880);
+show_backtrace(1);
+}
+var82 = var84;
+RET_LABEL83:(void)0;
+}
+}
+{
+var85 = ((val* (*)(val*))(var82->class->vft[COLOR_modelbuilder__AVisibility__mvisibility]))(var82) /* mvisibility on <var82:AVisibility>*/;
+}
+var_mvisibility = var85;
+{
+var86 = model_base__Object__protected_visibility(self);
+}
+{
+{ /* Inline kernel#Object#== (var_mvisibility,var86) on <var_mvisibility:MVisibility> */
+var_other54 = var86;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other54) on <var_mvisibility:MVisibility> */
+var92 = var_mvisibility == var_other54;
+var90 = var92;
+goto RET_LABEL91;
+RET_LABEL91:(void)0;
+}
+}
+var88 = var90;
+goto RET_LABEL89;
+RET_LABEL89:(void)0;
+}
+var87 = var88;
+}
+if (var87){
+{
+{ /* Inline parser_nodes#AStdImport#n_visibility (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var95 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_visibility].val; /* _n_visibility on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var95 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_visibility");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 880);
+show_backtrace(1);
+}
+var93 = var95;
+RET_LABEL94:(void)0;
+}
+}
+if (varonce) {
+var96 = varonce;
+} else {
+var97 = "Error: only properties can be protected.";
+var98 = 40;
+var99 = string__NativeString__to_s_with_length(var97, var98);
+var96 = var99;
+varonce = var96;
+}
+{
+modelbuilder__ModelBuilder__error(self, var93, var96); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline kernel#Object#== (var_sup,var_mmodule) on <var_sup:nullable MModule(MModule)> */
+var_other54 = var_mmodule;
+{
+{ /* Inline kernel#Object#is_same_instance (var_sup,var_other54) on <var_sup:nullable MModule(MModule)> */
+var105 = var_sup == var_other54;
+var103 = var105;
+goto RET_LABEL104;
+RET_LABEL104:(void)0;
+}
+}
+var101 = var103;
+goto RET_LABEL102;
+RET_LABEL102:(void)0;
+}
+var100 = var101;
+}
+if (var100){
+{
+{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var108 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var108 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882);
+show_backtrace(1);
+}
+var106 = var108;
+RET_LABEL107:(void)0;
+}
+}
+if (varonce109) {
+var110 = varonce109;
+} else {
+var111 = "Error: Dependency loop in module ";
+var112 = 33;
+var113 = string__NativeString__to_s_with_length(var111, var112);
+var110 = var113;
+varonce109 = var110;
+}
+if (varonce114) {
+var115 = varonce114;
+} else {
+var116 = ".";
+var117 = 1;
+var118 = string__NativeString__to_s_with_length(var116, var117);
+var115 = var118;
+varonce114 = var115;
+}
+var119 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var119 = array_instance Array[Object] */
+var120 = 3;
+var121 = NEW_array__NativeArray(var120, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var121)->values[0] = (val*) var110;
+((struct instance_array__NativeArray*)var121)->values[1] = (val*) var_mmodule;
+((struct instance_array__NativeArray*)var121)->values[2] = (val*) var115;
+{
+((void (*)(val*, val*, long))(var119->class->vft[COLOR_array__Array__with_native]))(var119, var121, var120) /* with_native on <var119:Array[Object]>*/;
+}
+}
+{
+var122 = ((val* (*)(val*))(var119->class->vft[COLOR_string__Object__to_s]))(var119) /* to_s on <var119:Array[Object]>*/;
+}
+{
+modelbuilder__ModelBuilder__error(self, var106, var122); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
+}
+} else {
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var_sup) on <var_sup:nullable MModule(MModule)> */
+var125 = var_sup->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_sup:nullable MModule(MModule)> */
+if (unlikely(var125 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
+show_backtrace(1);
+}
+var123 = var125;
+RET_LABEL124:(void)0;
+}
+}
+{
+var126 = poset__POSetElement___60d(var123, var_mmodule);
+}
+if (var126){
+{
+{ /* Inline parser_nodes#AStdImport#n_name (var_aimport) on <var_aimport:AImport(AStdImport)> */
+var129 = var_aimport->attrs[COLOR_parser_nodes__AStdImport___n_name].val; /* _n_name on <var_aimport:AImport(AStdImport)> */
+if (unlikely(var129 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_name");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 882);
+show_backtrace(1);
+}
+var127 = var129;
+RET_LABEL128:(void)0;
+}
+}
+if (varonce130) {
+var131 = varonce130;
+} else {
+var132 = "Error: Dependency loop between modules ";
+var133 = 39;
+var134 = string__NativeString__to_s_with_length(var132, var133);
+var131 = var134;
+varonce130 = var131;
+}
+if (varonce135) {
+var136 = varonce135;
+} else {
+var137 = " and ";
+var138 = 5;
+var139 = string__NativeString__to_s_with_length(var137, var138);
+var136 = var139;
+varonce135 = var136;
+}
+if (varonce140) {
+var141 = varonce140;
+} else {
+var142 = ".";
+var143 = 1;
+var144 = string__NativeString__to_s_with_length(var142, var143);
+var141 = var144;
+varonce140 = var141;
+}
+var145 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var145 = array_instance Array[Object] */
+var146 = 5;
+var147 = NEW_array__NativeArray(var146, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var147)->values[0] = (val*) var131;
+((struct instance_array__NativeArray*)var147)->values[1] = (val*) var_mmodule;
+((struct instance_array__NativeArray*)var147)->values[2] = (val*) var136;
+((struct instance_array__NativeArray*)var147)->values[3] = (val*) var_sup;
+((struct instance_array__NativeArray*)var147)->values[4] = (val*) var141;
+{
+((void (*)(val*, val*, long))(var145->class->vft[COLOR_array__Array__with_native]))(var145, var147, var146) /* with_native on <var145:Array[Object]>*/;
+}
+}
+{
+var148 = ((val* (*)(val*))(var145->class->vft[COLOR_string__Object__to_s]))(var145) /* to_s on <var145:Array[Object]>*/;
+}
+{
+modelbuilder__ModelBuilder__error(self, var127, var148); /* Direct call modelbuilder#ModelBuilder#error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+} else {
+}
+{
+mmodule__MModule__set_visibility_for(var_mmodule, var_sup, var_mvisibility); /* Direct call mmodule#MModule#set_visibility_for on <var_mmodule:MModule>*/
+}
+BREAK_label: (void)0;
+{
+((void (*)(val*))(var_14->class->vft[COLOR_abstract_collection__Iterator__next]))(var_14) /* next on <var_14:Iterator[AImport]>*/;
+}
+} else {
+goto BREAK_label149;
+}
+}
+BREAK_label149: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:Iterator[AImport]> */
+RET_LABEL150:(void)0;
+}
+}
+if (var_stdimport){
+if (varonce151) {
+var152 = varonce151;
+} else {
+var153 = "standard";
+var154 = 8;
+var155 = string__NativeString__to_s_with_length(var153, var154);
+var152 = var155;
+varonce151 = var152;
+}
+var_mod_name156 = var152;
+var157 = NULL;
+{
+var158 = modelbuilder__ModelBuilder__get_mmodule_by_name(self, var_nmodule, var157, var_mod_name156);
+}
+var_sup159 = var158;
+var160 = NULL;
+if (var_sup159 == NULL) {
+var161 = 0; /* is null */
+} else {
+var161 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_sup159,var160) on <var_sup159:nullable MModule> */
+var_other = var160;
+{
+var165 = ((short int (*)(val*, val*))(var_sup159->class->vft[COLOR_kernel__Object___61d_61d]))(var_sup159, var_other) /* == on <var_sup159:nullable MModule(MModule)>*/;
+var164 = var165;
+}
+var166 = !var164;
+var162 = var166;
+goto RET_LABEL163;
+RET_LABEL163:(void)0;
+}
+var161 = var162;
+}
+if (var161){
+{
+array__Array__add(var_imported_modules, var_sup159); /* Direct call array#Array#add on <var_imported_modules:Array[MModule]>*/
+}
+{
+var167 = model_base__Object__public_visibility(self);
+}
+{
+mmodule__MModule__set_visibility_for(var_mmodule, var_sup159, var167); /* Direct call mmodule#MModule#set_visibility_for on <var_mmodule:MModule>*/
+}
+} else {
+}
+} else {
+}
+{
+{ /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var170 = self->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var170 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
+show_backtrace(1);
+}
+var168 = var170;
+RET_LABEL169:(void)0;
+}
+}
+if (varonce171) {
+var172 = varonce171;
+} else {
+var173 = " imports ";
+var174 = 9;
+var175 = string__NativeString__to_s_with_length(var173, var174);
+var172 = var175;
+varonce171 = var172;
+}
+if (varonce176) {
+var177 = varonce176;
+} else {
+var178 = ", ";
+var179 = 2;
+var180 = string__NativeString__to_s_with_length(var178, var179);
+var177 = var180;
+varonce176 = var177;
+}
+{
+var181 = string__Collection__join(var_imported_modules, var177);
+}
+var182 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var182 = array_instance Array[Object] */
+var183 = 3;
+var184 = NEW_array__NativeArray(var183, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var184)->values[0] = (val*) var_mmodule;
+((struct instance_array__NativeArray*)var184)->values[1] = (val*) var172;
+((struct instance_array__NativeArray*)var184)->values[2] = (val*) var181;
+{
+((void (*)(val*, val*, long))(var182->class->vft[COLOR_array__Array__with_native]))(var182, var184, var183) /* with_native on <var182:Array[Object]>*/;
+}
+}
+{
+var185 = ((val* (*)(val*))(var182->class->vft[COLOR_string__Object__to_s]))(var182) /* to_s on <var182:Array[Object]>*/;
+}
+var186 = 3;
+{
+toolcontext__ToolContext__info(var168, var185, var186); /* Direct call toolcontext#ToolContext#info on <var168:ToolContext>*/
+}
+{
+mmodule__MModule__set_imported_mmodules(var_mmodule, var_imported_modules); /* Direct call mmodule#MModule#set_imported_mmodules on <var_mmodule:MModule>*/
+}
+{
+{ /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
+var189 = var_mmodule->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
+if (unlikely(var189 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 93);
+show_backtrace(1);
+}
+var187 = var189;
+RET_LABEL188:(void)0;
+}
+}
+{
+var190 = poset__POSetElement__direct_greaters(var187);
+}
+var_directs = var190;
+{
+{ /* Inline parser_nodes#AModule#n_imports (var_nmodule) on <var_nmodule:AModule> */
+var193 = var_nmodule->attrs[COLOR_parser_nodes__AModule___n_imports].val; /* _n_imports on <var_nmodule:AModule> */
+if (unlikely(var193 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_imports");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser_nodes.nit", 857);
+show_backtrace(1);
+}
+var191 = var193;
+RET_LABEL192:(void)0;
+}
+}
+var_194 = var191;
+{
+var195 = parser_nodes__ANodes__iterator(var_194);
+}
+var_196 = var195;
+for(;;) {
+{
+var197 = ((short int (*)(val*))(var_196->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_196) /* is_ok on <var_196:Iterator[AImport]>*/;
+}
+if (var197){
+{
+var198 = ((val* (*)(val*))(var_196->class->vft[COLOR_abstract_collection__Iterator__item]))(var_196) /* item on <var_196:Iterator[AImport]>*/;
+}
+var_nim = var198;
+/* <var_nim:AImport> isa AStdImport */
+cltype200 = type_parser_nodes__AStdImport.color;
+idtype201 = type_parser_nodes__AStdImport.id;
+if(cltype200 >= var_nim->type->table_size) {
+var199 = 0;
+} else {
+var199 = var_nim->type->type_table[cltype200] == idtype201;
+}
+var202 = !var199;
+if (var202){
+goto BREAK_label203;
+} else {
+}
+{
+{ /* Inline modelbuilder#AStdImport#mmodule (var_nim) on <var_nim:AImport(AStdImport)> */
+var206 = var_nim->attrs[COLOR_modelbuilder__AStdImport___mmodule].val; /* _mmodule on <var_nim:AImport(AStdImport)> */
+var204 = var206;
+RET_LABEL205:(void)0;
+}
+}
+var_im = var204;
+var207 = NULL;
+if (var_im == NULL) {
+var208 = 1; /* is null */
+} else {
+var208 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_im,var207) on <var_im:nullable MModule> */
+var_other54 = var207;
+{
+{ /* Inline kernel#Object#is_same_instance (var_im,var_other54) on <var_im:nullable MModule(MModule)> */
+var213 = var_im == var_other54;
+var211 = var213;
+goto RET_LABEL212;
+RET_LABEL212:(void)0;
+}
+}
+var209 = var211;
+goto RET_LABEL210;
+RET_LABEL210:(void)0;
+}
+var208 = var209;
+}
+if (var208){
+goto BREAK_label203;
+} else {
+}
+{
+var214 = ((short int (*)(val*, val*))(var_directs->class->vft[COLOR_abstract_collection__Collection__has]))(var_directs, var_im) /* has on <var_directs:Collection[MModule]>*/;
+}
+if (var214){
+goto BREAK_label203;
+} else {
+}
+BREAK_label203: (void)0;
+{
+((void (*)(val*))(var_196->class->vft[COLOR_abstract_collection__Iterator__next]))(var_196) /* next on <var_196:Iterator[AImport]>*/;
+}
+} else {
+goto BREAK_label215;
+}
+}
+BREAK_label215: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_196) on <var_196:Iterator[AImport]> */
+RET_LABEL216:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method modelbuilder#ModelBuilder#build_module_importation for (self: Object, AModule) */
+void VIRTUAL_modelbuilder__ModelBuilder__build_module_importation(val* self, val* p0) {
+modelbuilder__ModelBuilder__build_module_importation(self, p0); /* Direct call modelbuilder#ModelBuilder#build_module_importation on <self:Object(ModelBuilder)>*/
+RET_LABEL:;