+}
+var41 = var43;
+goto RET_LABEL42;
+RET_LABEL42:(void)0;
+}
+var40 = var41;
+}
+if (var40){
+goto CONTINUE_label;
+} else {
+}
+{
+{ /* Inline mmodule#MModule#direct_owner= (var_m,self) on <var_m:MModule> */
+var_m->attrs[COLOR_mmodule__MModule___direct_owner].val = self; /* _direct_owner on <var_m:MModule> */
+RET_LABEL46:(void)0;
+}
+}
+{
+{ /* Inline mmodule#Model#mmodule_nesting_hierarchy (var_model) on <var_model:Model> */
+var49 = var_model->attrs[COLOR_mmodule__Model___mmodule_nesting_hierarchy].val; /* _mmodule_nesting_hierarchy on <var_model:Model> */
+if (unlikely(var49 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_nesting_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 31);
+show_backtrace(1);
+}
+var47 = var49;
+RET_LABEL48:(void)0;
+}
+}
+{
+poset__POSet__add_edge(var47, self, var_m); /* Direct call poset#POSet#add_edge on <var47:POSet[MModule]>*/
+}
+CONTINUE_label: (void)0;
+{
+array__ArrayIterator__next(var37); /* Direct call array#ArrayIterator#next on <var37:ArrayIterator[nullable Object]>*/
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline mproject#MGroup#parent (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var52 = var_mgroup->attrs[COLOR_mproject__MGroup___parent].val; /* _parent on <var_mgroup:nullable MGroup(MGroup)> */
+var50 = var52;
+RET_LABEL51:(void)0;
+}
+}
+var53 = NULL;
+if (var50 == NULL) {
+var54 = 0; /* is null */
+} else {
+var54 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var50,var53) on <var50:nullable MGroup> */
+var_other = var53;
+{
+var58 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_kernel__Object___61d_61d]))(var50, var_other) /* == on <var50:nullable MGroup(MGroup)>*/;
+var57 = var58;
+}
+var59 = !var57;
+var55 = var59;
+goto RET_LABEL56;
+RET_LABEL56:(void)0;
+}
+var54 = var55;
+}
+if (var54){
+{
+{ /* Inline mproject#MGroup#parent (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var62 = var_mgroup->attrs[COLOR_mproject__MGroup___parent].val; /* _parent on <var_mgroup:nullable MGroup(MGroup)> */
+var60 = var62;
+RET_LABEL61:(void)0;
+}
+}
+if (var60 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 138);
+show_backtrace(1);
+} else {
+var63 = mmodule__MGroup__fuzzy_owner(var60);
+}
+var_direct_owner = var63;
+} else {
+}
+} else {
+}
+if (var_direct_owner == NULL) {
+var65 = 1; /* <self:MModule> cannot be null */
+} else {
+{ /* Inline kernel#Object#!= (var_direct_owner,self) on <var_direct_owner:nullable MModule> */
+var_other = self;
+{
+var69 = ((short int (*)(val*, val*))(var_direct_owner->class->vft[COLOR_kernel__Object___61d_61d]))(var_direct_owner, var_other) /* == on <var_direct_owner:nullable MModule(MModule)>*/;
+var68 = var69;
+}
+var70 = !var68;
+var66 = var70;
+goto RET_LABEL67;
+RET_LABEL67:(void)0;
+}
+var65 = var66;
+}
+var_ = var65;
+if (var65){
+var71 = NULL;
+if (var_direct_owner == NULL) {
+var72 = 0; /* is null */
+} else {
+var72 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_direct_owner,var71) on <var_direct_owner:nullable MModule> */
+var_other = var71;
+{
+var76 = ((short int (*)(val*, val*))(var_direct_owner->class->vft[COLOR_kernel__Object___61d_61d]))(var_direct_owner, var_other) /* == on <var_direct_owner:nullable MModule(MModule)>*/;
+var75 = var76;
+}
+var77 = !var75;
+var73 = var77;
+goto RET_LABEL74;
+RET_LABEL74:(void)0;
+}
+var72 = var73;
+}
+var64 = var72;
+} else {
+var64 = var_;
+}
+if (var64){
+{
+{ /* Inline mmodule#MModule#direct_owner= (self,var_direct_owner) on <self:MModule> */
+self->attrs[COLOR_mmodule__MModule___direct_owner].val = var_direct_owner; /* _direct_owner on <self:MModule> */
+RET_LABEL78:(void)0;
+}
+}
+{
+{ /* Inline mmodule#Model#mmodule_nesting_hierarchy (var_model) on <var_model:Model> */
+var81 = var_model->attrs[COLOR_mmodule__Model___mmodule_nesting_hierarchy].val; /* _mmodule_nesting_hierarchy on <var_model:Model> */
+if (unlikely(var81 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_nesting_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 31);
+show_backtrace(1);
+}
+var79 = var81;
+RET_LABEL80:(void)0;
+}
+}
+{
+poset__POSet__add_edge(var79, var_direct_owner, self); /* Direct call poset#POSet#add_edge on <var79:POSet[MModule]>*/
+}
+} else {
+}
+} else {
+}
+{
+{ /* Inline mmodule#Model#mmodule_importation_hierarchy (var_model) on <var_model:Model> */
+var84 = var_model->attrs[COLOR_mmodule__Model___mmodule_importation_hierarchy].val; /* _mmodule_importation_hierarchy on <var_model:Model> */
+if (unlikely(var84 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_importation_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 37);
+show_backtrace(1);
+}
+var82 = var84;
+RET_LABEL83:(void)0;
+}
+}
+{
+var85 = poset__POSet__add_node(var82, self);
+}
+{
+{ /* Inline mmodule#MModule#in_importation= (self,var85) on <self:MModule> */
+self->attrs[COLOR_mmodule__MModule___in_importation].val = var85; /* _in_importation on <self:MModule> */
+RET_LABEL86:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method mmodule#MModule#init for (self: Object, Model, nullable MGroup, String, Location) */
+void VIRTUAL_mmodule__MModule__init(val* self, val* p0, val* p1, val* p2, val* p3) {
+mmodule__MModule__init(self, p0, p1, p2, p3); /* Direct call mmodule#MModule#init on <self:Object(MModule)>*/
+RET_LABEL:;
+}
+/* method mmodule#MModule#set_imported_mmodules for (self: MModule, Array[MModule]) */
+void mmodule__MModule__set_imported_mmodules(val* self, val* p0) {
+val* var_imported_mmodules /* var imported_mmodules: Array[MModule] */;
+val* var /* : POSetElement[MModule] */;
+val* var2 /* : POSetElement[MModule] */;
+val* var3 /* : Collection[Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : ArrayIterator[nullable Object] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_m /* var m: MModule */;
+val* var8 /* : Model */;
+val* var10 /* : Model */;
+val* var11 /* : POSet[MModule] */;
+val* var13 /* : POSet[MModule] */;
+var_imported_mmodules = p0;
+{
+{ /* Inline mmodule#MModule#in_importation (self) on <self:MModule> */
+var2 = self->attrs[COLOR_mmodule__MModule___in_importation].val; /* _in_importation on <self:MModule> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+var3 = poset__POSetElement__direct_greaters(var);
+}
+{
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var3) /* is_empty on <var3:Collection[Object](Collection[MModule])>*/;
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert \'unique_invocation\' failed");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 153);
+show_backtrace(1);
+}
+{
+var5 = array__AbstractArrayRead__iterator(var_imported_mmodules);
+}
+for(;;) {
+{
+var6 = array__ArrayIterator__is_ok(var5);
+}
+if(!var6) break;
+{
+var7 = array__ArrayIterator__item(var5);
+}
+var_m = var7;
+{
+{ /* Inline mmodule#MModule#model (self) on <self:MModule> */
+var10 = self->attrs[COLOR_mmodule__MModule___model].val; /* _model on <self:MModule> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 74);
+show_backtrace(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+{ /* Inline mmodule#Model#mmodule_importation_hierarchy (var8) on <var8:Model> */
+var13 = var8->attrs[COLOR_mmodule__Model___mmodule_importation_hierarchy].val; /* _mmodule_importation_hierarchy on <var8:Model> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_importation_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 37);
+show_backtrace(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+poset__POSet__add_edge(var11, self, var_m); /* Direct call poset#POSet#add_edge on <var11:POSet[MModule]>*/
+}
+CONTINUE_label: (void)0;
+{
+array__ArrayIterator__next(var5); /* Direct call array#ArrayIterator#next on <var5:ArrayIterator[nullable Object]>*/
+}
+}
+BREAK_label: (void)0;
+RET_LABEL:;
+}
+/* method mmodule#MModule#set_imported_mmodules for (self: Object, Array[MModule]) */
+void VIRTUAL_mmodule__MModule__set_imported_mmodules(val* self, val* p0) {
+mmodule__MModule__set_imported_mmodules(self, p0); /* Direct call mmodule#MModule#set_imported_mmodules on <self:Object(MModule)>*/
+RET_LABEL:;
+}
+/* method mmodule#MModule#intrude_mmodules for (self: MModule): HashSet[MModule] */
+val* mmodule__MModule__intrude_mmodules(val* self) {
+val* var /* : HashSet[MModule] */;
+val* var1 /* : HashSet[MModule] */;
+var1 = self->attrs[COLOR_mmodule__MModule___intrude_mmodules].val; /* _intrude_mmodules on <self:MModule> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intrude_mmodules");
+PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 159);