+/* method mmodule#MModule#first_real_mmodule for (self: MModule): MModule */
+val* nit___nit__MModule___first_real_mmodule(val* self) {
+val* var /* : MModule */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+val* var4 /* : POSetElement[MModule] */;
+val* var6 /* : POSetElement[MModule] */;
+val* var7 /* : Collection[nullable Object] */;
+val* var8 /* : nullable Object */;
+var_mmodule = self;
+for(;;) {
+{
+{ /* Inline mmodule#MModule#is_fictive (var_mmodule) on <var_mmodule:MModule> */
+var3 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___is_fictive].s; /* _is_fictive on <var_mmodule:MModule> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+if (var1){
+{
+{ /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
+var6 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+var7 = poset___poset__POSetElement___direct_greaters(var4);
+}
+{
+var8 = ((val*(*)(val* self))((((long)var7&3)?class_info[((long)var7&3)]:var7->class)->vft[COLOR_standard__abstract_collection__Collection__first]))(var7); /* first on <var7:Collection[nullable Object](Collection[MModule])>*/
+}
+var_mmodule = var8;
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+var = var_mmodule;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}