+var34 = var35;
+}
+if (unlikely(!var34)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 121);
+show_backtrace(1);
+}
+{
+{ /* Inline mmodule#MGroup#default_mmodule= (var_mgroup,self) on <var_mgroup:nullable MGroup(MGroup)> */
+var_mgroup->attrs[COLOR_mmodule__MGroup___default_mmodule].val = self; /* _default_mmodule on <var_mgroup:nullable MGroup(MGroup)> */
+RET_LABEL41:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline mmodule#MGroup#default_mmodule (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var44 = var_mgroup->attrs[COLOR_mmodule__MGroup___default_mmodule].val; /* _default_mmodule on <var_mgroup:nullable MGroup(MGroup)> */
+var42 = var44;
+RET_LABEL43:(void)0;
+}
+}
+var_direct_owner = var42;
+if (var_direct_owner == NULL) {
+var45 = 0; /* <self:MModule> cannot be null */
+} else {
+{ /* Inline kernel#Object#== (var_direct_owner,self) on <var_direct_owner:nullable MModule> */
+var_other37 = self;
+{
+{ /* Inline kernel#Object#is_same_instance (var_direct_owner,var_other37) on <var_direct_owner:nullable MModule(MModule)> */
+var50 = var_direct_owner == var_other37;
+var48 = var50;
+goto RET_LABEL49;
+RET_LABEL49:(void)0;
+}
+}
+var46 = var48;
+goto RET_LABEL47;
+RET_LABEL47:(void)0;
+}
+var45 = var46;
+}
+if (var45){
+{
+{ /* Inline mmodule#MGroup#mmodules (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var53 = var_mgroup->attrs[COLOR_mmodule__MGroup___mmodules].val; /* _mmodules on <var_mgroup:nullable MGroup(MGroup)> */
+if (unlikely(var53 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodules");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 57);
+show_backtrace(1);
+}
+var51 = var53;
+RET_LABEL52:(void)0;
+}
+}
+var_ = var51;
+{
+var54 = array__AbstractArrayRead__iterator(var_);
+}
+var_55 = var54;
+for(;;) {
+{
+var56 = array__ArrayIterator__is_ok(var_55);
+}
+if (var56){
+{
+var57 = array__ArrayIterator__item(var_55);
+}
+var_m = var57;
+{
+{ /* Inline kernel#Object#== (var_m,self) on <var_m:MModule> */
+var_other37 = self;
+{
+{ /* Inline kernel#Object#is_same_instance (var_m,var_other37) on <var_m:MModule> */
+var63 = var_m == var_other37;
+var61 = var63;
+goto RET_LABEL62;
+RET_LABEL62:(void)0;
+}
+}
+var59 = var61;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
+}
+var58 = var59;
+}
+if (var58){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline mmodule#Model#mmodule_nesting_hierarchy (var_model) on <var_model:Model> */
+var66 = var_model->attrs[COLOR_mmodule__Model___mmodule_nesting_hierarchy].val; /* _mmodule_nesting_hierarchy on <var_model:Model> */
+if (unlikely(var66 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_nesting_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 30);
+show_backtrace(1);
+}
+var64 = var66;
+RET_LABEL65:(void)0;
+}
+}
+{
+poset__POSet__add_edge(var64, self, var_m); /* Direct call poset#POSet#add_edge on <var64:POSet[MModule]>*/
+}
+BREAK_label: (void)0;
+{
+array__ArrayIterator__next(var_55); /* Direct call array#ArrayIterator#next on <var_55:ArrayIterator[MModule]>*/
+}
+} else {
+goto BREAK_label67;
+}
+}
+BREAK_label67: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_55) on <var_55:ArrayIterator[MModule]> */
+RET_LABEL68:(void)0;
+}
+}
+{
+{ /* Inline mproject#MGroup#parent (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var71 = var_mgroup->attrs[COLOR_mproject__MGroup___parent].val; /* _parent on <var_mgroup:nullable MGroup(MGroup)> */
+var69 = var71;
+RET_LABEL70:(void)0;
+}
+}
+var72 = NULL;
+if (var69 == NULL) {
+var73 = 0; /* is null */
+} else {
+var73 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var69,var72) on <var69:nullable MGroup> */
+var_other = var72;
+{
+var77 = ((short int (*)(val*, val*))(var69->class->vft[COLOR_kernel__Object___61d_61d]))(var69, var_other) /* == on <var69:nullable MGroup(MGroup)>*/;
+var76 = var77;
+}
+var78 = !var76;
+var74 = var78;
+goto RET_LABEL75;
+RET_LABEL75:(void)0;
+}
+var73 = var74;
+}
+if (var73){
+{
+{ /* Inline mproject#MGroup#parent (var_mgroup) on <var_mgroup:nullable MGroup(MGroup)> */
+var81 = var_mgroup->attrs[COLOR_mproject__MGroup___parent].val; /* _parent on <var_mgroup:nullable MGroup(MGroup)> */
+var79 = var81;
+RET_LABEL80:(void)0;
+}
+}
+if (var79 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 133);
+show_backtrace(1);
+} else {
+{ /* Inline mmodule#MGroup#default_mmodule (var79) on <var79:nullable MGroup> */
+if (unlikely(var79 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 60);
+show_backtrace(1);
+}
+var84 = var79->attrs[COLOR_mmodule__MGroup___default_mmodule].val; /* _default_mmodule on <var79:nullable MGroup> */
+var82 = var84;
+RET_LABEL83:(void)0;
+}
+}
+var_direct_owner = var82;
+} else {
+}
+} else {
+}
+if (var_direct_owner == NULL) {
+var86 = 1; /* <self:MModule> cannot be null */
+} else {
+{ /* Inline kernel#Object#!= (var_direct_owner,self) on <var_direct_owner:nullable MModule> */
+var_other = self;
+{
+var90 = ((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)>*/;
+var89 = var90;
+}
+var91 = !var89;
+var87 = var91;
+goto RET_LABEL88;
+RET_LABEL88:(void)0;
+}
+var86 = var87;
+}
+var_92 = var86;
+if (var86){
+var93 = NULL;
+if (var_direct_owner == NULL) {
+var94 = 0; /* is null */
+} else {
+var94 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_direct_owner,var93) on <var_direct_owner:nullable MModule> */
+var_other = var93;
+{
+var98 = ((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)>*/;
+var97 = var98;
+}
+var99 = !var97;
+var95 = var99;
+goto RET_LABEL96;
+RET_LABEL96:(void)0;
+}
+var94 = var95;
+}
+var85 = var94;
+} else {
+var85 = var_92;
+}
+if (var85){
+{
+{ /* Inline mmodule#Model#mmodule_nesting_hierarchy (var_model) on <var_model:Model> */
+var102 = var_model->attrs[COLOR_mmodule__Model___mmodule_nesting_hierarchy].val; /* _mmodule_nesting_hierarchy on <var_model:Model> */
+if (unlikely(var102 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_nesting_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 30);
+show_backtrace(1);
+}
+var100 = var102;
+RET_LABEL101:(void)0;
+}
+}
+{
+poset__POSet__add_edge(var100, var_direct_owner, self); /* Direct call poset#POSet#add_edge on <var100:POSet[MModule]>*/
+}
+} else {
+}
+} else {
+}
+{
+{ /* Inline mmodule#Model#mmodule_importation_hierarchy (var_model) on <var_model:Model> */
+var105 = var_model->attrs[COLOR_mmodule__Model___mmodule_importation_hierarchy].val; /* _mmodule_importation_hierarchy on <var_model:Model> */
+if (unlikely(var105 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_importation_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 36);
+show_backtrace(1);
+}
+var103 = var105;
+RET_LABEL104:(void)0;
+}
+}
+{
+var106 = poset__POSet__add_node(var103, self);
+}
+{
+{ /* Inline mmodule#MModule#in_importation= (self,var106) on <self:MModule> */
+self->attrs[COLOR_mmodule__MModule___in_importation].val = var106; /* _in_importation on <self:MModule> */
+RET_LABEL107:(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* var_ /* var : Array[MModule] */;
+val* var5 /* : ArrayIterator[nullable Object] */;
+val* var_6 /* var : ArrayIterator[MModule] */;
+short int var7 /* : Bool */;
+val* var8 /* : nullable Object */;
+val* var_m /* var m: MModule */;
+val* var9 /* : Model */;
+val* var11 /* : Model */;
+val* var12 /* : POSet[MModule] */;
+val* var14 /* : 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", "model/mmodule.nit", 93);
+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", "model/mmodule.nit", 147);
+show_backtrace(1);
+}
+var_ = var_imported_mmodules;
+{
+var5 = array__AbstractArrayRead__iterator(var_);
+}
+var_6 = var5;
+for(;;) {
+{
+var7 = array__ArrayIterator__is_ok(var_6);
+}
+if (var7){
+{
+var8 = array__ArrayIterator__item(var_6);
+}
+var_m = var8;
+{
+{ /* Inline mmodule#MModule#model (self) on <self:MModule> */
+var11 = self->attrs[COLOR_mmodule__MModule___model].val; /* _model on <self:MModule> */
+if (unlikely(var11 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 72);
+show_backtrace(1);
+}
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+{
+{ /* Inline mmodule#Model#mmodule_importation_hierarchy (var9) on <var9:Model> */
+var14 = var9->attrs[COLOR_mmodule__Model___mmodule_importation_hierarchy].val; /* _mmodule_importation_hierarchy on <var9:Model> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule_importation_hierarchy");
+PRINT_ERROR(" (%s:%d)\n", "model/mmodule.nit", 36);
+show_backtrace(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+poset__POSet__add_edge(var12, self, var_m); /* Direct call poset#POSet#add_edge on <var12:POSet[MModule]>*/
+}
+{
+array__ArrayIterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[MModule]>*/
+}
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline abstract_collection#Iterator#finish (var_6) on <var_6:ArrayIterator[MModule]> */
+RET_LABEL15:(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", "model/mmodule.nit", 153);