use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / layout_builders.sep.1.c
diff --git a/c_src/layout_builders.sep.1.c b/c_src/layout_builders.sep.1.c
new file mode 100644 (file)
index 0000000..9c61926
--- /dev/null
@@ -0,0 +1,4979 @@
+#include "layout_builders.sep.0.h"
+/* method layout_builders#Layout#ids for (self: Layout[Object]): Map[Object, Int] */
+val* layout_builders__Layout__ids(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = self->attrs[COLOR_layout_builders__Layout___64dids].val; /* @ids on <self:Layout[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @ids", "src/layout_builders.nit", 34);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#Layout#ids for (self: Object): Map[Object, Int] */
+val* VIRTUAL_layout_builders__Layout__ids(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__Layout__ids(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#Layout#ids= for (self: Layout[Object], Map[Object, Int]) */
+void layout_builders__Layout__ids_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (ids) <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
+/* <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__Layout_FT0kernel__Int];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 34);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__Layout___64dids].val = p0; /* @ids on <self:Layout[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#Layout#ids= for (self: Object, Map[Object, Int]) */
+void VIRTUAL_layout_builders__Layout__ids_61d(val* self, val* p0) {
+layout_builders__Layout__ids_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#Layout#pos for (self: Layout[Object]): Map[Object, Int] */
+val* layout_builders__Layout__pos(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = self->attrs[COLOR_layout_builders__Layout___64dpos].val; /* @pos on <self:Layout[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @pos", "src/layout_builders.nit", 36);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#Layout#pos for (self: Object): Map[Object, Int] */
+val* VIRTUAL_layout_builders__Layout__pos(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__Layout__pos(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#Layout#pos= for (self: Layout[Object], Map[Object, Int]) */
+void layout_builders__Layout__pos_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (pos) <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
+/* <p0:Map[Object, Int]> isa Map[Layout#0, Int] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__Layout_FT0kernel__Int];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 36);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__Layout___64dpos].val = p0; /* @pos on <self:Layout[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#Layout#pos= for (self: Object, Map[Object, Int]) */
+void VIRTUAL_layout_builders__Layout__pos_61d(val* self, val* p0) {
+layout_builders__Layout__pos_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#Layout#init for (self: Layout[Object]) */
+void layout_builders__Layout__init(val* self) {
+RET_LABEL:;
+}
+/* method layout_builders#Layout#init for (self: Object) */
+void VIRTUAL_layout_builders__Layout__init(val* self) {
+layout_builders__Layout__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#PHLayout#masks for (self: PHLayout[Object, Object]): Map[Object, Int] */
+val* layout_builders__PHLayout__masks(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = self->attrs[COLOR_layout_builders__PHLayout___64dmasks].val; /* @masks on <self:PHLayout[Object, Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @masks", "src/layout_builders.nit", 44);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHLayout#masks for (self: Object): Map[Object, Int] */
+val* VIRTUAL_layout_builders__PHLayout__masks(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__PHLayout__masks(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHLayout#masks= for (self: PHLayout[Object, Object], Map[Object, Int]) */
+void layout_builders__PHLayout__masks_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (masks) <p0:Map[Object, Int]> isa Map[PHLayout#0, Int] */
+/* <p0:Map[Object, Int]> isa Map[PHLayout#0, Int] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PHLayout_FT0kernel__Int];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 44);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__PHLayout___64dmasks].val = p0; /* @masks on <self:PHLayout[Object, Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#PHLayout#masks= for (self: Object, Map[Object, Int]) */
+void VIRTUAL_layout_builders__PHLayout__masks_61d(val* self, val* p0) {
+layout_builders__PHLayout__masks_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#PHLayout#hashes for (self: PHLayout[Object, Object]): Map[Object, Map[Object, Int]] */
+val* layout_builders__PHLayout__hashes(val* self) {
+val* var /* : Map[Object, Map[Object, Int]] */;
+val* var1 /* : Map[Object, Map[Object, Int]] */;
+var1 = self->attrs[COLOR_layout_builders__PHLayout___64dhashes].val; /* @hashes on <self:PHLayout[Object, Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @hashes", "src/layout_builders.nit", 46);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHLayout#hashes for (self: Object): Map[Object, Map[Object, Int]] */
+val* VIRTUAL_layout_builders__PHLayout__hashes(val* self) {
+val* var /* : Map[Object, Map[Object, Int]] */;
+val* var1 /* : Map[Object, Map[Object, Int]] */;
+var1 = layout_builders__PHLayout__hashes(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHLayout#hashes= for (self: PHLayout[Object, Object], Map[Object, Map[Object, Int]]) */
+void layout_builders__PHLayout__hashes_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (hashes) <p0:Map[Object, Map[Object, Int]]> isa Map[PHLayout#0, Map[PHLayout#1, Int]] */
+/* <p0:Map[Object, Map[Object, Int]]> isa Map[PHLayout#0, Map[PHLayout#1, Int]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PHLayout_FT0abstract_collection__Maplayout_builders__PHLayout_FT1kernel__Int];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 46);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__PHLayout___64dhashes].val = p0; /* @hashes on <self:PHLayout[Object, Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#PHLayout#hashes= for (self: Object, Map[Object, Map[Object, Int]]) */
+void VIRTUAL_layout_builders__PHLayout__hashes_61d(val* self, val* p0) {
+layout_builders__PHLayout__hashes_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#PHLayout#init for (self: PHLayout[Object, Object]) */
+void layout_builders__PHLayout__init(val* self) {
+((void (*)(val*))(self->class->vft[COLOR_layout_builders__Layout__init]))(self) /* init on <self:PHLayout[Object, Object]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#PHLayout#init for (self: Object) */
+void VIRTUAL_layout_builders__PHLayout__init(val* self) {
+layout_builders__PHLayout__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#TypingLayoutBuilder#build_layout for (self: TypingLayoutBuilder[Object], Set[Object]): Layout[Object] */
+val* layout_builders__TypingLayoutBuilder__build_layout(val* self, val* p0) {
+val* var /* : Layout[Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingLayoutBuilder#0] */
+/* <p0:Set[Object]> isa Set[TypingLayoutBuilder#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingLayoutBuilder_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 54);
+exit(1);
+}
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 54);
+exit(1);
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingLayoutBuilder#build_layout for (self: Object, Set[Object]): Layout[Object] */
+val* VIRTUAL_layout_builders__TypingLayoutBuilder__build_layout(val* self, val* p0) {
+val* var /* : Layout[Object] */;
+val* var1 /* : Layout[Object] */;
+var1 = layout_builders__TypingLayoutBuilder__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingLayoutBuilder#poset for (self: TypingLayoutBuilder[Object]): nullable POSet[Object] */
+val* layout_builders__TypingLayoutBuilder__poset(val* self) {
+val* var /* : nullable POSet[Object] */;
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 57);
+exit(1);
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingLayoutBuilder#poset for (self: Object): nullable POSet[Object] */
+val* VIRTUAL_layout_builders__TypingLayoutBuilder__poset(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = layout_builders__TypingLayoutBuilder__poset(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PropertyLayoutBuilder#build_layout for (self: PropertyLayoutBuilder[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* layout_builders__PropertyLayoutBuilder__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
+/* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 64);
+exit(1);
+}
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 64);
+exit(1);
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PropertyLayoutBuilder#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* VIRTUAL_layout_builders__PropertyLayoutBuilder__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+val* var1 /* : Layout[PropertyLayoutElement] */;
+var1 = layout_builders__PropertyLayoutBuilder__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionLayoutBuilder#build_layout for (self: ResolutionLayoutBuilder, Map[MClassType, Set[MType]]): Layout[MType] */
+val* layout_builders__ResolutionLayoutBuilder__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 84);
+exit(1);
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionLayoutBuilder#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
+val* VIRTUAL_layout_builders__ResolutionLayoutBuilder__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+val* var1 /* : Layout[MType] */;
+var1 = layout_builders__ResolutionLayoutBuilder__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#POSetBuilder#mmodule for (self: POSetBuilder[Object]): MModule */
+val* layout_builders__POSetBuilder__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = self->attrs[COLOR_layout_builders__POSetBuilder___64dmmodule].val; /* @mmodule on <self:POSetBuilder[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 94);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#POSetBuilder#mmodule for (self: Object): MModule */
+val* VIRTUAL_layout_builders__POSetBuilder__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = layout_builders__POSetBuilder__mmodule(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#POSetBuilder#mmodule= for (self: POSetBuilder[Object], MModule) */
+void layout_builders__POSetBuilder__mmodule_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__POSetBuilder___64dmmodule].val = p0; /* @mmodule on <self:POSetBuilder[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#POSetBuilder#mmodule= for (self: Object, MModule) */
+void VIRTUAL_layout_builders__POSetBuilder__mmodule_61d(val* self, val* p0) {
+layout_builders__POSetBuilder__mmodule_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#POSetBuilder#init for (self: POSetBuilder[Object], MModule) */
+void layout_builders__POSetBuilder__init(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+var_mmodule = p0;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__POSetBuilder__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:POSetBuilder[Object]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#POSetBuilder#init for (self: Object, MModule) */
+void VIRTUAL_layout_builders__POSetBuilder__init(val* self, val* p0) {
+layout_builders__POSetBuilder__init(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#POSetBuilder#build_poset for (self: POSetBuilder[Object], Set[Object]): POSet[Object] */
+val* layout_builders__POSetBuilder__build_poset(val* self, val* p0) {
+val* var /* : POSet[Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[POSetBuilder#0] */
+/* <p0:Set[Object]> isa Set[POSetBuilder#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__POSetBuilder_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 96);
+exit(1);
+}
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 96);
+exit(1);
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#POSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
+val* VIRTUAL_layout_builders__POSetBuilder__build_poset(val* self, val* p0) {
+val* var /* : POSet[Object] */;
+val* var1 /* : POSet[Object] */;
+var1 = layout_builders__POSetBuilder__build_poset(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MTypePOSetBuilder#build_poset for (self: MTypePOSetBuilder, Set[MType]): POSet[MType] */
+val* layout_builders__MTypePOSetBuilder__build_poset(val* self, val* p0) {
+val* var /* : POSet[MType] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+val* var_elements /* var elements: Set[MType] */;
+val* var2 /* : POSet[MType] */;
+val* var_poset /* var poset: POSet[MType] */;
+val* var3 /* : Iterator[nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_e /* var e: MType */;
+val* var6 /* : POSetElement[Object] */;
+val* var7 /* : Iterator[nullable Object] */;
+short int var8 /* : Bool */;
+val* var9 /* : nullable Object */;
+val* var_o /* var o: MType */;
+short int var10 /* : Bool */;
+val* var11 /* : MModule */;
+val* var12 /* : null */;
+short int var13 /* : Bool */;
+/* Covariant cast for argument 0 (elements) <p0:Set[MType]> isa Set[POSetBuilder#0] */
+/* <p0:Set[MType]> isa Set[POSetBuilder#0] */
+var1 = 1; /* easy <p0:Set[MType]> isa Set[POSetBuilder#0]*/
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 104);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_poset__POSet(&type_poset__POSetmodel__MType);
+((void (*)(val*))(var2->class->vft[COLOR_poset__POSet__init]))(var2) /* init on <var2:POSet[MType]>*/;
+CHECK_NEW_poset__POSet(var2);
+var_poset = var2;
+var3 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_elements) /* iterator on <var_elements:Set[MType]>*/;
+for(;;) {
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
+var_e = var5;
+var6 = ((val* (*)(val*, val*))(var_poset->class->vft[COLOR_poset__POSet__add_node]))(var_poset, var_e) /* add_node on <var_poset:POSet[MType]>*/;
+var6;
+var7 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_elements) /* iterator on <var_elements:Set[MType]>*/;
+for(;;) {
+var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
+if(!var8) break;
+var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
+var_o = var9;
+var10 = ((short int (*)(val*, val*))(var_e->class->vft[COLOR_kernel__Object___61d_61d]))(var_e, var_o) /* == on <var_e:MType>*/;
+if (var10){
+goto CONTINUE_label;
+} else {
+}
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__POSetBuilder__mmodule]))(self) /* mmodule on <self:MTypePOSetBuilder>*/;
+var12 = NULL;
+var13 = ((short int (*)(val*, val*, val*, val*))(var_e->class->vft[COLOR_model__MType__is_subtype]))(var_e, var11, var12, var_o) /* is_subtype on <var_e:MType>*/;
+if (var13){
+((void (*)(val*, val*, val*))(var_poset->class->vft[COLOR_poset__POSet__add_edge]))(var_poset, var_e, var_o) /* add_edge on <var_poset:POSet[MType]>*/;
+} else {
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label14: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
+}
+BREAK_label14: (void)0;
+var = var_poset;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MTypePOSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
+val* VIRTUAL_layout_builders__MTypePOSetBuilder__build_poset(val* self, val* p0) {
+val* var /* : POSet[Object] */;
+val* var1 /* : POSet[MType] */;
+var1 = layout_builders__MTypePOSetBuilder__build_poset(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MClassPOSetBuilder#build_poset for (self: MClassPOSetBuilder, Set[MClass]): POSet[MClass] */
+val* layout_builders__MClassPOSetBuilder__build_poset(val* self, val* p0) {
+val* var /* : POSet[MClass] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+val* var_elements /* var elements: Set[MClass] */;
+val* var2 /* : MModule */;
+val* var3 /* : POSet[MClass] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[MClass]> isa Set[POSetBuilder#0] */
+/* <p0:Set[MClass]> isa Set[POSetBuilder#0] */
+var1 = 1; /* easy <p0:Set[MClass]> isa Set[POSetBuilder#0]*/
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 123);
+exit(1);
+}
+var_elements = p0;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__POSetBuilder__mmodule]))(self) /* mmodule on <self:MClassPOSetBuilder>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var2) /* flatten_mclass_hierarchy on <var2:MModule>*/;
+var = var3;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MClassPOSetBuilder#build_poset for (self: Object, Set[Object]): POSet[Object] */
+val* VIRTUAL_layout_builders__MClassPOSetBuilder__build_poset(val* self, val* p0) {
+val* var /* : POSet[Object] */;
+val* var1 /* : POSet[MClass] */;
+var1 = layout_builders__MClassPOSetBuilder__build_poset(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#mmodule for (self: TypingBMizer[Object]): MModule */
+val* layout_builders__TypingBMizer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = self->attrs[COLOR_layout_builders__TypingBMizer___64dmmodule].val; /* @mmodule on <self:TypingBMizer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 132);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#mmodule for (self: Object): MModule */
+val* VIRTUAL_layout_builders__TypingBMizer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = layout_builders__TypingBMizer__mmodule(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#mmodule= for (self: TypingBMizer[Object], MModule) */
+void layout_builders__TypingBMizer__mmodule_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__TypingBMizer___64dmmodule].val = p0; /* @mmodule on <self:TypingBMizer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#mmodule= for (self: Object, MModule) */
+void VIRTUAL_layout_builders__TypingBMizer__mmodule_61d(val* self, val* p0) {
+layout_builders__TypingBMizer__mmodule_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#poset_builder for (self: TypingBMizer[Object]): POSetBuilder[Object] */
+val* layout_builders__TypingBMizer__poset_builder(val* self) {
+val* var /* : POSetBuilder[Object] */;
+val* var1 /* : POSetBuilder[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingBMizer___64dposet_builder].val; /* @poset_builder on <self:TypingBMizer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset_builder", "src/layout_builders.nit", 133);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#poset_builder for (self: Object): POSetBuilder[Object] */
+val* VIRTUAL_layout_builders__TypingBMizer__poset_builder(val* self) {
+val* var /* : POSetBuilder[Object] */;
+val* var1 /* : POSetBuilder[Object] */;
+var1 = layout_builders__TypingBMizer__poset_builder(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#poset_builder= for (self: TypingBMizer[Object], POSetBuilder[Object]) */
+void layout_builders__TypingBMizer__poset_builder_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
+/* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__POSetBuilderlayout_builders__TypingBMizer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 133);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingBMizer___64dposet_builder].val = p0; /* @poset_builder on <self:TypingBMizer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#poset_builder= for (self: Object, POSetBuilder[Object]) */
+void VIRTUAL_layout_builders__TypingBMizer__poset_builder_61d(val* self, val* p0) {
+layout_builders__TypingBMizer__poset_builder_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#poset_cache for (self: TypingBMizer[Object]): nullable POSet[Object] */
+val* layout_builders__TypingBMizer__poset_cache(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingBMizer___64dposet_cache].val; /* @poset_cache on <self:TypingBMizer[Object]> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#poset_cache for (self: Object): nullable POSet[Object] */
+val* VIRTUAL_layout_builders__TypingBMizer__poset_cache(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = layout_builders__TypingBMizer__poset_cache(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#poset_cache= for (self: TypingBMizer[Object], nullable POSet[Object]) */
+void layout_builders__TypingBMizer__poset_cache_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingBMizer#0] */
+/* <p0:nullable POSet[Object]> isa nullable POSet[TypingBMizer#0] */
+type_struct = self->type->resolution_table->types[COLOR_poset__POSetlayout_builders__TypingBMizer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(p0 == NULL) {
+var = 1;
+} else {
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 134);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingBMizer___64dposet_cache].val = p0; /* @poset_cache on <self:TypingBMizer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#poset_cache= for (self: Object, nullable POSet[Object]) */
+void VIRTUAL_layout_builders__TypingBMizer__poset_cache_61d(val* self, val* p0) {
+layout_builders__TypingBMizer__poset_cache_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#init for (self: TypingBMizer[Object], MModule, POSetBuilder[Object]) */
+void layout_builders__TypingBMizer__init(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_poset_builder /* var poset_builder: POSetBuilder[Object] */;
+/* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
+/* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingBMizer#0] */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__POSetBuilderlayout_builders__TypingBMizer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p1->type->table_size) {
+var = 0;
+} else {
+var = p1->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 136);
+exit(1);
+}
+var_mmodule = p0;
+var_poset_builder = p1;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingBMizer__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:TypingBMizer[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingBMizer__poset_builder_61d]))(self, var_poset_builder) /* poset_builder= on <self:TypingBMizer[Object]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#init for (self: Object, MModule, POSetBuilder[Object]) */
+void VIRTUAL_layout_builders__TypingBMizer__init(val* self, val* p0, val* p1) {
+layout_builders__TypingBMizer__init(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#TypingBMizer#poset for (self: TypingBMizer[Object]): nullable POSet[Object] */
+val* layout_builders__TypingBMizer__poset(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingBMizer__poset_cache]))(self) /* poset_cache on <self:TypingBMizer[Object]>*/;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#poset for (self: Object): nullable POSet[Object] */
+val* VIRTUAL_layout_builders__TypingBMizer__poset(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = layout_builders__TypingBMizer__poset(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#build_layout for (self: TypingBMizer[Object], Set[Object]): Layout[Object] */
+val* layout_builders__TypingBMizer__build_layout(val* self, val* p0) {
+val* var /* : Layout[Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : Layout[Object] */;
+val* var_result /* var result: Layout[Object] */;
+val* var3 /* : HashMap[Object, Int] */;
+val* var_ids /* var ids: HashMap[Object, Int] */;
+val* var4 /* : POSetBuilder[Object] */;
+val* var5 /* : POSet[Object] */;
+val* var6 /* : nullable POSet[Object] */;
+val* var7 /* : Array[nullable Object] */;
+val* var_lin /* var lin: Array[Object] */;
+val* var8 /* : nullable POSet[Object] */;
+val* var9 /* : Iterator[nullable Object] */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable Object */;
+val* var_element /* var element: Object */;
+long var12 /* : Int */;
+val* var13 /* : nullable Object */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingBMizer#0] */
+/* <p0:Set[Object]> isa Set[TypingBMizer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingBMizer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 143);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_layout_builders__Layout(self->type->resolution_table->types[COLOR_layout_builders__Layoutlayout_builders__TypingBMizer_FT0]);
+((void (*)(val*))(var2->class->vft[COLOR_layout_builders__Layout__init]))(var2) /* init on <var2:Layout[Object]>*/;
+CHECK_NEW_layout_builders__Layout(var2);
+var_result = var2;
+var3 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__TypingBMizer_FT0kernel__Int]);
+((void (*)(val*))(var3->class->vft[COLOR_hash_collection__HashMap__init]))(var3) /* init on <var3:HashMap[Object, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var3);
+var_ids = var3;
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingBMizer__poset_builder]))(self) /* poset_builder on <self:TypingBMizer[Object]>*/;
+var5 = ((val* (*)(val*, val*))(var4->class->vft[COLOR_layout_builders__POSetBuilder__build_poset]))(var4, var_elements) /* build_poset on <var4:POSetBuilder[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingBMizer__poset_cache_61d]))(self, var5) /* poset_cache= on <self:TypingBMizer[Object]>*/;
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingBMizer[Object]>*/;
+if (var6 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 148);
+exit(1);
+} else {
+var7 = ((val* (*)(val*))(var6->class->vft[COLOR_array__Collection__to_a]))(var6) /* to_a on <var6:nullable POSet[Object]>*/;
+}
+var_lin = var7;
+var8 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingBMizer[Object]>*/;
+if (var8 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 149);
+exit(1);
+} else {
+((void (*)(val*, val*))(var8->class->vft[COLOR_sorter__AbstractSorter__sort]))(var8, var_lin) /* sort on <var8:nullable POSet[Object]>*/;
+}
+var9 = ((val* (*)(val*))(var_lin->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lin) /* iterator on <var_lin:Array[Object]>*/;
+for(;;) {
+var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
+if(!var10) break;
+var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
+var_element = var11;
+var12 = ((long (*)(val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__length]))(var_ids) /* length on <var_ids:HashMap[Object, Int]>*/;
+var13 = BOX_kernel__Int(var12); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_element, var13) /* []= on <var_ids:HashMap[Object, Int]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids_61d]))(var_result, var_ids) /* ids= on <var_result:Layout[Object]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var_ids) /* pos= on <var_result:Layout[Object]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingBMizer#build_layout for (self: Object, Set[Object]): Layout[Object] */
+val* VIRTUAL_layout_builders__TypingBMizer__build_layout(val* self, val* p0) {
+val* var /* : Layout[Object] */;
+val* var1 /* : Layout[Object] */;
+var1 = layout_builders__TypingBMizer__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MTypeBMizer#init for (self: MTypeBMizer, MModule) */
+void layout_builders__MTypeBMizer__init(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MTypePOSetBuilder */;
+var_mmodule = p0;
+var = NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder);
+((void (*)(val*, val*))(var->class->vft[COLOR_layout_builders__POSetBuilder__init]))(var, var_mmodule) /* init on <var:MTypePOSetBuilder>*/;
+CHECK_NEW_layout_builders__MTypePOSetBuilder(var);
+((void (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__TypingBMizer__init]))(self, var_mmodule, var) /* init on <self:MTypeBMizer>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MTypeBMizer#init for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MTypeBMizer__init(val* self, val* p0) {
+layout_builders__MTypeBMizer__init(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MClassBMizer#init for (self: MClassBMizer, MModule) */
+void layout_builders__MClassBMizer__init(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MClassPOSetBuilder */;
+var_mmodule = p0;
+var = NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder);
+((void (*)(val*, val*))(var->class->vft[COLOR_layout_builders__POSetBuilder__init]))(var, var_mmodule) /* init on <var:MClassPOSetBuilder>*/;
+CHECK_NEW_layout_builders__MClassPOSetBuilder(var);
+((void (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__TypingBMizer__init]))(self, var_mmodule, var) /* init on <self:MClassBMizer>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MClassBMizer#init for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MClassBMizer__init(val* self, val* p0) {
+layout_builders__MClassBMizer__init(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionBMizer#init for (self: ResolutionBMizer) */
+void layout_builders__ResolutionBMizer__init(val* self) {
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionBMizer#init for (self: Object) */
+void VIRTUAL_layout_builders__ResolutionBMizer__init(val* self) {
+layout_builders__ResolutionBMizer__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionBMizer#build_layout for (self: ResolutionBMizer, Map[MClassType, Set[MType]]): Layout[MType] */
+val* layout_builders__ResolutionBMizer__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
+val* var1 /* : Layout[MType] */;
+val* var_result /* var result: Layout[MType] */;
+val* var2 /* : HashMap[MType, Int] */;
+val* var_ids /* var ids: HashMap[MType, Int] */;
+long var3 /* : Int */;
+long var_color /* var color: Int */;
+val* var4 /* : MapIterator[Object, nullable Object] */;
+short int var5 /* : Bool */;
+val* var6 /* : Object */;
+val* var_mclasstype /* var mclasstype: MClassType */;
+val* var7 /* : nullable Object */;
+val* var_mclasstypes /* var mclasstypes: Set[MType] */;
+val* var8 /* : Iterator[nullable Object] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_element /* var element: MType */;
+short int var11 /* : Bool */;
+val* var12 /* : nullable Object */;
+long var13 /* : Int */;
+long var14 /* : Int */;
+long var16 /* : Int */;
+var_elements = p0;
+var1 = NEW_layout_builders__Layout(&type_layout_builders__Layoutmodel__MType);
+((void (*)(val*))(var1->class->vft[COLOR_layout_builders__Layout__init]))(var1) /* init on <var1:Layout[MType]>*/;
+CHECK_NEW_layout_builders__Layout(var1);
+var_result = var1;
+var2 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int);
+((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[MType, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var2);
+var_ids = var2;
+var3 = 0;
+var_color = var3;
+var4 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
+for(;;) {
+var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var4) /* is_ok on <var4:MapIterator[Object, nullable Object]>*/;
+if(!var5) break;
+var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__key]))(var4) /* key on <var4:MapIterator[Object, nullable Object]>*/;
+var_mclasstype = var6;
+var7 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__item]))(var4) /* item on <var4:MapIterator[Object, nullable Object]>*/;
+var_mclasstypes = var7;
+var8 = ((val* (*)(val*))(var_mclasstypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasstypes) /* iterator on <var_mclasstypes:Set[MType]>*/;
+for(;;) {
+var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
+if(!var9) break;
+var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
+var_element = var10;
+var11 = ((short int (*)(val*, val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_ids, var_element) /* has_key on <var_ids:HashMap[MType, Int]>*/;
+if (var11){
+goto CONTINUE_label;
+} else {
+}
+var12 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_element, var12) /* []= on <var_ids:HashMap[MType, Int]>*/;
+var13 = 1;
+{ /* Inline kernel#Int#+ (var_color,var13) */
+var16 = var_color + var13;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+var_color = var14;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label17: (void)0;
+((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__next]))(var4) /* next on <var4:MapIterator[Object, nullable Object]>*/;
+}
+BREAK_label17: (void)0;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids_61d]))(var_result, var_ids) /* ids= on <var_result:Layout[MType]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var_ids) /* pos= on <var_result:Layout[MType]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionBMizer#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
+val* VIRTUAL_layout_builders__ResolutionBMizer__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+val* var1 /* : Layout[MType] */;
+var1 = layout_builders__ResolutionBMizer__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyBMizer#mmodule for (self: MPropertyBMizer[PropertyLayoutElement]): MModule */
+val* layout_builders__MPropertyBMizer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = self->attrs[COLOR_layout_builders__MPropertyBMizer___64dmmodule].val; /* @mmodule on <self:MPropertyBMizer[PropertyLayoutElement]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 198);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyBMizer#mmodule for (self: Object): MModule */
+val* VIRTUAL_layout_builders__MPropertyBMizer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = layout_builders__MPropertyBMizer__mmodule(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyBMizer#mmodule= for (self: MPropertyBMizer[PropertyLayoutElement], MModule) */
+void layout_builders__MPropertyBMizer__mmodule_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__MPropertyBMizer___64dmmodule].val = p0; /* @mmodule on <self:MPropertyBMizer[PropertyLayoutElement]> */
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyBMizer#mmodule= for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MPropertyBMizer__mmodule_61d(val* self, val* p0) {
+layout_builders__MPropertyBMizer__mmodule_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyBMizer#init for (self: MPropertyBMizer[PropertyLayoutElement], MModule) */
+void layout_builders__MPropertyBMizer__init(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+var_mmodule = p0;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyBMizer__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:MPropertyBMizer[PropertyLayoutElement]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyBMizer#init for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MPropertyBMizer__init(val* self, val* p0) {
+layout_builders__MPropertyBMizer__init(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyBMizer#build_layout for (self: MPropertyBMizer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* layout_builders__MPropertyBMizer__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
+val* var2 /* : Layout[PropertyLayoutElement] */;
+val* var_result /* var result: Layout[PropertyLayoutElement] */;
+val* var3 /* : HashMap[PropertyLayoutElement, Int] */;
+val* var_ids /* var ids: HashMap[PropertyLayoutElement, Int] */;
+val* var4 /* : Array[MClass] */;
+val* var_lin /* var lin: Array[MClass] */;
+val* var5 /* : Collection[Object] */;
+val* var6 /* : MModule */;
+val* var7 /* : Iterator[nullable Object] */;
+short int var8 /* : Bool */;
+val* var9 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var10 /* : nullable Object */;
+val* var11 /* : Iterator[nullable Object] */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable Object */;
+val* var_mproperty /* var mproperty: PropertyLayoutElement */;
+short int var14 /* : Bool */;
+long var15 /* : Int */;
+val* var16 /* : nullable Object */;
+/* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
+/* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 202);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_layout_builders__Layout(self->type->resolution_table->types[COLOR_layout_builders__Layoutlayout_builders__MPropertyBMizer_FT0]);
+((void (*)(val*))(var2->class->vft[COLOR_layout_builders__Layout__init]))(var2) /* init on <var2:Layout[PropertyLayoutElement]>*/;
+CHECK_NEW_layout_builders__Layout(var2);
+var_result = var2;
+var3 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__MPropertyBMizer_FT0kernel__Int]);
+((void (*)(val*))(var3->class->vft[COLOR_hash_collection__HashMap__init]))(var3) /* init on <var3:HashMap[PropertyLayoutElement, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var3);
+var_ids = var3;
+var4 = NEW_array__Array(&type_array__Arraymodel__MClass);
+((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[MClass]>*/;
+CHECK_NEW_array__Array(var4);
+var_lin = var4;
+var5 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__keys]))(var_elements) /* keys on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
+((void (*)(val*, val*))(var_lin->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_lin, var5) /* add_all on <var_lin:Array[MClass]>*/;
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyBMizer__mmodule]))(self) /* mmodule on <self:MPropertyBMizer[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(var6->class->vft[COLOR_model__MModule__linearize_mclasses]))(var6, var_lin) /* linearize_mclasses on <var6:MModule>*/;
+var7 = ((val* (*)(val*))(var_lin->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lin) /* iterator on <var_lin:Array[MClass]>*/;
+for(;;) {
+var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
+if(!var8) break;
+var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
+var_mclass = var9;
+var10 = ((val* (*)(val*, val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_elements, var_mclass) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
+var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:nullable Object(Set[PropertyLayoutElement])>*/;
+for(;;) {
+var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var11) /* is_ok on <var11:Iterator[nullable Object]>*/;
+if(!var12) break;
+var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__item]))(var11) /* item on <var11:Iterator[nullable Object]>*/;
+var_mproperty = var13;
+var14 = ((short int (*)(val*, val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_ids, var_mproperty) /* has_key on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
+if (var14){
+goto CONTINUE_label;
+} else {
+}
+var15 = ((long (*)(val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__length]))(var_ids) /* length on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
+var16 = BOX_kernel__Int(var15); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_mproperty, var16) /* []= on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__Iterator__next]))(var11) /* next on <var11:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label17: (void)0;
+((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
+}
+BREAK_label17: (void)0;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var_ids) /* pos= on <var_result:Layout[PropertyLayoutElement]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyBMizer#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* VIRTUAL_layout_builders__MPropertyBMizer__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+val* var1 /* : Layout[PropertyLayoutElement] */;
+var1 = layout_builders__MPropertyBMizer__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#core for (self: TypingColorer[Object]): Set[Object] */
+val* layout_builders__TypingColorer__core(val* self) {
+val* var /* : Set[Object] */;
+val* var1 /* : Set[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dcore].val; /* @core on <self:TypingColorer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @core", "src/layout_builders.nit", 225);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#core for (self: Object): Set[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__core(val* self) {
+val* var /* : Set[Object] */;
+val* var1 /* : Set[Object] */;
+var1 = layout_builders__TypingColorer__core(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#core= for (self: TypingColorer[Object], Set[Object]) */
+void layout_builders__TypingColorer__core_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (core) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 225);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dcore].val = p0; /* @core on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#core= for (self: Object, Set[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__core_61d(val* self, val* p0) {
+layout_builders__TypingColorer__core_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#crown for (self: TypingColorer[Object]): Set[Object] */
+val* layout_builders__TypingColorer__crown(val* self) {
+val* var /* : Set[Object] */;
+val* var1 /* : Set[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dcrown].val; /* @crown on <self:TypingColorer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @crown", "src/layout_builders.nit", 226);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#crown for (self: Object): Set[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__crown(val* self) {
+val* var /* : Set[Object] */;
+val* var1 /* : Set[Object] */;
+var1 = layout_builders__TypingColorer__crown(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#crown= for (self: TypingColorer[Object], Set[Object]) */
+void layout_builders__TypingColorer__crown_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (crown) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 226);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dcrown].val = p0; /* @crown on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#crown= for (self: Object, Set[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__crown_61d(val* self, val* p0) {
+layout_builders__TypingColorer__crown_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#border for (self: TypingColorer[Object]): Set[Object] */
+val* layout_builders__TypingColorer__border(val* self) {
+val* var /* : Set[Object] */;
+val* var1 /* : Set[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dborder].val; /* @border on <self:TypingColorer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @border", "src/layout_builders.nit", 227);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#border for (self: Object): Set[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__border(val* self) {
+val* var /* : Set[Object] */;
+val* var1 /* : Set[Object] */;
+var1 = layout_builders__TypingColorer__border(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#border= for (self: TypingColorer[Object], Set[Object]) */
+void layout_builders__TypingColorer__border_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (border) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 227);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dborder].val = p0; /* @border on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#border= for (self: Object, Set[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__border_61d(val* self, val* p0) {
+layout_builders__TypingColorer__border_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#coloration_result for (self: TypingColorer[Object]): Map[Object, Int] */
+val* layout_builders__TypingColorer__coloration_result(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dcoloration_result].val; /* @coloration_result on <self:TypingColorer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @coloration_result", "src/layout_builders.nit", 228);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#coloration_result for (self: Object): Map[Object, Int] */
+val* VIRTUAL_layout_builders__TypingColorer__coloration_result(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__TypingColorer__coloration_result(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#coloration_result= for (self: TypingColorer[Object], Map[Object, Int]) */
+void layout_builders__TypingColorer__coloration_result_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (coloration_result) <p0:Map[Object, Int]> isa Map[TypingColorer#0, Int] */
+/* <p0:Map[Object, Int]> isa Map[TypingColorer#0, Int] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__TypingColorer_FT0kernel__Int];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 228);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dcoloration_result].val = p0; /* @coloration_result on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#coloration_result= for (self: Object, Map[Object, Int]) */
+void VIRTUAL_layout_builders__TypingColorer__coloration_result_61d(val* self, val* p0) {
+layout_builders__TypingColorer__coloration_result_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#mmodule for (self: TypingColorer[Object]): MModule */
+val* layout_builders__TypingColorer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dmmodule].val; /* @mmodule on <self:TypingColorer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 230);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#mmodule for (self: Object): MModule */
+val* VIRTUAL_layout_builders__TypingColorer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = layout_builders__TypingColorer__mmodule(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#mmodule= for (self: TypingColorer[Object], MModule) */
+void layout_builders__TypingColorer__mmodule_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__TypingColorer___64dmmodule].val = p0; /* @mmodule on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#mmodule= for (self: Object, MModule) */
+void VIRTUAL_layout_builders__TypingColorer__mmodule_61d(val* self, val* p0) {
+layout_builders__TypingColorer__mmodule_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#poset_builder for (self: TypingColorer[Object]): POSetBuilder[Object] */
+val* layout_builders__TypingColorer__poset_builder(val* self) {
+val* var /* : POSetBuilder[Object] */;
+val* var1 /* : POSetBuilder[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dposet_builder].val; /* @poset_builder on <self:TypingColorer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset_builder", "src/layout_builders.nit", 231);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#poset_builder for (self: Object): POSetBuilder[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__poset_builder(val* self) {
+val* var /* : POSetBuilder[Object] */;
+val* var1 /* : POSetBuilder[Object] */;
+var1 = layout_builders__TypingColorer__poset_builder(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#poset_builder= for (self: TypingColorer[Object], POSetBuilder[Object]) */
+void layout_builders__TypingColorer__poset_builder_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
+/* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__POSetBuilderlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 231);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dposet_builder].val = p0; /* @poset_builder on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#poset_builder= for (self: Object, POSetBuilder[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__poset_builder_61d(val* self, val* p0) {
+layout_builders__TypingColorer__poset_builder_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#poset_cache for (self: TypingColorer[Object]): nullable POSet[Object] */
+val* layout_builders__TypingColorer__poset_cache(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dposet_cache].val; /* @poset_cache on <self:TypingColorer[Object]> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#poset_cache for (self: Object): nullable POSet[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__poset_cache(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = layout_builders__TypingColorer__poset_cache(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#poset_cache= for (self: TypingColorer[Object], nullable POSet[Object]) */
+void layout_builders__TypingColorer__poset_cache_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingColorer#0] */
+/* <p0:nullable POSet[Object]> isa nullable POSet[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_poset__POSetlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(p0 == NULL) {
+var = 1;
+} else {
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 232);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dposet_cache].val = p0; /* @poset_cache on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#poset_cache= for (self: Object, nullable POSet[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__poset_cache_61d(val* self, val* p0) {
+layout_builders__TypingColorer__poset_cache_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#init for (self: TypingColorer[Object], MModule, POSetBuilder[Object]) */
+void layout_builders__TypingColorer__init(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_poset_builder /* var poset_builder: POSetBuilder[Object] */;
+/* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
+/* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__POSetBuilderlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p1->type->table_size) {
+var = 0;
+} else {
+var = p1->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 234);
+exit(1);
+}
+var_mmodule = p0;
+var_poset_builder = p1;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__poset_builder_61d]))(self, var_poset_builder) /* poset_builder= on <self:TypingColorer[Object]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#init for (self: Object, MModule, POSetBuilder[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__init(val* self, val* p0, val* p1) {
+layout_builders__TypingColorer__init(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#poset for (self: TypingColorer[Object]): nullable POSet[Object] */
+val* layout_builders__TypingColorer__poset(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__poset_cache]))(self) /* poset_cache on <self:TypingColorer[Object]>*/;
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#poset for (self: Object): nullable POSet[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__poset(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = layout_builders__TypingColorer__poset(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#build_layout for (self: TypingColorer[Object], Set[Object]): Layout[Object] */
+val* layout_builders__TypingColorer__build_layout(val* self, val* p0) {
+val* var /* : Layout[Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : POSetBuilder[Object] */;
+val* var3 /* : POSet[Object] */;
+val* var4 /* : Layout[Object] */;
+val* var_result /* var result: Layout[Object] */;
+val* var5 /* : Map[Object, Int] */;
+val* var6 /* : Map[Object, Int] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 241);
+exit(1);
+}
+var_elements = p0;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__poset_builder]))(self) /* poset_builder on <self:TypingColorer[Object]>*/;
+var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_layout_builders__POSetBuilder__build_poset]))(var2, var_elements) /* build_poset on <var2:POSetBuilder[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__poset_cache_61d]))(self, var3) /* poset_cache= on <self:TypingColorer[Object]>*/;
+var4 = NEW_layout_builders__Layout(self->type->resolution_table->types[COLOR_layout_builders__Layoutlayout_builders__TypingColorer_FT0]);
+((void (*)(val*))(var4->class->vft[COLOR_layout_builders__Layout__init]))(var4) /* init on <var4:Layout[Object]>*/;
+CHECK_NEW_layout_builders__Layout(var4);
+var_result = var4;
+var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__compute_ids]))(self, var_elements) /* compute_ids on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids_61d]))(var_result, var5) /* ids= on <var_result:Layout[Object]>*/;
+var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__colorize]))(self, var_elements) /* colorize on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var6) /* pos= on <var_result:Layout[Object]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#build_layout for (self: Object, Set[Object]): Layout[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__build_layout(val* self, val* p0) {
+val* var /* : Layout[Object] */;
+val* var1 /* : Layout[Object] */;
+var1 = layout_builders__TypingColorer__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#compute_ids for (self: TypingColorer[Object], Set[Object]): Map[Object, Int] */
+val* layout_builders__TypingColorer__compute_ids(val* self, val* p0) {
+val* var /* : Map[Object, Int] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : HashMap[Object, Int] */;
+val* var_ids /* var ids: HashMap[Object, Int] */;
+val* var3 /* : Array[Object] */;
+val* var4 /* : Iterator[nullable Object] */;
+short int var5 /* : Bool */;
+val* var6 /* : nullable Object */;
+val* var_element /* var element: Object */;
+long var7 /* : Int */;
+val* var8 /* : nullable Object */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 250);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0kernel__Int]);
+((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[Object, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var2);
+var_ids = var2;
+var3 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__reverse_linearize]))(self, var_elements) /* reverse_linearize on <self:TypingColorer[Object]>*/;
+var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on <var3:Array[Object]>*/;
+for(;;) {
+var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
+if(!var5) break;
+var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
+var_element = var6;
+var7 = ((long (*)(val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__length]))(var_ids) /* length on <var_ids:HashMap[Object, Int]>*/;
+var8 = BOX_kernel__Int(var7); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_element, var8) /* []= on <var_ids:HashMap[Object, Int]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var = var_ids;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#compute_ids for (self: Object, Set[Object]): Map[Object, Int] */
+val* VIRTUAL_layout_builders__TypingColorer__compute_ids(val* self, val* p0) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__TypingColorer__compute_ids(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#colorize for (self: TypingColorer[Object], Set[Object]): Map[Object, Int] */
+val* layout_builders__TypingColorer__colorize(val* self, val* p0) {
+val* var /* : Map[Object, Int] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : Set[Object] */;
+val* var3 /* : Set[Object] */;
+val* var4 /* : Set[Object] */;
+val* var5 /* : Map[Object, Int] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 258);
+exit(1);
+}
+var_elements = p0;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__tag_elements]))(self, var_elements) /* tag_elements on <self:TypingColorer[Object]>*/;
+((void (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__build_conflicts_graph]))(self) /* build_conflicts_graph on <self:TypingColorer[Object]>*/;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__core]))(self) /* core on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__colorize_elements]))(self, var2) /* colorize_elements on <self:TypingColorer[Object]>*/;
+var3 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__border]))(self) /* border on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__colorize_elements]))(self, var3) /* colorize_elements on <self:TypingColorer[Object]>*/;
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__crown]))(self) /* crown on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__colorize_elements]))(self, var4) /* colorize_elements on <self:TypingColorer[Object]>*/;
+var5 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__coloration_result]))(self) /* coloration_result on <self:TypingColorer[Object]>*/;
+var = var5;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#colorize for (self: Object, Set[Object]): Map[Object, Int] */
+val* VIRTUAL_layout_builders__TypingColorer__colorize(val* self, val* p0) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__TypingColorer__colorize(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#colorize_elements for (self: TypingColorer[Object], Set[Object]) */
+void layout_builders__TypingColorer__colorize_elements(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+long var1 /* : Int */;
+long var_min_color /* var min_color: Int */;
+val* var2 /* : Array[Object] */;
+val* var_lin /* var lin: Array[Object] */;
+val* var3 /* : Iterator[nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_element /* var element: Object */;
+long var_color /* var color: Int */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+long var11 /* : Int */;
+val* var12 /* : Map[Object, Int] */;
+val* var13 /* : nullable Object */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 267);
+exit(1);
+}
+var_elements = p0;
+var1 = 0;
+var_min_color = var1;
+var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__reverse_linearize]))(self, var_elements) /* reverse_linearize on <self:TypingColorer[Object]>*/;
+var_lin = var2;
+var3 = ((val* (*)(val*))(var_lin->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lin) /* iterator on <var_lin:Array[Object]>*/;
+for(;;) {
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
+var_element = var5;
+var_color = var_min_color;
+for(;;) {
+var6 = ((short int (*)(val*, val*, val*, long))(self->class->vft[COLOR_layout_builders__TypingColorer__is_color_free]))(self, var_element, var_elements, var_color) /* is_color_free on <self:TypingColorer[Object]>*/;
+var7 = !var6;
+if (!var7) break;
+var8 = 1;
+{ /* Inline kernel#Int#+ (var_color,var8) */
+var11 = var_color + var8;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+var_color = var9;
+CONTINUE_label: (void)0;
+}
+BREAK_label: (void)0;
+var12 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__coloration_result]))(self) /* coloration_result on <self:TypingColorer[Object]>*/;
+var13 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var12->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var12, var_element, var13) /* []= on <var12:Map[Object, Int]>*/;
+var_color = var_min_color;
+CONTINUE_label14: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
+}
+BREAK_label14: (void)0;
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#colorize_elements for (self: Object, Set[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__colorize_elements(val* self, val* p0) {
+layout_builders__TypingColorer__colorize_elements(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#is_color_free for (self: TypingColorer[Object], Object, Set[Object], Int): Bool */
+short int layout_builders__TypingColorer__is_color_free(val* self, val* p0, val* p1, long p2) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+short int var2 /* : Bool */;
+int cltype3;
+int idtype4;
+const struct type* type_struct5;
+val* var_element /* var element: Object */;
+val* var_elements /* var elements: Set[Object] */;
+long var_color /* var color: Int */;
+val* var6 /* : nullable HashMap[Object, Set[Object]] */;
+short int var7 /* : Bool */;
+val* var8 /* : nullable HashMap[Object, Set[Object]] */;
+val* var9 /* : nullable Object */;
+val* var10 /* : Iterator[nullable Object] */;
+short int var11 /* : Bool */;
+val* var12 /* : nullable Object */;
+val* var_st /* var st: Object */;
+short int var13 /* : Bool */;
+val* var14 /* : Map[Object, Int] */;
+short int var15 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var16 /* : Map[Object, Int] */;
+val* var17 /* : nullable Object */;
+short int var18 /* : Bool */;
+short int var20 /* : Bool */;
+long var21 /* : Int */;
+short int var22 /* : Bool */;
+val* var23 /* : nullable POSet[Object] */;
+val* var24 /* : POSetElement[Object] */;
+val* var25 /* : Collection[Object] */;
+val* var26 /* : Iterator[nullable Object] */;
+short int var27 /* : Bool */;
+val* var28 /* : nullable Object */;
+val* var_st29 /* var st: Object */;
+short int var30 /* : Bool */;
+short int var32 /* : Bool */;
+val* var33 /* : Map[Object, Int] */;
+short int var34 /* : Bool */;
+short int var_35 /* var : Bool */;
+val* var36 /* : Map[Object, Int] */;
+val* var37 /* : nullable Object */;
+short int var38 /* : Bool */;
+short int var40 /* : Bool */;
+long var41 /* : Int */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+/* Covariant cast for argument 0 (element) <p0:Object> isa TypingColorer#0 */
+/* <p0:Object> isa TypingColorer#0 */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 282);
+exit(1);
+}
+/* Covariant cast for argument 1 (elements) <p1:Set[Object]> isa Set[TypingColorer#0] */
+/* <p1:Set[Object]> isa Set[TypingColorer#0] */
+type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype3 = type_struct5->color;
+idtype4 = type_struct5->id;
+if(cltype3 >= p1->type->table_size) {
+var2 = 0;
+} else {
+var2 = p1->type->type_table[cltype3] == idtype4;
+}
+if (!var2) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 282);
+exit(1);
+}
+var_element = p0;
+var_elements = p1;
+var_color = p2;
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+if (var6 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 284);
+exit(1);
+} else {
+var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var6, var_element) /* has_key on <var6:nullable HashMap[Object, Set[Object]]>*/;
+}
+if (var7){
+var8 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+if (var8 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 285);
+exit(1);
+} else {
+var9 = ((val* (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var8, var_element) /* [] on <var8:nullable HashMap[Object, Set[Object]]>*/;
+}
+var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:nullable Object(Set[Object])>*/;
+for(;;) {
+var11 = ((short int (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var10) /* is_ok on <var10:Iterator[nullable Object]>*/;
+if(!var11) break;
+var12 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__item]))(var10) /* item on <var10:Iterator[nullable Object]>*/;
+var_st = var12;
+var14 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__coloration_result]))(self) /* coloration_result on <self:TypingColorer[Object]>*/;
+var15 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var14, var_st) /* has_key on <var14:Map[Object, Int]>*/;
+var_ = var15;
+if (var15){
+var16 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__coloration_result]))(self) /* coloration_result on <self:TypingColorer[Object]>*/;
+var17 = ((val* (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var16, var_st) /* [] on <var16:Map[Object, Int]>*/;
+{ /* Inline kernel#Int#== (var17,var_color) */
+var20 = (var17 != NULL) && (var17->class == &class_kernel__Int);
+if (var20) {
+var21 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
+var20 = (var21 == var_color);
+}
+var18 = var20;
+goto RET_LABEL19;
+RET_LABEL19:(void)0;
+}
+var13 = var18;
+} else {
+var13 = var_;
+}
+if (var13){
+var22 = 0;
+var = var22;
+goto RET_LABEL;
+} else {
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+} else {
+}
+var23 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var23 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 289);
+exit(1);
+} else {
+var24 = ((val* (*)(val*, val*))(var23->class->vft[COLOR_poset__POSet___91d_93d]))(var23, var_element) /* [] on <var23:nullable POSet[Object]>*/;
+}
+var25 = ((val* (*)(val*))(var24->class->vft[COLOR_poset__POSetElement__greaters]))(var24) /* greaters on <var24:POSetElement[Object]>*/;
+var26 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Collection__iterator]))(var25) /* iterator on <var25:Collection[Object]>*/;
+for(;;) {
+var27 = ((short int (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var26) /* is_ok on <var26:Iterator[nullable Object]>*/;
+if(!var27) break;
+var28 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__item]))(var26) /* item on <var26:Iterator[nullable Object]>*/;
+var_st29 = var28;
+var30 = ((short int (*)(val*, val*))(var_st29->class->vft[COLOR_kernel__Object___61d_61d]))(var_st29, var_element) /* == on <var_st29:Object>*/;
+if (var30){
+goto CONTINUE_label31;
+} else {
+}
+var33 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__coloration_result]))(self) /* coloration_result on <self:TypingColorer[Object]>*/;
+var34 = ((short int (*)(val*, val*))(var33->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var33, var_st29) /* has_key on <var33:Map[Object, Int]>*/;
+var_35 = var34;
+if (var34){
+var36 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__coloration_result]))(self) /* coloration_result on <self:TypingColorer[Object]>*/;
+var37 = ((val* (*)(val*, val*))(var36->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var36, var_st29) /* [] on <var36:Map[Object, Int]>*/;
+{ /* Inline kernel#Int#== (var37,var_color) */
+var40 = (var37 != NULL) && (var37->class == &class_kernel__Int);
+if (var40) {
+var41 = ((struct instance_kernel__Int*)var37)->value; /* autounbox from nullable Object to Int */;
+var40 = (var41 == var_color);
+}
+var38 = var40;
+goto RET_LABEL39;
+RET_LABEL39:(void)0;
+}
+var32 = var38;
+} else {
+var32 = var_35;
+}
+if (var32){
+var42 = 0;
+var = var42;
+goto RET_LABEL;
+} else {
+}
+CONTINUE_label31: (void)0;
+((void (*)(val*))(var26->class->vft[COLOR_abstract_collection__Iterator__next]))(var26) /* next on <var26:Iterator[nullable Object]>*/;
+}
+BREAK_label31: (void)0;
+var43 = 1;
+var = var43;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#is_color_free for (self: Object, Object, Set[Object], Int): Bool */
+short int VIRTUAL_layout_builders__TypingColorer__is_color_free(val* self, val* p0, val* p1, long p2) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = layout_builders__TypingColorer__is_color_free(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#tag_elements for (self: TypingColorer[Object], Set[Object]) */
+void layout_builders__TypingColorer__tag_elements(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var1 /* : Iterator[nullable Object] */;
+short int var2 /* : Bool */;
+val* var3 /* : nullable Object */;
+val* var_element /* var element: Object */;
+short int var4 /* : Bool */;
+short int var_all_subelements_si /* var all_subelements_si: Bool */;
+val* var5 /* : nullable POSet[Object] */;
+val* var6 /* : POSetElement[Object] */;
+val* var7 /* : Collection[Object] */;
+val* var8 /* : Iterator[nullable Object] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_subelem /* var subelem: Object */;
+val* var11 /* : nullable POSet[Object] */;
+val* var12 /* : POSetElement[Object] */;
+val* var13 /* : Collection[Object] */;
+long var14 /* : Int */;
+long var15 /* : Int */;
+short int var16 /* : Bool */;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+val* var23 /* : nullable POSet[Object] */;
+val* var24 /* : POSetElement[Object] */;
+val* var25 /* : Collection[Object] */;
+long var26 /* : Int */;
+long var27 /* : Int */;
+short int var28 /* : Bool */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+short int var33 /* : Bool */;
+val* var34 /* : Set[Object] */;
+val* var35 /* : nullable POSet[Object] */;
+val* var36 /* : POSetElement[Object] */;
+val* var37 /* : Collection[Object] */;
+val* var38 /* : Set[Object] */;
+short int var39 /* : Bool */;
+val* var40 /* : Set[Object] */;
+val* var41 /* : nullable POSet[Object] */;
+val* var42 /* : POSetElement[Object] */;
+val* var43 /* : Collection[Object] */;
+val* var44 /* : Set[Object] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 296);
+exit(1);
+}
+var_elements = p0;
+var1 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_elements) /* iterator on <var_elements:Set[Object]>*/;
+for(;;) {
+var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
+if(!var2) break;
+var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
+var_element = var3;
+var4 = 1;
+var_all_subelements_si = var4;
+var5 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var5 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 301);
+exit(1);
+} else {
+var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_poset__POSet___91d_93d]))(var5, var_element) /* [] on <var5:nullable POSet[Object]>*/;
+}
+var7 = ((val* (*)(val*))(var6->class->vft[COLOR_poset__POSetElement__smallers]))(var6) /* smallers on <var6:POSetElement[Object]>*/;
+var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:Collection[Object]>*/;
+for(;;) {
+var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
+if(!var9) break;
+var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
+var_subelem = var10;
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var11 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 302);
+exit(1);
+} else {
+var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_poset__POSet___91d_93d]))(var11, var_subelem) /* [] on <var11:nullable POSet[Object]>*/;
+}
+var13 = ((val* (*)(val*))(var12->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var12) /* direct_greaters on <var12:POSetElement[Object]>*/;
+var14 = ((long (*)(val*))(var13->class->vft[COLOR_abstract_collection__Collection__length]))(var13) /* length on <var13:Collection[Object]>*/;
+var15 = 1;
+{ /* Inline kernel#Int#> (var14,var15) */
+/* Covariant cast for argument 0 (i) <var15:Int> isa OTHER */
+/* <var15:Int> isa OTHER */
+var18 = 1; /* easy <var15:Int> isa OTHER*/
+if (!var18) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
+exit(1);
+}
+var21 = var14 > var15;
+var16 = var21;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
+}
+if (var16){
+var22 = 0;
+var_all_subelements_si = var22;
+goto BREAK_label;
+} else {
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var23 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var23 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 309);
+exit(1);
+} else {
+var24 = ((val* (*)(val*, val*))(var23->class->vft[COLOR_poset__POSet___91d_93d]))(var23, var_element) /* [] on <var23:nullable POSet[Object]>*/;
+}
+var25 = ((val* (*)(val*))(var24->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var24) /* direct_greaters on <var24:POSetElement[Object]>*/;
+var26 = ((long (*)(val*))(var25->class->vft[COLOR_abstract_collection__Collection__length]))(var25) /* length on <var25:Collection[Object]>*/;
+var27 = 1;
+{ /* Inline kernel#Int#> (var26,var27) */
+/* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
+/* <var27:Int> isa OTHER */
+var30 = 1; /* easy <var27:Int> isa OTHER*/
+if (!var30) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
+exit(1);
+}
+var33 = var26 > var27;
+var28 = var33;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
+}
+if (var28){
+var34 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__core]))(self) /* core on <self:TypingColorer[Object]>*/;
+var35 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var35 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 310);
+exit(1);
+} else {
+var36 = ((val* (*)(val*, val*))(var35->class->vft[COLOR_poset__POSet___91d_93d]))(var35, var_element) /* [] on <var35:nullable POSet[Object]>*/;
+}
+var37 = ((val* (*)(val*))(var36->class->vft[COLOR_poset__POSetElement__greaters]))(var36) /* greaters on <var36:POSetElement[Object]>*/;
+((void (*)(val*, val*))(var34->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var34, var37) /* add_all on <var34:Set[Object]>*/;
+if (var_all_subelements_si){
+var38 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__border]))(self) /* border on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(var38->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var38, var_element) /* add on <var38:Set[Object]>*/;
+} else {
+}
+} else {
+var39 = !var_all_subelements_si;
+if (var39){
+var40 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__core]))(self) /* core on <self:TypingColorer[Object]>*/;
+var41 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var41 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 315);
+exit(1);
+} else {
+var42 = ((val* (*)(val*, val*))(var41->class->vft[COLOR_poset__POSet___91d_93d]))(var41, var_element) /* [] on <var41:nullable POSet[Object]>*/;
+}
+var43 = ((val* (*)(val*))(var42->class->vft[COLOR_poset__POSetElement__greaters]))(var42) /* greaters on <var42:POSetElement[Object]>*/;
+((void (*)(val*, val*))(var40->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var40, var43) /* add_all on <var40:Set[Object]>*/;
+} else {
+var44 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__crown]))(self) /* crown on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*))(var44->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var44, var_element) /* add on <var44:Set[Object]>*/;
+}
+}
+CONTINUE_label45: (void)0;
+((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
+}
+BREAK_label45: (void)0;
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#tag_elements for (self: Object, Set[Object]) */
+void VIRTUAL_layout_builders__TypingColorer__tag_elements(val* self, val* p0) {
+layout_builders__TypingColorer__tag_elements(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#build_conflicts_graph for (self: TypingColorer[Object]) */
+void layout_builders__TypingColorer__build_conflicts_graph(val* self) {
+val* var /* : HashMap[Object, HashSet[Object]] */;
+val* var1 /* : Set[Object] */;
+val* var2 /* : Array[Object] */;
+val* var_core /* var core: Array[Object] */;
+val* var3 /* : Iterator[nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_t /* var t: Object */;
+val* var6 /* : Array[Object] */;
+val* var7 /* : Iterator[nullable Object] */;
+short int var8 /* : Bool */;
+val* var9 /* : nullable Object */;
+val* var_i /* var i: Object */;
+short int var10 /* : Bool */;
+val* var11 /* : Array[Object] */;
+val* var_lin_i /* var lin_i: Array[Object] */;
+val* var12 /* : Array[Object] */;
+val* var13 /* : Iterator[nullable Object] */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable Object */;
+val* var_j /* var j: Object */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+short int var_ /* var : Bool */;
+short int var18 /* : Bool */;
+val* var20 /* : Array[Object] */;
+val* var_lin_j /* var lin_j: Array[Object] */;
+val* var21 /* : Array[nullable Object] */;
+val* var_d_ij /* var d_ij: Array[Object] */;
+val* var22 /* : Array[nullable Object] */;
+val* var_d_ji /* var d_ji: Array[Object] */;
+val* var23 /* : Iterator[nullable Object] */;
+short int var24 /* : Bool */;
+val* var25 /* : nullable Object */;
+val* var_ed1 /* var ed1: Object */;
+val* var26 /* : nullable HashMap[Object, Set[Object]] */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+val* var29 /* : nullable HashMap[Object, Set[Object]] */;
+val* var30 /* : HashSet[Object] */;
+val* var31 /* : Iterator[nullable Object] */;
+short int var32 /* : Bool */;
+val* var33 /* : nullable Object */;
+val* var_ed2 /* var ed2: Object */;
+val* var34 /* : nullable HashMap[Object, Set[Object]] */;
+val* var35 /* : nullable Object */;
+val* var38 /* : Iterator[nullable Object] */;
+short int var39 /* : Bool */;
+val* var40 /* : nullable Object */;
+val* var_ed141 /* var ed1: Object */;
+val* var42 /* : nullable HashMap[Object, Set[Object]] */;
+short int var43 /* : Bool */;
+short int var44 /* : Bool */;
+val* var45 /* : nullable HashMap[Object, Set[Object]] */;
+val* var46 /* : HashSet[Object] */;
+val* var47 /* : Iterator[nullable Object] */;
+short int var48 /* : Bool */;
+val* var49 /* : nullable Object */;
+val* var_ed250 /* var ed2: Object */;
+val* var51 /* : nullable HashMap[Object, Set[Object]] */;
+val* var52 /* : nullable Object */;
+var = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0hash_collection__HashSetlayout_builders__TypingColorer_FT0]);
+((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashMap__init]))(var) /* init on <var:HashMap[Object, HashSet[Object]]>*/;
+CHECK_NEW_hash_collection__HashMap(var);
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph_61d]))(self, var) /* conflicts_graph= on <self:TypingColorer[Object]>*/;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__core]))(self) /* core on <self:TypingColorer[Object]>*/;
+var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__reverse_linearize]))(self, var1) /* reverse_linearize on <self:TypingColorer[Object]>*/;
+var_core = var2;
+var3 = ((val* (*)(val*))(var_core->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_core) /* iterator on <var_core:Array[Object]>*/;
+for(;;) {
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
+var_t = var5;
+var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linear_extension]))(self, var_t) /* linear_extension on <self:TypingColorer[Object]>*/;
+var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[Object]>*/;
+for(;;) {
+var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
+if(!var8) break;
+var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
+var_i = var9;
+var10 = ((short int (*)(val*, val*))(var_t->class->vft[COLOR_kernel__Object___61d_61d]))(var_t, var_i) /* == on <var_t:Object>*/;
+if (var10){
+goto CONTINUE_label;
+} else {
+}
+var11 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linear_extension]))(self, var_i) /* linear_extension on <self:TypingColorer[Object]>*/;
+var_lin_i = var11;
+var12 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linear_extension]))(self, var_t) /* linear_extension on <self:TypingColorer[Object]>*/;
+var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on <var12:Array[Object]>*/;
+for(;;) {
+var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
+if(!var14) break;
+var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
+var_j = var15;
+var17 = ((short int (*)(val*, val*))(var_i->class->vft[COLOR_kernel__Object___61d_61d]))(var_i, var_j) /* == on <var_i:Object>*/;
+var_ = var17;
+if (var17){
+var16 = var_;
+} else {
+var18 = ((short int (*)(val*, val*))(var_j->class->vft[COLOR_kernel__Object___61d_61d]))(var_j, var_t) /* == on <var_j:Object>*/;
+var16 = var18;
+}
+if (var16){
+goto CONTINUE_label19;
+} else {
+}
+var20 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linear_extension]))(self, var_j) /* linear_extension on <self:TypingColorer[Object]>*/;
+var_lin_j = var20;
+var21 = ((val* (*)(val*, val*))(var_lin_i->class->vft[COLOR_abstract_compiler__Array___45d]))(var_lin_i, var_lin_j) /* - on <var_lin_i:Array[Object]>*/;
+var_d_ij = var21;
+var22 = ((val* (*)(val*, val*))(var_lin_j->class->vft[COLOR_abstract_compiler__Array___45d]))(var_lin_j, var_lin_i) /* - on <var_lin_j:Array[Object]>*/;
+var_d_ji = var22;
+var23 = ((val* (*)(val*))(var_d_ij->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_d_ij) /* iterator on <var_d_ij:Array[Object]>*/;
+for(;;) {
+var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on <var23:Iterator[nullable Object]>*/;
+if(!var24) break;
+var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on <var23:Iterator[nullable Object]>*/;
+var_ed1 = var25;
+var26 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+if (var26 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 340);
+exit(1);
+} else {
+var27 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var26, var_ed1) /* has_key on <var26:nullable HashMap[Object, Set[Object]]>*/;
+}
+var28 = !var27;
+if (var28){
+var29 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+var30 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0]);
+((void (*)(val*))(var30->class->vft[COLOR_hash_collection__HashSet__init]))(var30) /* init on <var30:HashSet[Object]>*/;
+CHECK_NEW_hash_collection__HashSet(var30);
+if (var29 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 340);
+exit(1);
+} else {
+((void (*)(val*, val*, val*))(var29->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var29, var_ed1, var30) /* []= on <var29:nullable HashMap[Object, Set[Object]]>*/;
+}
+} else {
+}
+var31 = ((val* (*)(val*))(var_d_ji->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_d_ji) /* iterator on <var_d_ji:Array[Object]>*/;
+for(;;) {
+var32 = ((short int (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var31) /* is_ok on <var31:Iterator[nullable Object]>*/;
+if(!var32) break;
+var33 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__item]))(var31) /* item on <var31:Iterator[nullable Object]>*/;
+var_ed2 = var33;
+var34 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+if (var34 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 342);
+exit(1);
+} else {
+var35 = ((val* (*)(val*, val*))(var34->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var34, var_ed1) /* [] on <var34:nullable HashMap[Object, Set[Object]]>*/;
+}
+((void (*)(val*, val*))(var35->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var35, var_ed2) /* add on <var35:nullable Object(Set[Object])>*/;
+CONTINUE_label36: (void)0;
+((void (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__next]))(var31) /* next on <var31:Iterator[nullable Object]>*/;
+}
+BREAK_label36: (void)0;
+CONTINUE_label37: (void)0;
+((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on <var23:Iterator[nullable Object]>*/;
+}
+BREAK_label37: (void)0;
+var38 = ((val* (*)(val*))(var_d_ij->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_d_ij) /* iterator on <var_d_ij:Array[Object]>*/;
+for(;;) {
+var39 = ((short int (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var38) /* is_ok on <var38:Iterator[nullable Object]>*/;
+if(!var39) break;
+var40 = ((val* (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__item]))(var38) /* item on <var38:Iterator[nullable Object]>*/;
+var_ed141 = var40;
+var42 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+if (var42 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 345);
+exit(1);
+} else {
+var43 = ((short int (*)(val*, val*))(var42->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var42, var_ed141) /* has_key on <var42:nullable HashMap[Object, Set[Object]]>*/;
+}
+var44 = !var43;
+if (var44){
+var45 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+var46 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0]);
+((void (*)(val*))(var46->class->vft[COLOR_hash_collection__HashSet__init]))(var46) /* init on <var46:HashSet[Object]>*/;
+CHECK_NEW_hash_collection__HashSet(var46);
+if (var45 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 345);
+exit(1);
+} else {
+((void (*)(val*, val*, val*))(var45->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var45, var_ed141, var46) /* []= on <var45:nullable HashMap[Object, Set[Object]]>*/;
+}
+} else {
+}
+var47 = ((val* (*)(val*))(var_d_ji->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_d_ji) /* iterator on <var_d_ji:Array[Object]>*/;
+for(;;) {
+var48 = ((short int (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var47) /* is_ok on <var47:Iterator[nullable Object]>*/;
+if(!var48) break;
+var49 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__item]))(var47) /* item on <var47:Iterator[nullable Object]>*/;
+var_ed250 = var49;
+var51 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(self) /* conflicts_graph on <self:TypingColorer[Object]>*/;
+if (var51 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 347);
+exit(1);
+} else {
+var52 = ((val* (*)(val*, val*))(var51->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var51, var_ed141) /* [] on <var51:nullable HashMap[Object, Set[Object]]>*/;
+}
+((void (*)(val*, val*))(var52->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var52, var_ed250) /* add on <var52:nullable Object(Set[Object])>*/;
+CONTINUE_label53: (void)0;
+((void (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__next]))(var47) /* next on <var47:Iterator[nullable Object]>*/;
+}
+BREAK_label53: (void)0;
+CONTINUE_label54: (void)0;
+((void (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__next]))(var38) /* next on <var38:Iterator[nullable Object]>*/;
+}
+BREAK_label54: (void)0;
+CONTINUE_label19: (void)0;
+((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
+}
+BREAK_label19: (void)0;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label55: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
+}
+BREAK_label55: (void)0;
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#build_conflicts_graph for (self: Object) */
+void VIRTUAL_layout_builders__TypingColorer__build_conflicts_graph(val* self) {
+layout_builders__TypingColorer__build_conflicts_graph(self);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#conflicts_graph for (self: TypingColorer[Object]): nullable HashMap[Object, Set[Object]] */
+val* layout_builders__TypingColorer__conflicts_graph(val* self) {
+val* var /* : nullable HashMap[Object, Set[Object]] */;
+val* var1 /* : nullable HashMap[Object, Set[Object]] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dconflicts_graph].val; /* @conflicts_graph on <self:TypingColorer[Object]> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#conflicts_graph for (self: Object): nullable HashMap[Object, Set[Object]] */
+val* VIRTUAL_layout_builders__TypingColorer__conflicts_graph(val* self) {
+val* var /* : nullable HashMap[Object, Set[Object]] */;
+val* var1 /* : nullable HashMap[Object, Set[Object]] */;
+var1 = layout_builders__TypingColorer__conflicts_graph(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#conflicts_graph= for (self: TypingColorer[Object], nullable HashMap[Object, Set[Object]]) */
+void layout_builders__TypingColorer__conflicts_graph_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (conflicts_graph) <p0:nullable HashMap[Object, Set[Object]]> isa nullable HashMap[TypingColorer#0, Set[TypingColorer#0]] */
+/* <p0:nullable HashMap[Object, Set[Object]]> isa nullable HashMap[TypingColorer#0, Set[TypingColorer#0]] */
+type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__TypingColorer_FT0abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(p0 == NULL) {
+var = 1;
+} else {
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 354);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dconflicts_graph].val = p0; /* @conflicts_graph on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#conflicts_graph= for (self: Object, nullable HashMap[Object, Set[Object]]) */
+void VIRTUAL_layout_builders__TypingColorer__conflicts_graph_61d(val* self, val* p0) {
+layout_builders__TypingColorer__conflicts_graph_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#linear_extensions_cache for (self: TypingColorer[Object]): Map[Object, Array[Object]] */
+val* layout_builders__TypingColorer__linear_extensions_cache(val* self) {
+val* var /* : Map[Object, Array[Object]] */;
+val* var1 /* : Map[Object, Array[Object]] */;
+var1 = self->attrs[COLOR_layout_builders__TypingColorer___64dlinear_extensions_cache].val; /* @linear_extensions_cache on <self:TypingColorer[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @linear_extensions_cache", "src/layout_builders.nit", 356);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#linear_extensions_cache for (self: Object): Map[Object, Array[Object]] */
+val* VIRTUAL_layout_builders__TypingColorer__linear_extensions_cache(val* self) {
+val* var /* : Map[Object, Array[Object]] */;
+val* var1 /* : Map[Object, Array[Object]] */;
+var1 = layout_builders__TypingColorer__linear_extensions_cache(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#linear_extensions_cache= for (self: TypingColorer[Object], Map[Object, Array[Object]]) */
+void layout_builders__TypingColorer__linear_extensions_cache_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (linear_extensions_cache) <p0:Map[Object, Array[Object]]> isa Map[TypingColorer#0, Array[TypingColorer#0]] */
+/* <p0:Map[Object, Array[Object]]> isa Map[TypingColorer#0, Array[TypingColorer#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__TypingColorer_FT0array__Arraylayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 356);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingColorer___64dlinear_extensions_cache].val = p0; /* @linear_extensions_cache on <self:TypingColorer[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#linear_extensions_cache= for (self: Object, Map[Object, Array[Object]]) */
+void VIRTUAL_layout_builders__TypingColorer__linear_extensions_cache_61d(val* self, val* p0) {
+layout_builders__TypingColorer__linear_extensions_cache_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingColorer#linear_extension for (self: TypingColorer[Object], Object): Array[Object] */
+val* layout_builders__TypingColorer__linear_extension(val* self, val* p0) {
+val* var /* : Array[Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_element /* var element: Object */;
+val* var2 /* : Map[Object, Array[Object]] */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var5 /* : HashSet[Object] */;
+val* var_supers /* var supers: HashSet[Object] */;
+val* var6 /* : nullable POSet[Object] */;
+val* var7 /* : POSetElement[Object] */;
+val* var8 /* : Collection[Object] */;
+val* var9 /* : Map[Object, Array[Object]] */;
+val* var10 /* : Array[Object] */;
+val* var11 /* : Map[Object, Array[Object]] */;
+val* var12 /* : nullable Object */;
+/* Covariant cast for argument 0 (element) <p0:Object> isa TypingColorer#0 */
+/* <p0:Object> isa TypingColorer#0 */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 359);
+exit(1);
+}
+var_element = p0;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linear_extensions_cache]))(self) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
+var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var2, var_element) /* has_key on <var2:Map[Object, Array[Object]]>*/;
+var4 = !var3;
+if (var4){
+var5 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetlayout_builders__TypingColorer_FT0]);
+((void (*)(val*))(var5->class->vft[COLOR_hash_collection__HashSet__init]))(var5) /* init on <var5:HashSet[Object]>*/;
+CHECK_NEW_hash_collection__HashSet(var5);
+var_supers = var5;
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var6 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 363);
+exit(1);
+} else {
+var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_poset__POSet___91d_93d]))(var6, var_element) /* [] on <var6:nullable POSet[Object]>*/;
+}
+var8 = ((val* (*)(val*))(var7->class->vft[COLOR_poset__POSetElement__greaters]))(var7) /* greaters on <var7:POSetElement[Object]>*/;
+((void (*)(val*, val*))(var_supers->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_supers, var8) /* add_all on <var_supers:HashSet[Object]>*/;
+var9 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linear_extensions_cache]))(self) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
+var10 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linearize]))(self, var_supers) /* linearize on <self:TypingColorer[Object]>*/;
+((void (*)(val*, val*, val*))(var9->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var9, var_element, var10) /* []= on <var9:Map[Object, Array[Object]]>*/;
+} else {
+}
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingColorer__linear_extensions_cache]))(self) /* linear_extensions_cache on <self:TypingColorer[Object]>*/;
+var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_element) /* [] on <var11:Map[Object, Array[Object]]>*/;
+var = var12;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#linear_extension for (self: Object, Object): Array[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__linear_extension(val* self, val* p0) {
+val* var /* : Array[Object] */;
+val* var1 /* : Array[Object] */;
+var1 = layout_builders__TypingColorer__linear_extension(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#reverse_linearize for (self: TypingColorer[Object], Set[Object]): Array[Object] */
+val* layout_builders__TypingColorer__reverse_linearize(val* self, val* p0) {
+val* var /* : Array[Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : Array[Object] */;
+val* var_lin /* var lin: Array[Object] */;
+val* var3 /* : nullable POSet[Object] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 369);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraylayout_builders__TypingColorer_FT0]);
+((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Object]>*/;
+CHECK_NEW_array__Array(var2);
+var_lin = var2;
+((void (*)(val*, val*))(var_lin->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_lin, var_elements) /* add_all on <var_lin:Array[Object]>*/;
+var3 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingColorer[Object]>*/;
+if (var3 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 372);
+exit(1);
+} else {
+((void (*)(val*, val*))(var3->class->vft[COLOR_sorter__AbstractSorter__sort]))(var3, var_lin) /* sort on <var3:nullable POSet[Object]>*/;
+}
+var = var_lin;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#reverse_linearize for (self: Object, Set[Object]): Array[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__reverse_linearize(val* self, val* p0) {
+val* var /* : Array[Object] */;
+val* var1 /* : Array[Object] */;
+var1 = layout_builders__TypingColorer__reverse_linearize(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#linearize for (self: TypingColorer[Object], Set[Object]): Array[Object] */
+val* layout_builders__TypingColorer__linearize(val* self, val* p0) {
+val* var /* : Array[Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : Array[Object] */;
+val* var3 /* : Array[nullable Object] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingColorer#0] */
+/* <p0:Set[Object]> isa Set[TypingColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 375);
+exit(1);
+}
+var_elements = p0;
+var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__reverse_linearize]))(self, var_elements) /* reverse_linearize on <self:TypingColorer[Object]>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__AbstractArrayRead__reversed]))(var2) /* reversed on <var2:Array[Object]>*/;
+var = var3;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingColorer#linearize for (self: Object, Set[Object]): Array[Object] */
+val* VIRTUAL_layout_builders__TypingColorer__linearize(val* self, val* p0) {
+val* var /* : Array[Object] */;
+val* var1 /* : Array[Object] */;
+var1 = layout_builders__TypingColorer__linearize(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MTypeColorer#init for (self: MTypeColorer, MModule) */
+void layout_builders__MTypeColorer__init(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MTypePOSetBuilder */;
+var_mmodule = p0;
+var = NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder);
+((void (*)(val*, val*))(var->class->vft[COLOR_layout_builders__POSetBuilder__init]))(var, var_mmodule) /* init on <var:MTypePOSetBuilder>*/;
+CHECK_NEW_layout_builders__MTypePOSetBuilder(var);
+((void (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__init]))(self, var_mmodule, var) /* init on <self:MTypeColorer>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MTypeColorer#init for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MTypeColorer__init(val* self, val* p0) {
+layout_builders__MTypeColorer__init(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MClassColorer#init for (self: MClassColorer, MModule) */
+void layout_builders__MClassColorer__init(val* self, val* p0) {
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MClassPOSetBuilder */;
+var_mmodule = p0;
+var = NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder);
+((void (*)(val*, val*))(var->class->vft[COLOR_layout_builders__POSetBuilder__init]))(var, var_mmodule) /* init on <var:MClassPOSetBuilder>*/;
+CHECK_NEW_layout_builders__MClassPOSetBuilder(var);
+((void (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__TypingColorer__init]))(self, var_mmodule, var) /* init on <self:MClassColorer>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MClassColorer#init for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MClassColorer__init(val* self, val* p0) {
+layout_builders__MClassColorer__init(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#mmodule for (self: MPropertyColorer[PropertyLayoutElement]): MModule */
+val* layout_builders__MPropertyColorer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = self->attrs[COLOR_layout_builders__MPropertyColorer___64dmmodule].val; /* @mmodule on <self:MPropertyColorer[PropertyLayoutElement]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 394);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#mmodule for (self: Object): MModule */
+val* VIRTUAL_layout_builders__MPropertyColorer__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = layout_builders__MPropertyColorer__mmodule(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#mmodule= for (self: MPropertyColorer[PropertyLayoutElement], MModule) */
+void layout_builders__MPropertyColorer__mmodule_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__MPropertyColorer___64dmmodule].val = p0; /* @mmodule on <self:MPropertyColorer[PropertyLayoutElement]> */
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#mmodule= for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MPropertyColorer__mmodule_61d(val* self, val* p0) {
+layout_builders__MPropertyColorer__mmodule_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#class_colorer for (self: MPropertyColorer[PropertyLayoutElement]): MClassColorer */
+val* layout_builders__MPropertyColorer__class_colorer(val* self) {
+val* var /* : MClassColorer */;
+val* var1 /* : MClassColorer */;
+var1 = self->attrs[COLOR_layout_builders__MPropertyColorer___64dclass_colorer].val; /* @class_colorer on <self:MPropertyColorer[PropertyLayoutElement]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @class_colorer", "src/layout_builders.nit", 395);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#class_colorer for (self: Object): MClassColorer */
+val* VIRTUAL_layout_builders__MPropertyColorer__class_colorer(val* self) {
+val* var /* : MClassColorer */;
+val* var1 /* : MClassColorer */;
+var1 = layout_builders__MPropertyColorer__class_colorer(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#class_colorer= for (self: MPropertyColorer[PropertyLayoutElement], MClassColorer) */
+void layout_builders__MPropertyColorer__class_colorer_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__MPropertyColorer___64dclass_colorer].val = p0; /* @class_colorer on <self:MPropertyColorer[PropertyLayoutElement]> */
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#class_colorer= for (self: Object, MClassColorer) */
+void VIRTUAL_layout_builders__MPropertyColorer__class_colorer_61d(val* self, val* p0) {
+layout_builders__MPropertyColorer__class_colorer_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#coloration_result for (self: MPropertyColorer[PropertyLayoutElement]): Map[PropertyLayoutElement, Int] */
+val* layout_builders__MPropertyColorer__coloration_result(val* self) {
+val* var /* : Map[PropertyLayoutElement, Int] */;
+val* var1 /* : Map[PropertyLayoutElement, Int] */;
+var1 = self->attrs[COLOR_layout_builders__MPropertyColorer___64dcoloration_result].val; /* @coloration_result on <self:MPropertyColorer[PropertyLayoutElement]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @coloration_result", "src/layout_builders.nit", 396);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#coloration_result for (self: Object): Map[PropertyLayoutElement, Int] */
+val* VIRTUAL_layout_builders__MPropertyColorer__coloration_result(val* self) {
+val* var /* : Map[PropertyLayoutElement, Int] */;
+val* var1 /* : Map[PropertyLayoutElement, Int] */;
+var1 = layout_builders__MPropertyColorer__coloration_result(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#coloration_result= for (self: MPropertyColorer[PropertyLayoutElement], Map[PropertyLayoutElement, Int]) */
+void layout_builders__MPropertyColorer__coloration_result_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (coloration_result) <p0:Map[PropertyLayoutElement, Int]> isa Map[MPropertyColorer#0, Int] */
+/* <p0:Map[PropertyLayoutElement, Int]> isa Map[MPropertyColorer#0, Int] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__MPropertyColorer_FT0kernel__Int];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 396);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__MPropertyColorer___64dcoloration_result].val = p0; /* @coloration_result on <self:MPropertyColorer[PropertyLayoutElement]> */
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#coloration_result= for (self: Object, Map[PropertyLayoutElement, Int]) */
+void VIRTUAL_layout_builders__MPropertyColorer__coloration_result_61d(val* self, val* p0) {
+layout_builders__MPropertyColorer__coloration_result_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#init for (self: MPropertyColorer[PropertyLayoutElement], MModule, MClassColorer) */
+void layout_builders__MPropertyColorer__init(val* self, val* p0, val* p1) {
+val* var_mmodule /* var mmodule: MModule */;
+val* var_class_colorer /* var class_colorer: MClassColorer */;
+var_mmodule = p0;
+var_class_colorer = p1;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__class_colorer_61d]))(self, var_class_colorer) /* class_colorer= on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#init for (self: Object, MModule, MClassColorer) */
+void VIRTUAL_layout_builders__MPropertyColorer__init(val* self, val* p0, val* p1) {
+layout_builders__MPropertyColorer__init(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#build_layout for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* layout_builders__MPropertyColorer__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
+val* var2 /* : Layout[PropertyLayoutElement] */;
+val* var_result /* var result: Layout[PropertyLayoutElement] */;
+val* var3 /* : Map[PropertyLayoutElement, Int] */;
+/* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+/* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 403);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_layout_builders__Layout(self->type->resolution_table->types[COLOR_layout_builders__Layoutlayout_builders__MPropertyColorer_FT0]);
+((void (*)(val*))(var2->class->vft[COLOR_layout_builders__Layout__init]))(var2) /* init on <var2:Layout[PropertyLayoutElement]>*/;
+CHECK_NEW_layout_builders__Layout(var2);
+var_result = var2;
+var3 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__colorize]))(self, var_elements) /* colorize on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var3) /* pos= on <var_result:Layout[PropertyLayoutElement]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* VIRTUAL_layout_builders__MPropertyColorer__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+val* var1 /* : Layout[PropertyLayoutElement] */;
+var1 = layout_builders__MPropertyColorer__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#colorize for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Map[PropertyLayoutElement, Int] */
+val* layout_builders__MPropertyColorer__colorize(val* self, val* p0) {
+val* var /* : Map[PropertyLayoutElement, Int] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
+val* var2 /* : Map[PropertyLayoutElement, Int] */;
+/* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+/* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 410);
+exit(1);
+}
+var_elements = p0;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__colorize_core]))(self, var_elements) /* colorize_core on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__colorize_crown]))(self, var_elements) /* colorize_crown on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__coloration_result]))(self) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var = var2;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#colorize for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Map[PropertyLayoutElement, Int] */
+val* VIRTUAL_layout_builders__MPropertyColorer__colorize(val* self, val* p0) {
+val* var /* : Map[PropertyLayoutElement, Int] */;
+val* var1 /* : Map[PropertyLayoutElement, Int] */;
+var1 = layout_builders__MPropertyColorer__colorize(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#colorize_core for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]) */
+void layout_builders__MPropertyColorer__colorize_core(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
+long var1 /* : Int */;
+long var_min_color /* var min_color: Int */;
+val* var2 /* : MClassColorer */;
+val* var3 /* : Set[Object] */;
+val* var4 /* : Iterator[nullable Object] */;
+short int var5 /* : Bool */;
+val* var6 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+long var_color /* var color: Int */;
+val* var7 /* : MModule */;
+val* var8 /* : POSetElement[MClass] */;
+val* var9 /* : Collection[Object] */;
+long var10 /* : Int */;
+val* var11 /* : MClassColorer */;
+val* var12 /* : nullable HashMap[Object, Set[Object]] */;
+short int var13 /* : Bool */;
+val* var14 /* : MClassColorer */;
+val* var15 /* : nullable HashMap[Object, Set[Object]] */;
+val* var16 /* : nullable Object */;
+long var17 /* : Int */;
+val* var18 /* : nullable Object */;
+/* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+/* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 416);
+exit(1);
+}
+var_elements = p0;
+var1 = 0;
+var_min_color = var1;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__class_colorer]))(self) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_layout_builders__TypingColorer__core]))(var2) /* core on <var2:MClassColorer>*/;
+var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Collection__iterator]))(var3) /* iterator on <var3:Set[Object](Set[MClass])>*/;
+for(;;) {
+var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
+if(!var5) break;
+var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
+var_mclass = var6;
+var_color = var_min_color;
+var7 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__mmodule]))(self) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var8 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass, var7) /* in_hierarchy on <var_mclass:MClass>*/;
+var9 = ((val* (*)(val*))(var8->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var8) /* direct_greaters on <var8:POSetElement[MClass]>*/;
+var10 = ((long (*)(val*, long, val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__max_color]))(self, var_color, var9, var_elements) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var_color = var10;
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__class_colorer]))(self) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var12 = ((val* (*)(val*))(var11->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(var11) /* conflicts_graph on <var11:MClassColorer>*/;
+if (var12 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 424);
+exit(1);
+} else {
+var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var12, var_mclass) /* has_key on <var12:nullable HashMap[Object, Set[Object]](nullable HashMap[MClass, Set[MClass]])>*/;
+}
+if (var13){
+var14 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__class_colorer]))(self) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var15 = ((val* (*)(val*))(var14->class->vft[COLOR_layout_builders__TypingColorer__conflicts_graph]))(var14) /* conflicts_graph on <var14:MClassColorer>*/;
+if (var15 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 425);
+exit(1);
+} else {
+var16 = ((val* (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var15, var_mclass) /* [] on <var15:nullable HashMap[Object, Set[Object]](nullable HashMap[MClass, Set[MClass]])>*/;
+}
+var17 = ((long (*)(val*, long, val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__max_color]))(self, var_color, var16, var_elements) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var_color = var17;
+} else {
+}
+var18 = ((val* (*)(val*, val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_elements, var_mclass) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
+((void (*)(val*, val*, long))(self->class->vft[COLOR_layout_builders__MPropertyColorer__colorize_elements]))(self, var18, var_color) /* colorize_elements on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#colorize_core for (self: Object, Map[MClass, Set[PropertyLayoutElement]]) */
+void VIRTUAL_layout_builders__MPropertyColorer__colorize_core(val* self, val* p0) {
+layout_builders__MPropertyColorer__colorize_core(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#colorize_crown for (self: MPropertyColorer[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]) */
+void layout_builders__MPropertyColorer__colorize_crown(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
+val* var1 /* : MClassColorer */;
+val* var2 /* : Set[Object] */;
+val* var3 /* : Iterator[nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var6 /* : HashSet[MClass] */;
+val* var_parents /* var parents: HashSet[MClass] */;
+val* var7 /* : MModule */;
+val* var8 /* : POSet[MClass] */;
+short int var9 /* : Bool */;
+val* var10 /* : MModule */;
+val* var11 /* : POSetElement[MClass] */;
+val* var12 /* : Collection[Object] */;
+val* var13 /* : nullable Object */;
+long var14 /* : Int */;
+long var15 /* : Int */;
+/* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+/* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 431);
+exit(1);
+}
+var_elements = p0;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__class_colorer]))(self) /* class_colorer on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var2 = ((val* (*)(val*))(var1->class->vft[COLOR_layout_builders__TypingColorer__crown]))(var1) /* crown on <var1:MClassColorer>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Set[Object](Set[MClass])>*/;
+for(;;) {
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
+var_mclass = var5;
+var6 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
+((void (*)(val*))(var6->class->vft[COLOR_hash_collection__HashSet__init]))(var6) /* init on <var6:HashSet[MClass]>*/;
+CHECK_NEW_hash_collection__HashSet(var6);
+var_parents = var6;
+var7 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__mmodule]))(self) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var7) /* flatten_mclass_hierarchy on <var7:MModule>*/;
+var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__Collection__has]))(var8, var_mclass) /* has on <var8:POSet[MClass]>*/;
+if (var9){
+var10 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__mmodule]))(self) /* mmodule on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var11 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass, var10) /* in_hierarchy on <var_mclass:MClass>*/;
+var12 = ((val* (*)(val*))(var11->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var11) /* direct_greaters on <var11:POSetElement[MClass]>*/;
+((void (*)(val*, val*))(var_parents->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_parents, var12) /* add_all on <var_parents:HashSet[MClass]>*/;
+} else {
+}
+var13 = ((val* (*)(val*, val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_elements, var_mclass) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
+var14 = 0;
+var15 = ((long (*)(val*, long, val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__max_color]))(self, var14, var_parents, var_elements) /* max_color on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+((void (*)(val*, val*, long))(self->class->vft[COLOR_layout_builders__MPropertyColorer__colorize_elements]))(self, var13, var15) /* colorize_elements on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#colorize_crown for (self: Object, Map[MClass, Set[PropertyLayoutElement]]) */
+void VIRTUAL_layout_builders__MPropertyColorer__colorize_crown(val* self, val* p0) {
+layout_builders__MPropertyColorer__colorize_crown(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#colorize_elements for (self: MPropertyColorer[PropertyLayoutElement], Collection[PropertyLayoutElement], Int) */
+void layout_builders__MPropertyColorer__colorize_elements(val* self, val* p0, long p1) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Collection[PropertyLayoutElement] */;
+long var_start_color /* var start_color: Int */;
+val* var1 /* : Iterator[nullable Object] */;
+short int var2 /* : Bool */;
+val* var3 /* : nullable Object */;
+val* var_element /* var element: PropertyLayoutElement */;
+val* var4 /* : Map[PropertyLayoutElement, Int] */;
+short int var5 /* : Bool */;
+val* var6 /* : Map[PropertyLayoutElement, Int] */;
+val* var7 /* : nullable Object */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+long var11 /* : Int */;
+/* Covariant cast for argument 0 (elements) <p0:Collection[PropertyLayoutElement]> isa Collection[MPropertyColorer#0] */
+/* <p0:Collection[PropertyLayoutElement]> isa Collection[MPropertyColorer#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Collectionlayout_builders__MPropertyColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 442);
+exit(1);
+}
+var_elements = p0;
+var_start_color = p1;
+var1 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_elements) /* iterator on <var_elements:Collection[PropertyLayoutElement]>*/;
+for(;;) {
+var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var1) /* is_ok on <var1:Iterator[nullable Object]>*/;
+if(!var2) break;
+var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__item]))(var1) /* item on <var1:Iterator[nullable Object]>*/;
+var_element = var3;
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__coloration_result]))(self) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var5 = ((short int (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var4, var_element) /* has_key on <var4:Map[PropertyLayoutElement, Int]>*/;
+if (var5){
+goto CONTINUE_label;
+} else {
+}
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__coloration_result]))(self) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var7 = BOX_kernel__Int(var_start_color); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var6->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var6, var_element, var7) /* []= on <var6:Map[PropertyLayoutElement, Int]>*/;
+var8 = 1;
+{ /* Inline kernel#Int#+ (var_start_color,var8) */
+var11 = var_start_color + var8;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+var_start_color = var9;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__Iterator__next]))(var1) /* next on <var1:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#colorize_elements for (self: Object, Collection[PropertyLayoutElement], Int) */
+void VIRTUAL_layout_builders__MPropertyColorer__colorize_elements(val* self, val* p0, long p1) {
+layout_builders__MPropertyColorer__colorize_elements(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyColorer#max_color for (self: MPropertyColorer[PropertyLayoutElement], Int, Collection[MClass], Map[MClass, Set[PropertyLayoutElement]]): Int */
+long layout_builders__MPropertyColorer__max_color(val* self, long p0, val* p1, val* p2) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+long var_min_color /* var min_color: Int */;
+val* var_mclasses /* var mclasses: Collection[MClass] */;
+val* var_elements /* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
+long var_max_color /* var max_color: Int */;
+val* var2 /* : Iterator[nullable Object] */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var5 /* : nullable Object */;
+val* var6 /* : Iterator[nullable Object] */;
+short int var7 /* : Bool */;
+val* var8 /* : nullable Object */;
+val* var_mproperty /* var mproperty: PropertyLayoutElement */;
+long var_color /* var color: Int */;
+val* var9 /* : Map[PropertyLayoutElement, Int] */;
+short int var10 /* : Bool */;
+val* var11 /* : Map[PropertyLayoutElement, Int] */;
+val* var12 /* : nullable Object */;
+long var13 /* : Int */;
+short int var14 /* : Bool */;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+short int var19 /* : Bool */;
+long var20 /* : Int */;
+long var21 /* : Int */;
+long var23 /* : Int */;
+/* Covariant cast for argument 2 (elements) <p2:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+/* <p2:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[MPropertyColorer#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__MPropertyColorer_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p2->type->table_size) {
+var1 = 0;
+} else {
+var1 = p2->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 451);
+exit(1);
+}
+var_min_color = p0;
+var_mclasses = p1;
+var_elements = p2;
+var_max_color = var_min_color;
+var2 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:Collection[MClass]>*/;
+for(;;) {
+var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
+if(!var3) break;
+var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
+var_mclass = var4;
+var5 = ((val* (*)(val*, val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_elements, var_mclass) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
+var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:nullable Object(Set[PropertyLayoutElement])>*/;
+for(;;) {
+var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
+if(!var7) break;
+var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
+var_mproperty = var8;
+var_color = var_min_color;
+var9 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__coloration_result]))(self) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var9, var_mproperty) /* has_key on <var9:Map[PropertyLayoutElement, Int]>*/;
+if (var10){
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyColorer__coloration_result]))(self) /* coloration_result on <self:MPropertyColorer[PropertyLayoutElement]>*/;
+var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_mproperty) /* [] on <var11:Map[PropertyLayoutElement, Int]>*/;
+var13 = ((struct instance_kernel__Int*)var12)->value; /* autounbox from nullable Object to Int */;
+var_color = var13;
+{ /* Inline kernel#Int#>= (var_color,var_max_color) */
+/* Covariant cast for argument 0 (i) <var_max_color:Int> isa OTHER */
+/* <var_max_color:Int> isa OTHER */
+var16 = 1; /* easy <var_max_color:Int> isa OTHER*/
+if (!var16) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
+exit(1);
+}
+var19 = var_color >= var_max_color;
+var14 = var19;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+if (var14){
+var20 = 1;
+{ /* Inline kernel#Int#+ (var_color,var20) */
+var23 = var_color + var20;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+var_max_color = var21;
+} else {
+}
+} else {
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label24: (void)0;
+((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
+}
+BREAK_label24: (void)0;
+var = var_max_color;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyColorer#max_color for (self: Object, Int, Collection[MClass], Map[MClass, Set[PropertyLayoutElement]]): Int */
+long VIRTUAL_layout_builders__MPropertyColorer__max_color(val* self, long p0, val* p1, val* p2) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = layout_builders__MPropertyColorer__max_color(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#coloration_result for (self: ResolutionColorer): Map[MType, Int] */
+val* layout_builders__ResolutionColorer__coloration_result(val* self) {
+val* var /* : Map[MType, Int] */;
+val* var1 /* : Map[MType, Int] */;
+var1 = self->attrs[COLOR_layout_builders__ResolutionColorer___64dcoloration_result].val; /* @coloration_result on <self:ResolutionColorer> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @coloration_result", "src/layout_builders.nit", 471);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#coloration_result for (self: Object): Map[MType, Int] */
+val* VIRTUAL_layout_builders__ResolutionColorer__coloration_result(val* self) {
+val* var /* : Map[MType, Int] */;
+val* var1 /* : Map[MType, Int] */;
+var1 = layout_builders__ResolutionColorer__coloration_result(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#coloration_result= for (self: ResolutionColorer, Map[MType, Int]) */
+void layout_builders__ResolutionColorer__coloration_result_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__ResolutionColorer___64dcoloration_result].val = p0; /* @coloration_result on <self:ResolutionColorer> */
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#coloration_result= for (self: Object, Map[MType, Int]) */
+void VIRTUAL_layout_builders__ResolutionColorer__coloration_result_61d(val* self, val* p0) {
+layout_builders__ResolutionColorer__coloration_result_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#init for (self: ResolutionColorer) */
+void layout_builders__ResolutionColorer__init(val* self) {
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#init for (self: Object) */
+void VIRTUAL_layout_builders__ResolutionColorer__init(val* self) {
+layout_builders__ResolutionColorer__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#build_layout for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Layout[MType] */
+val* layout_builders__ResolutionColorer__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
+val* var1 /* : Layout[MType] */;
+val* var_result /* var result: Layout[MType] */;
+val* var2 /* : Map[MType, Int] */;
+val* var3 /* : Map[MType, Int] */;
+var_elements = p0;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__build_conflicts_graph]))(self, var_elements) /* build_conflicts_graph on <self:ResolutionColorer>*/;
+var1 = NEW_layout_builders__Layout(&type_layout_builders__Layoutmodel__MType);
+((void (*)(val*))(var1->class->vft[COLOR_layout_builders__Layout__init]))(var1) /* init on <var1:Layout[MType]>*/;
+CHECK_NEW_layout_builders__Layout(var1);
+var_result = var1;
+var2 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__compute_ids]))(self, var_elements) /* compute_ids on <self:ResolutionColorer>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids_61d]))(var_result, var2) /* ids= on <var_result:Layout[MType]>*/;
+var3 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__colorize_elements]))(self, var_elements) /* colorize_elements on <self:ResolutionColorer>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var3) /* pos= on <var_result:Layout[MType]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
+val* VIRTUAL_layout_builders__ResolutionColorer__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+val* var1 /* : Layout[MType] */;
+var1 = layout_builders__ResolutionColorer__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#compute_ids for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Map[MType, Int] */
+val* layout_builders__ResolutionColorer__compute_ids(val* self, val* p0) {
+val* var /* : Map[MType, Int] */;
+val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
+val* var1 /* : HashMap[MType, Int] */;
+val* var_ids /* var ids: HashMap[MType, Int] */;
+long var2 /* : Int */;
+long var_color /* var color: Int */;
+val* var3 /* : MapIterator[Object, nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : Object */;
+val* var_mclasstype /* var mclasstype: MClassType */;
+val* var6 /* : nullable Object */;
+val* var_mclasstypes /* var mclasstypes: Set[MType] */;
+val* var7 /* : Iterator[nullable Object] */;
+short int var8 /* : Bool */;
+val* var9 /* : nullable Object */;
+val* var_element /* var element: MType */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable Object */;
+long var12 /* : Int */;
+long var13 /* : Int */;
+long var15 /* : Int */;
+var_elements = p0;
+var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int);
+((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[MType, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var1);
+var_ids = var1;
+var2 = 0;
+var_color = var2;
+var3 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
+for(;;) {
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var3) /* is_ok on <var3:MapIterator[Object, nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__key]))(var3) /* key on <var3:MapIterator[Object, nullable Object]>*/;
+var_mclasstype = var5;
+var6 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__item]))(var3) /* item on <var3:MapIterator[Object, nullable Object]>*/;
+var_mclasstypes = var6;
+var7 = ((val* (*)(val*))(var_mclasstypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasstypes) /* iterator on <var_mclasstypes:Set[MType]>*/;
+for(;;) {
+var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
+if(!var8) break;
+var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
+var_element = var9;
+var10 = ((short int (*)(val*, val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_ids, var_element) /* has_key on <var_ids:HashMap[MType, Int]>*/;
+if (var10){
+goto CONTINUE_label;
+} else {
+}
+var11 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_element, var11) /* []= on <var_ids:HashMap[MType, Int]>*/;
+var12 = 1;
+{ /* Inline kernel#Int#+ (var_color,var12) */
+var15 = var_color + var12;
+var13 = var15;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
+}
+var_color = var13;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label16: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__next]))(var3) /* next on <var3:MapIterator[Object, nullable Object]>*/;
+}
+BREAK_label16: (void)0;
+var = var_ids;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#compute_ids for (self: Object, Map[MClassType, Set[MType]]): Map[MType, Int] */
+val* VIRTUAL_layout_builders__ResolutionColorer__compute_ids(val* self, val* p0) {
+val* var /* : Map[MType, Int] */;
+val* var1 /* : Map[MType, Int] */;
+var1 = layout_builders__ResolutionColorer__compute_ids(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#colorize_elements for (self: ResolutionColorer, Map[MClassType, Set[MType]]): Map[MType, Int] */
+val* layout_builders__ResolutionColorer__colorize_elements(val* self, val* p0) {
+val* var /* : Map[MType, Int] */;
+val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
+long var1 /* : Int */;
+long var_min_color /* var min_color: Int */;
+val* var2 /* : MapIterator[Object, nullable Object] */;
+short int var3 /* : Bool */;
+val* var4 /* : Object */;
+val* var_mclasstype /* var mclasstype: MClassType */;
+val* var5 /* : nullable Object */;
+val* var_mclasstypes /* var mclasstypes: Set[MType] */;
+val* var6 /* : Iterator[nullable Object] */;
+short int var7 /* : Bool */;
+val* var8 /* : nullable Object */;
+val* var_element /* var element: MType */;
+val* var9 /* : Map[MType, Int] */;
+short int var10 /* : Bool */;
+long var_color /* var color: Int */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+long var13 /* : Int */;
+long var14 /* : Int */;
+long var16 /* : Int */;
+val* var18 /* : Map[MType, Int] */;
+val* var19 /* : nullable Object */;
+val* var21 /* : Map[MType, Int] */;
+var_elements = p0;
+var1 = 0;
+var_min_color = var1;
+var2 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
+for(;;) {
+var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var2) /* is_ok on <var2:MapIterator[Object, nullable Object]>*/;
+if(!var3) break;
+var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapIterator__key]))(var2) /* key on <var2:MapIterator[Object, nullable Object]>*/;
+var_mclasstype = var4;
+var5 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapIterator__item]))(var2) /* item on <var2:MapIterator[Object, nullable Object]>*/;
+var_mclasstypes = var5;
+var6 = ((val* (*)(val*))(var_mclasstypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasstypes) /* iterator on <var_mclasstypes:Set[MType]>*/;
+for(;;) {
+var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
+if(!var7) break;
+var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
+var_element = var8;
+var9 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__coloration_result]))(self) /* coloration_result on <self:ResolutionColorer>*/;
+var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var9, var_element) /* has_key on <var9:Map[MType, Int]>*/;
+if (var10){
+goto CONTINUE_label;
+} else {
+}
+var_color = var_min_color;
+for(;;) {
+var11 = ((short int (*)(val*, val*, long))(self->class->vft[COLOR_layout_builders__ResolutionColorer__is_color_free]))(self, var_element, var_color) /* is_color_free on <self:ResolutionColorer>*/;
+var12 = !var11;
+if (!var12) break;
+var13 = 1;
+{ /* Inline kernel#Int#+ (var_color,var13) */
+var16 = var_color + var13;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+var_color = var14;
+CONTINUE_label17: (void)0;
+}
+BREAK_label17: (void)0;
+var18 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__coloration_result]))(self) /* coloration_result on <self:ResolutionColorer>*/;
+var19 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var18->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var18, var_element, var19) /* []= on <var18:Map[MType, Int]>*/;
+var_color = var_min_color;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label20: (void)0;
+((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__MapIterator__next]))(var2) /* next on <var2:MapIterator[Object, nullable Object]>*/;
+}
+BREAK_label20: (void)0;
+var21 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__coloration_result]))(self) /* coloration_result on <self:ResolutionColorer>*/;
+var = var21;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#colorize_elements for (self: Object, Map[MClassType, Set[MType]]): Map[MType, Int] */
+val* VIRTUAL_layout_builders__ResolutionColorer__colorize_elements(val* self, val* p0) {
+val* var /* : Map[MType, Int] */;
+val* var1 /* : Map[MType, Int] */;
+var1 = layout_builders__ResolutionColorer__colorize_elements(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#is_color_free for (self: ResolutionColorer, MType, Int): Bool */
+short int layout_builders__ResolutionColorer__is_color_free(val* self, val* p0, long p1) {
+short int var /* : Bool */;
+val* var_element /* var element: MType */;
+long var_color /* var color: Int */;
+val* var1 /* : Map[MType, Set[MType]] */;
+short int var2 /* : Bool */;
+val* var3 /* : Map[MType, Set[MType]] */;
+val* var4 /* : nullable Object */;
+val* var5 /* : Iterator[nullable Object] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_st /* var st: MType */;
+short int var8 /* : Bool */;
+val* var9 /* : Map[MType, Int] */;
+short int var10 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var11 /* : Map[MType, Int] */;
+val* var12 /* : nullable Object */;
+short int var13 /* : Bool */;
+short int var15 /* : Bool */;
+long var16 /* : Int */;
+short int var17 /* : Bool */;
+short int var18 /* : Bool */;
+var_element = p0;
+var_color = p1;
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_element) /* has_key on <var1:Map[MType, Set[MType]]>*/;
+if (var2){
+var3 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_element) /* [] on <var3:Map[MType, Set[MType]]>*/;
+var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:nullable Object(Set[MType])>*/;
+for(;;) {
+var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
+if(!var6) break;
+var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
+var_st = var7;
+var9 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__coloration_result]))(self) /* coloration_result on <self:ResolutionColorer>*/;
+var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var9, var_st) /* has_key on <var9:Map[MType, Int]>*/;
+var_ = var10;
+if (var10){
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__coloration_result]))(self) /* coloration_result on <self:ResolutionColorer>*/;
+var12 = ((val* (*)(val*, val*))(var11->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var11, var_st) /* [] on <var11:Map[MType, Int]>*/;
+{ /* Inline kernel#Int#== (var12,var_color) */
+var15 = (var12 != NULL) && (var12->class == &class_kernel__Int);
+if (var15) {
+var16 = ((struct instance_kernel__Int*)var12)->value; /* autounbox from nullable Object to Int */;
+var15 = (var16 == var_color);
+}
+var13 = var15;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
+}
+var8 = var13;
+} else {
+var8 = var_;
+}
+if (var8){
+var17 = 0;
+var = var17;
+goto RET_LABEL;
+} else {
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+} else {
+}
+var18 = 1;
+var = var18;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#is_color_free for (self: Object, MType, Int): Bool */
+short int VIRTUAL_layout_builders__ResolutionColorer__is_color_free(val* self, val* p0, long p1) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = layout_builders__ResolutionColorer__is_color_free(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#build_conflicts_graph for (self: ResolutionColorer, Map[MClassType, Set[MType]]) */
+void layout_builders__ResolutionColorer__build_conflicts_graph(val* self, val* p0) {
+val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
+val* var /* : MapIterator[Object, nullable Object] */;
+short int var1 /* : Bool */;
+val* var2 /* : Object */;
+val* var_mclasstype /* var mclasstype: MClassType */;
+val* var3 /* : nullable Object */;
+val* var_mtypes /* var mtypes: Set[MType] */;
+val* var4 /* : Iterator[nullable Object] */;
+short int var5 /* : Bool */;
+val* var6 /* : nullable Object */;
+val* var_mtype /* var mtype: MType */;
+val* var7 /* : Iterator[nullable Object] */;
+short int var8 /* : Bool */;
+val* var9 /* : nullable Object */;
+val* var_otype /* var otype: MType */;
+short int var10 /* : Bool */;
+var_elements = p0;
+var = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
+for(;;) {
+var1 = ((short int (*)(val*))(var->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var) /* is_ok on <var:MapIterator[Object, nullable Object]>*/;
+if(!var1) break;
+var2 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__MapIterator__key]))(var) /* key on <var:MapIterator[Object, nullable Object]>*/;
+var_mclasstype = var2;
+var3 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_collection__MapIterator__item]))(var) /* item on <var:MapIterator[Object, nullable Object]>*/;
+var_mtypes = var3;
+var4 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:Set[MType]>*/;
+for(;;) {
+var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
+if(!var5) break;
+var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
+var_mtype = var6;
+var7 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:Set[MType]>*/;
+for(;;) {
+var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var7) /* is_ok on <var7:Iterator[nullable Object]>*/;
+if(!var8) break;
+var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__item]))(var7) /* item on <var7:Iterator[nullable Object]>*/;
+var_otype = var9;
+var10 = ((short int (*)(val*, val*))(var_otype->class->vft[COLOR_kernel__Object___61d_61d]))(var_otype, var_mtype) /* == on <var_otype:MType>*/;
+if (var10){
+goto CONTINUE_label;
+} else {
+}
+((void (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__add_conflict]))(self, var_mtype, var_otype) /* add_conflict on <self:ResolutionColorer>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__Iterator__next]))(var7) /* next on <var7:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label11: (void)0;
+((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
+}
+BREAK_label11: (void)0;
+CONTINUE_label12: (void)0;
+((void (*)(val*))(var->class->vft[COLOR_abstract_collection__MapIterator__next]))(var) /* next on <var:MapIterator[Object, nullable Object]>*/;
+}
+BREAK_label12: (void)0;
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#build_conflicts_graph for (self: Object, Map[MClassType, Set[MType]]) */
+void VIRTUAL_layout_builders__ResolutionColorer__build_conflicts_graph(val* self, val* p0) {
+layout_builders__ResolutionColorer__build_conflicts_graph(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#conflicts_graph for (self: ResolutionColorer): Map[MType, Set[MType]] */
+val* layout_builders__ResolutionColorer__conflicts_graph(val* self) {
+val* var /* : Map[MType, Set[MType]] */;
+val* var1 /* : Map[MType, Set[MType]] */;
+var1 = self->attrs[COLOR_layout_builders__ResolutionColorer___64dconflicts_graph].val; /* @conflicts_graph on <self:ResolutionColorer> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @conflicts_graph", "src/layout_builders.nit", 536);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#conflicts_graph for (self: Object): Map[MType, Set[MType]] */
+val* VIRTUAL_layout_builders__ResolutionColorer__conflicts_graph(val* self) {
+val* var /* : Map[MType, Set[MType]] */;
+val* var1 /* : Map[MType, Set[MType]] */;
+var1 = layout_builders__ResolutionColorer__conflicts_graph(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionColorer#conflicts_graph= for (self: ResolutionColorer, Map[MType, Set[MType]]) */
+void layout_builders__ResolutionColorer__conflicts_graph_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__ResolutionColorer___64dconflicts_graph].val = p0; /* @conflicts_graph on <self:ResolutionColorer> */
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#conflicts_graph= for (self: Object, Map[MType, Set[MType]]) */
+void VIRTUAL_layout_builders__ResolutionColorer__conflicts_graph_61d(val* self, val* p0) {
+layout_builders__ResolutionColorer__conflicts_graph_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#add_conflict for (self: ResolutionColorer, MType, MType) */
+void layout_builders__ResolutionColorer__add_conflict(val* self, val* p0, val* p1) {
+val* var_mtype /* var mtype: MType */;
+val* var_otype /* var otype: MType */;
+short int var /* : Bool */;
+val* var1 /* : Map[MType, Set[MType]] */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var4 /* : Map[MType, Set[MType]] */;
+val* var5 /* : HashSet[MType] */;
+val* var6 /* : Map[MType, Set[MType]] */;
+val* var7 /* : nullable Object */;
+val* var8 /* : Map[MType, Set[MType]] */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+val* var11 /* : Map[MType, Set[MType]] */;
+val* var12 /* : HashSet[MType] */;
+val* var13 /* : Map[MType, Set[MType]] */;
+val* var14 /* : nullable Object */;
+var_mtype = p0;
+var_otype = p1;
+var = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var_otype) /* == on <var_mtype:MType>*/;
+if (var){
+goto RET_LABEL;
+} else {
+}
+var1 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var1, var_mtype) /* has_key on <var1:Map[MType, Set[MType]]>*/;
+var3 = !var2;
+if (var3){
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var5 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
+((void (*)(val*))(var5->class->vft[COLOR_hash_collection__HashSet__init]))(var5) /* init on <var5:HashSet[MType]>*/;
+CHECK_NEW_hash_collection__HashSet(var5);
+((void (*)(val*, val*, val*))(var4->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var4, var_mtype, var5) /* []= on <var4:Map[MType, Set[MType]]>*/;
+} else {
+}
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var6, var_mtype) /* [] on <var6:Map[MType, Set[MType]]>*/;
+((void (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var7, var_otype) /* add on <var7:nullable Object(Set[MType])>*/;
+var8 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var8, var_otype) /* has_key on <var8:Map[MType, Set[MType]]>*/;
+var10 = !var9;
+if (var10){
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var12 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
+((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashSet__init]))(var12) /* init on <var12:HashSet[MType]>*/;
+CHECK_NEW_hash_collection__HashSet(var12);
+((void (*)(val*, val*, val*))(var11->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var11, var_otype, var12) /* []= on <var11:Map[MType, Set[MType]]>*/;
+} else {
+}
+var13 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__ResolutionColorer__conflicts_graph]))(self) /* conflicts_graph on <self:ResolutionColorer>*/;
+var14 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var_otype) /* [] on <var13:Map[MType, Set[MType]]>*/;
+((void (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var14, var_mtype) /* add on <var14:nullable Object(Set[MType])>*/;
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionColorer#add_conflict for (self: Object, MType, MType) */
+void VIRTUAL_layout_builders__ResolutionColorer__add_conflict(val* self, val* p0, val* p1) {
+layout_builders__ResolutionColorer__add_conflict(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#PerfectHasher#operator for (self: PerfectHasher[Object, Object]): PHOperator */
+val* layout_builders__PerfectHasher__operator(val* self) {
+val* var /* : PHOperator */;
+val* var1 /* : PHOperator */;
+var1 = self->attrs[COLOR_layout_builders__PerfectHasher___64doperator].val; /* @operator on <self:PerfectHasher[Object, Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @operator", "src/layout_builders.nit", 552);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PerfectHasher#operator for (self: Object): PHOperator */
+val* VIRTUAL_layout_builders__PerfectHasher__operator(val* self) {
+val* var /* : PHOperator */;
+val* var1 /* : PHOperator */;
+var1 = layout_builders__PerfectHasher__operator(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PerfectHasher#operator= for (self: PerfectHasher[Object, Object], PHOperator) */
+void layout_builders__PerfectHasher__operator_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__PerfectHasher___64doperator].val = p0; /* @operator on <self:PerfectHasher[Object, Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#PerfectHasher#operator= for (self: Object, PHOperator) */
+void VIRTUAL_layout_builders__PerfectHasher__operator_61d(val* self, val* p0) {
+layout_builders__PerfectHasher__operator_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#PerfectHasher#init for (self: PerfectHasher[Object, Object]) */
+void layout_builders__PerfectHasher__init(val* self) {
+RET_LABEL:;
+}
+/* method layout_builders#PerfectHasher#init for (self: Object) */
+void VIRTUAL_layout_builders__PerfectHasher__init(val* self) {
+layout_builders__PerfectHasher__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#PerfectHasher#compute_masks for (self: PerfectHasher[Object, Object], Map[Object, Set[Object]], Map[Object, Int]): Map[Object, Int] */
+val* layout_builders__PerfectHasher__compute_masks(val* self, val* p0, val* p1) {
+val* var /* : Map[Object, Int] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+short int var2 /* : Bool */;
+int cltype3;
+int idtype4;
+const struct type* type_struct5;
+val* var_conflicts /* var conflicts: Map[Object, Set[Object]] */;
+val* var_ids /* var ids: Map[Object, Int] */;
+val* var6 /* : HashMap[Object, Int] */;
+val* var_masks /* var masks: HashMap[Object, Int] */;
+val* var7 /* : MapIterator[Object, nullable Object] */;
+short int var8 /* : Bool */;
+val* var9 /* : Object */;
+val* var_mclasstype /* var mclasstype: Object */;
+val* var10 /* : nullable Object */;
+val* var_mtypes /* var mtypes: Set[Object] */;
+long var11 /* : Int */;
+val* var12 /* : nullable Object */;
+/* Covariant cast for argument 0 (conflicts) <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
+/* <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0abstract_collection__Setlayout_builders__PerfectHasher_FT1];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 556);
+exit(1);
+}
+/* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
+/* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
+type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int];
+cltype3 = type_struct5->color;
+idtype4 = type_struct5->id;
+if(cltype3 >= p1->type->table_size) {
+var2 = 0;
+} else {
+var2 = p1->type->type_table[cltype3] == idtype4;
+}
+if (!var2) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 556);
+exit(1);
+}
+var_conflicts = p0;
+var_ids = p1;
+var6 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT0kernel__Int]);
+((void (*)(val*))(var6->class->vft[COLOR_hash_collection__HashMap__init]))(var6) /* init on <var6:HashMap[Object, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var6);
+var_masks = var6;
+var7 = ((val* (*)(val*))(var_conflicts->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_conflicts) /* iterator on <var_conflicts:Map[Object, Set[Object]]>*/;
+for(;;) {
+var8 = ((short int (*)(val*))(var7->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var7) /* is_ok on <var7:MapIterator[Object, nullable Object]>*/;
+if(!var8) break;
+var9 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__MapIterator__key]))(var7) /* key on <var7:MapIterator[Object, nullable Object]>*/;
+var_mclasstype = var9;
+var10 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__MapIterator__item]))(var7) /* item on <var7:MapIterator[Object, nullable Object]>*/;
+var_mtypes = var10;
+var11 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__compute_mask]))(self, var_mtypes, var_ids) /* compute_mask on <self:PerfectHasher[Object, Object]>*/;
+var12 = BOX_kernel__Int(var11); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_masks->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_masks, var_mclasstype, var12) /* []= on <var_masks:HashMap[Object, Int]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var7->class->vft[COLOR_abstract_collection__MapIterator__next]))(var7) /* next on <var7:MapIterator[Object, nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var = var_masks;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PerfectHasher#compute_masks for (self: Object, Map[Object, Set[Object]], Map[Object, Int]): Map[Object, Int] */
+val* VIRTUAL_layout_builders__PerfectHasher__compute_masks(val* self, val* p0, val* p1) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__PerfectHasher__compute_masks(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PerfectHasher#compute_mask for (self: PerfectHasher[Object, Object], Set[Object], Map[Object, Int]): Int */
+long layout_builders__PerfectHasher__compute_mask(val* self, val* p0, val* p1) {
+long var /* : Int */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+short int var2 /* : Bool */;
+int cltype3;
+int idtype4;
+const struct type* type_struct5;
+val* var_mtypes /* var mtypes: Set[Object] */;
+val* var_ids /* var ids: Map[Object, Int] */;
+long var6 /* : Int */;
+long var_mask /* var mask: Int */;
+val* var7 /* : List[Int] */;
+val* var_used /* var used: List[Int] */;
+val* var8 /* : Iterator[nullable Object] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_mtype /* var mtype: Object */;
+val* var11 /* : PHOperator */;
+val* var12 /* : nullable Object */;
+long var13 /* : Int */;
+long var14 /* : Int */;
+long var_res /* var res: Int */;
+short int var15 /* : Bool */;
+val* var16 /* : nullable Object */;
+val* var17 /* : nullable Object */;
+long var18 /* : Int */;
+long var19 /* : Int */;
+short int var20 /* : Bool */;
+short int var22 /* : Bool */;
+long var24 /* : Int */;
+long var25 /* : Int */;
+long var27 /* : Int */;
+/* Covariant cast for argument 0 (mtypes) <p0:Set[Object]> isa Set[PerfectHasher#1] */
+/* <p0:Set[Object]> isa Set[PerfectHasher#1] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__PerfectHasher_FT1];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 565);
+exit(1);
+}
+/* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
+/* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
+type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int];
+cltype3 = type_struct5->color;
+idtype4 = type_struct5->id;
+if(cltype3 >= p1->type->table_size) {
+var2 = 0;
+} else {
+var2 = p1->type->type_table[cltype3] == idtype4;
+}
+if (!var2) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 565);
+exit(1);
+}
+var_mtypes = p0;
+var_ids = p1;
+var6 = 0;
+var_mask = var6;
+for(;;) {
+var7 = NEW_list__List(&type_list__Listkernel__Int);
+((void (*)(val*))(var7->class->vft[COLOR_list__List__init]))(var7) /* init on <var7:List[Int]>*/;
+CHECK_NEW_list__List(var7);
+var_used = var7;
+var8 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:Set[Object]>*/;
+for(;;) {
+var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
+if(!var9) break;
+var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
+var_mtype = var10;
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__operator]))(self) /* operator on <self:PerfectHasher[Object, Object]>*/;
+var12 = ((val* (*)(val*, val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_ids, var_mtype) /* [] on <var_ids:Map[Object, Int]>*/;
+var14 = ((struct instance_kernel__Int*)var12)->value; /* autounbox from nullable Object to Int */;
+var13 = ((long (*)(val*, long, long))(var11->class->vft[COLOR_layout_builders__PHOperator__op]))(var11, var_mask, var14) /* op on <var11:PHOperator>*/;
+var_res = var13;
+var16 = BOX_kernel__Int(var_res); /* autobox from Int to nullable Object */
+var15 = ((short int (*)(val*, val*))(var_used->class->vft[COLOR_abstract_collection__Collection__has]))(var_used, var16) /* has on <var_used:List[Int]>*/;
+if (var15){
+goto BREAK_label;
+} else {
+var17 = BOX_kernel__Int(var_res); /* autobox from Int to nullable Object */
+((void (*)(val*, val*))(var_used->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_used, var17) /* add on <var_used:List[Int]>*/;
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var18 = ((long (*)(val*))(var_used->class->vft[COLOR_abstract_collection__Collection__length]))(var_used) /* length on <var_used:List[Int]>*/;
+var19 = ((long (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__length]))(var_mtypes) /* length on <var_mtypes:Set[Object]>*/;
+{ /* Inline kernel#Int#== (var18,var19) */
+var22 = var18 == var19;
+var20 = var22;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
+}
+if (var20){
+goto BREAK_label23;
+} else {
+}
+var24 = 1;
+{ /* Inline kernel#Int#+ (var_mask,var24) */
+var27 = var_mask + var24;
+var25 = var27;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
+}
+var_mask = var25;
+CONTINUE_label23: (void)0;
+}
+BREAK_label23: (void)0;
+var = var_mask;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PerfectHasher#compute_mask for (self: Object, Set[Object], Map[Object, Int]): Int */
+long VIRTUAL_layout_builders__PerfectHasher__compute_mask(val* self, val* p0, val* p1) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = layout_builders__PerfectHasher__compute_mask(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PerfectHasher#compute_hashes for (self: PerfectHasher[Object, Object], Map[Object, Set[Object]], Map[Object, Int], Map[Object, Int]): Map[Object, Map[Object, Int]] */
+val* layout_builders__PerfectHasher__compute_hashes(val* self, val* p0, val* p1, val* p2) {
+val* var /* : Map[Object, Map[Object, Int]] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+short int var2 /* : Bool */;
+int cltype3;
+int idtype4;
+const struct type* type_struct5;
+short int var6 /* : Bool */;
+int cltype7;
+int idtype8;
+const struct type* type_struct9;
+val* var_elements /* var elements: Map[Object, Set[Object]] */;
+val* var_ids /* var ids: Map[Object, Int] */;
+val* var_masks /* var masks: Map[Object, Int] */;
+val* var10 /* : HashMap[Object, Map[Object, Int]] */;
+val* var_hashes /* var hashes: HashMap[Object, Map[Object, Int]] */;
+val* var11 /* : MapIterator[Object, nullable Object] */;
+short int var12 /* : Bool */;
+val* var13 /* : Object */;
+val* var_mclasstype /* var mclasstype: Object */;
+val* var14 /* : nullable Object */;
+val* var_mtypes /* var mtypes: Set[Object] */;
+val* var15 /* : nullable Object */;
+long var16 /* : Int */;
+long var_mask /* var mask: Int */;
+val* var17 /* : HashMap[Object, Int] */;
+val* var_inhashes /* var inhashes: HashMap[Object, Int] */;
+val* var18 /* : Iterator[nullable Object] */;
+short int var19 /* : Bool */;
+val* var20 /* : nullable Object */;
+val* var_mtype /* var mtype: Object */;
+val* var21 /* : PHOperator */;
+val* var22 /* : nullable Object */;
+long var23 /* : Int */;
+long var24 /* : Int */;
+val* var25 /* : nullable Object */;
+/* Covariant cast for argument 0 (elements) <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
+/* <p0:Map[Object, Set[Object]]> isa Map[PerfectHasher#0, Set[PerfectHasher#1]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0abstract_collection__Setlayout_builders__PerfectHasher_FT1];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 583);
+exit(1);
+}
+/* Covariant cast for argument 1 (ids) <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
+/* <p1:Map[Object, Int]> isa Map[PerfectHasher#1, Int] */
+type_struct5 = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int];
+cltype3 = type_struct5->color;
+idtype4 = type_struct5->id;
+if(cltype3 >= p1->type->table_size) {
+var2 = 0;
+} else {
+var2 = p1->type->type_table[cltype3] == idtype4;
+}
+if (!var2) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 583);
+exit(1);
+}
+/* Covariant cast for argument 2 (masks) <p2:Map[Object, Int]> isa Map[PerfectHasher#0, Int] */
+/* <p2:Map[Object, Int]> isa Map[PerfectHasher#0, Int] */
+type_struct9 = self->type->resolution_table->types[COLOR_abstract_collection__Maplayout_builders__PerfectHasher_FT0kernel__Int];
+cltype7 = type_struct9->color;
+idtype8 = type_struct9->id;
+if(cltype7 >= p2->type->table_size) {
+var6 = 0;
+} else {
+var6 = p2->type->type_table[cltype7] == idtype8;
+}
+if (!var6) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 583);
+exit(1);
+}
+var_elements = p0;
+var_ids = p1;
+var_masks = p2;
+var10 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT0abstract_collection__Maplayout_builders__PerfectHasher_FT1kernel__Int]);
+((void (*)(val*))(var10->class->vft[COLOR_hash_collection__HashMap__init]))(var10) /* init on <var10:HashMap[Object, Map[Object, Int]]>*/;
+CHECK_NEW_hash_collection__HashMap(var10);
+var_hashes = var10;
+var11 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[Object, Set[Object]]>*/;
+for(;;) {
+var12 = ((short int (*)(val*))(var11->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var11) /* is_ok on <var11:MapIterator[Object, nullable Object]>*/;
+if(!var12) break;
+var13 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__MapIterator__key]))(var11) /* key on <var11:MapIterator[Object, nullable Object]>*/;
+var_mclasstype = var13;
+var14 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__MapIterator__item]))(var11) /* item on <var11:MapIterator[Object, nullable Object]>*/;
+var_mtypes = var14;
+var15 = ((val* (*)(val*, val*))(var_masks->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_masks, var_mclasstype) /* [] on <var_masks:Map[Object, Int]>*/;
+var16 = ((struct instance_kernel__Int*)var15)->value; /* autounbox from nullable Object to Int */;
+var_mask = var16;
+var17 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__PerfectHasher_FT1kernel__Int]);
+((void (*)(val*))(var17->class->vft[COLOR_hash_collection__HashMap__init]))(var17) /* init on <var17:HashMap[Object, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var17);
+var_inhashes = var17;
+var18 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:Set[Object]>*/;
+for(;;) {
+var19 = ((short int (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var18) /* is_ok on <var18:Iterator[nullable Object]>*/;
+if(!var19) break;
+var20 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__item]))(var18) /* item on <var18:Iterator[nullable Object]>*/;
+var_mtype = var20;
+var21 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__operator]))(self) /* operator on <self:PerfectHasher[Object, Object]>*/;
+var22 = ((val* (*)(val*, val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_ids, var_mtype) /* [] on <var_ids:Map[Object, Int]>*/;
+var24 = ((struct instance_kernel__Int*)var22)->value; /* autounbox from nullable Object to Int */;
+var23 = ((long (*)(val*, long, long))(var21->class->vft[COLOR_layout_builders__PHOperator__op]))(var21, var_mask, var24) /* op on <var21:PHOperator>*/;
+var25 = BOX_kernel__Int(var23); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_inhashes->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_inhashes, var_mtype, var25) /* []= on <var_inhashes:HashMap[Object, Int]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var18->class->vft[COLOR_abstract_collection__Iterator__next]))(var18) /* next on <var18:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+((void (*)(val*, val*, val*))(var_hashes->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_hashes, var_mclasstype, var_inhashes) /* []= on <var_hashes:HashMap[Object, Map[Object, Int]]>*/;
+CONTINUE_label26: (void)0;
+((void (*)(val*))(var11->class->vft[COLOR_abstract_collection__MapIterator__next]))(var11) /* next on <var11:MapIterator[Object, nullable Object]>*/;
+}
+BREAK_label26: (void)0;
+var = var_hashes;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PerfectHasher#compute_hashes for (self: Object, Map[Object, Set[Object]], Map[Object, Int], Map[Object, Int]): Map[Object, Map[Object, Int]] */
+val* VIRTUAL_layout_builders__PerfectHasher__compute_hashes(val* self, val* p0, val* p1, val* p2) {
+val* var /* : Map[Object, Map[Object, Int]] */;
+val* var1 /* : Map[Object, Map[Object, Int]] */;
+var1 = layout_builders__PerfectHasher__compute_hashes(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHOperator#op for (self: PHOperator, Int, Int): Int */
+long layout_builders__PHOperator__op(val* self, long p0, long p1) {
+long var /* : Int */;
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/layout_builders.nit", 600);
+exit(1);
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHOperator#op for (self: Object, Int, Int): Int */
+long VIRTUAL_layout_builders__PHOperator__op(val* self, long p0, long p1) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = layout_builders__PHOperator__op(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHOperator#init for (self: PHOperator) */
+void layout_builders__PHOperator__init(val* self) {
+RET_LABEL:;
+}
+/* method layout_builders#PHOperator#init for (self: Object) */
+void VIRTUAL_layout_builders__PHOperator__init(val* self) {
+layout_builders__PHOperator__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#PHModOperator#init for (self: PHModOperator) */
+void layout_builders__PHModOperator__init(val* self) {
+((void (*)(val*))(self->class->vft[COLOR_layout_builders__PHOperator__init]))(self) /* init on <self:PHModOperator>*/;
+RET_LABEL:;
+}
+/* method layout_builders#PHModOperator#init for (self: Object) */
+void VIRTUAL_layout_builders__PHModOperator__init(val* self) {
+layout_builders__PHModOperator__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#PHModOperator#op for (self: PHModOperator, Int, Int): Int */
+long layout_builders__PHModOperator__op(val* self, long p0, long p1) {
+long var /* : Int */;
+long var_mask /* var mask: Int */;
+long var_id /* var id: Int */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+var_mask = p0;
+var_id = p1;
+{ /* Inline kernel#Int#% (var_mask,var_id) */
+var3 = var_mask % var_id;
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHModOperator#op for (self: Object, Int, Int): Int */
+long VIRTUAL_layout_builders__PHModOperator__op(val* self, long p0, long p1) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = layout_builders__PHModOperator__op(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHAndOperator#init for (self: PHAndOperator) */
+void layout_builders__PHAndOperator__init(val* self) {
+((void (*)(val*))(self->class->vft[COLOR_layout_builders__PHOperator__init]))(self) /* init on <self:PHAndOperator>*/;
+RET_LABEL:;
+}
+/* method layout_builders#PHAndOperator#init for (self: Object) */
+void VIRTUAL_layout_builders__PHAndOperator__init(val* self) {
+layout_builders__PHAndOperator__init(self);
+RET_LABEL:;
+}
+/* method layout_builders#PHAndOperator#op for (self: PHAndOperator, Int, Int): Int */
+long layout_builders__PHAndOperator__op(val* self, long p0, long p1) {
+long var /* : Int */;
+long var_mask /* var mask: Int */;
+long var_id /* var id: Int */;
+long var1 /* : Int */;
+var_mask = p0;
+var_id = p1;
+var1 = math__Int__bin_and(var_mask, var_id);
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#PHAndOperator#op for (self: Object, Int, Int): Int */
+long VIRTUAL_layout_builders__PHAndOperator__op(val* self, long p0, long p1) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = layout_builders__PHAndOperator__op(self, p0, p1);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#mmodule for (self: TypingHasher[Object]): MModule */
+val* layout_builders__TypingHasher__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = self->attrs[COLOR_layout_builders__TypingHasher___64dmmodule].val; /* @mmodule on <self:TypingHasher[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 625);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#mmodule for (self: Object): MModule */
+val* VIRTUAL_layout_builders__TypingHasher__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = layout_builders__TypingHasher__mmodule(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#mmodule= for (self: TypingHasher[Object], MModule) */
+void layout_builders__TypingHasher__mmodule_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__TypingHasher___64dmmodule].val = p0; /* @mmodule on <self:TypingHasher[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#mmodule= for (self: Object, MModule) */
+void VIRTUAL_layout_builders__TypingHasher__mmodule_61d(val* self, val* p0) {
+layout_builders__TypingHasher__mmodule_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#poset_builder for (self: TypingHasher[Object]): POSetBuilder[Object] */
+val* layout_builders__TypingHasher__poset_builder(val* self) {
+val* var /* : POSetBuilder[Object] */;
+val* var1 /* : POSetBuilder[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingHasher___64dposet_builder].val; /* @poset_builder on <self:TypingHasher[Object]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @poset_builder", "src/layout_builders.nit", 626);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#poset_builder for (self: Object): POSetBuilder[Object] */
+val* VIRTUAL_layout_builders__TypingHasher__poset_builder(val* self) {
+val* var /* : POSetBuilder[Object] */;
+val* var1 /* : POSetBuilder[Object] */;
+var1 = layout_builders__TypingHasher__poset_builder(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#poset_builder= for (self: TypingHasher[Object], POSetBuilder[Object]) */
+void layout_builders__TypingHasher__poset_builder_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (poset_builder) <p0:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
+/* <p0:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__POSetBuilderlayout_builders__TypingHasher_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 626);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingHasher___64dposet_builder].val = p0; /* @poset_builder on <self:TypingHasher[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#poset_builder= for (self: Object, POSetBuilder[Object]) */
+void VIRTUAL_layout_builders__TypingHasher__poset_builder_61d(val* self, val* p0) {
+layout_builders__TypingHasher__poset_builder_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#poset_cache for (self: TypingHasher[Object]): nullable POSet[Object] */
+val* layout_builders__TypingHasher__poset_cache(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = self->attrs[COLOR_layout_builders__TypingHasher___64dposet_cache].val; /* @poset_cache on <self:TypingHasher[Object]> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#poset_cache for (self: Object): nullable POSet[Object] */
+val* VIRTUAL_layout_builders__TypingHasher__poset_cache(val* self) {
+val* var /* : nullable POSet[Object] */;
+val* var1 /* : nullable POSet[Object] */;
+var1 = layout_builders__TypingHasher__poset_cache(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#poset_cache= for (self: TypingHasher[Object], nullable POSet[Object]) */
+void layout_builders__TypingHasher__poset_cache_61d(val* self, val* p0) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+/* Covariant cast for argument 0 (poset_cache) <p0:nullable POSet[Object]> isa nullable POSet[TypingHasher#0] */
+/* <p0:nullable POSet[Object]> isa nullable POSet[TypingHasher#0] */
+type_struct = self->type->resolution_table->types[COLOR_poset__POSetlayout_builders__TypingHasher_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(p0 == NULL) {
+var = 1;
+} else {
+if(cltype >= p0->type->table_size) {
+var = 0;
+} else {
+var = p0->type->type_table[cltype] == idtype;
+}
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 627);
+exit(1);
+}
+self->attrs[COLOR_layout_builders__TypingHasher___64dposet_cache].val = p0; /* @poset_cache on <self:TypingHasher[Object]> */
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#poset_cache= for (self: Object, nullable POSet[Object]) */
+void VIRTUAL_layout_builders__TypingHasher__poset_cache_61d(val* self, val* p0) {
+layout_builders__TypingHasher__poset_cache_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#init for (self: TypingHasher[Object], MModule, POSetBuilder[Object], PHOperator) */
+void layout_builders__TypingHasher__init(val* self, val* p0, val* p1, val* p2) {
+short int var /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_poset_builder /* var poset_builder: POSetBuilder[Object] */;
+val* var_operator /* var operator: PHOperator */;
+/* Covariant cast for argument 1 (poset_builder) <p1:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
+/* <p1:POSetBuilder[Object]> isa POSetBuilder[TypingHasher#0] */
+type_struct = self->type->resolution_table->types[COLOR_layout_builders__POSetBuilderlayout_builders__TypingHasher_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p1->type->table_size) {
+var = 0;
+} else {
+var = p1->type->type_table[cltype] == idtype;
+}
+if (!var) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 629);
+exit(1);
+}
+var_mmodule = p0;
+var_poset_builder = p1;
+var_operator = p2;
+((void (*)(val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__init]))(self) /* init on <self:TypingHasher[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__operator_61d]))(self, var_operator) /* operator= on <self:TypingHasher[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingHasher__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:TypingHasher[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingHasher__poset_builder_61d]))(self, var_poset_builder) /* poset_builder= on <self:TypingHasher[Object]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#init for (self: Object, MModule, POSetBuilder[Object], PHOperator) */
+void VIRTUAL_layout_builders__TypingHasher__init(val* self, val* p0, val* p1, val* p2) {
+layout_builders__TypingHasher__init(self, p0, p1, p2);
+RET_LABEL:;
+}
+/* method layout_builders#TypingHasher#build_layout for (self: TypingHasher[Object], Set[Object]): PHLayout[Object, Object] */
+val* layout_builders__TypingHasher__build_layout(val* self, val* p0) {
+val* var /* : PHLayout[Object, Object] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : POSetBuilder[Object] */;
+val* var3 /* : POSet[Object] */;
+val* var4 /* : PHLayout[Object, Object] */;
+val* var_result /* var result: PHLayout[Object, Object] */;
+val* var5 /* : Map[Object, Set[Object]] */;
+val* var_conflicts /* var conflicts: Map[Object, Set[Object]] */;
+val* var6 /* : Map[Object, Int] */;
+val* var7 /* : Map[Object, Int] */;
+val* var8 /* : Map[Object, Int] */;
+val* var9 /* : Map[Object, Int] */;
+val* var10 /* : Map[Object, Int] */;
+val* var11 /* : Map[Object, Map[Object, Int]] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingHasher#0] */
+/* <p0:Set[Object]> isa Set[TypingHasher#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingHasher_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 635);
+exit(1);
+}
+var_elements = p0;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingHasher__poset_builder]))(self) /* poset_builder on <self:TypingHasher[Object]>*/;
+var3 = ((val* (*)(val*, val*))(var2->class->vft[COLOR_layout_builders__POSetBuilder__build_poset]))(var2, var_elements) /* build_poset on <var2:POSetBuilder[Object]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingHasher__poset_cache_61d]))(self, var3) /* poset_cache= on <self:TypingHasher[Object]>*/;
+var4 = NEW_layout_builders__PHLayout(self->type->resolution_table->types[COLOR_layout_builders__PHLayoutlayout_builders__TypingHasher_FT0layout_builders__TypingHasher_FT0]);
+((void (*)(val*))(var4->class->vft[COLOR_layout_builders__PHLayout__init]))(var4) /* init on <var4:PHLayout[Object, Object]>*/;
+CHECK_NEW_layout_builders__PHLayout(var4);
+var_result = var4;
+var5 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__TypingHasher__build_conflicts]))(self, var_elements) /* build_conflicts on <self:TypingHasher[Object]>*/;
+var_conflicts = var5;
+var6 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingHasher__compute_ids]))(self) /* compute_ids on <self:TypingHasher[Object]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids_61d]))(var_result, var6) /* ids= on <var_result:PHLayout[Object, Object]>*/;
+var7 = ((val* (*)(val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids]))(var_result) /* ids on <var_result:PHLayout[Object, Object]>*/;
+var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__compute_masks]))(self, var_conflicts, var7) /* compute_masks on <self:TypingHasher[Object]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__masks_61d]))(var_result, var8) /* masks= on <var_result:PHLayout[Object, Object]>*/;
+var9 = ((val* (*)(val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids]))(var_result) /* ids on <var_result:PHLayout[Object, Object]>*/;
+var10 = ((val* (*)(val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__masks]))(var_result) /* masks on <var_result:PHLayout[Object, Object]>*/;
+var11 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__compute_hashes]))(self, var_conflicts, var9, var10) /* compute_hashes on <self:TypingHasher[Object]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__hashes_61d]))(var_result, var11) /* hashes= on <var_result:PHLayout[Object, Object]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#build_layout for (self: Object, Set[Object]): Layout[Object] */
+val* VIRTUAL_layout_builders__TypingHasher__build_layout(val* self, val* p0) {
+val* var /* : Layout[Object] */;
+val* var1 /* : PHLayout[Object, Object] */;
+var1 = layout_builders__TypingHasher__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#compute_ids for (self: TypingHasher[Object]): Map[Object, Int] */
+val* layout_builders__TypingHasher__compute_ids(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : HashMap[Object, Int] */;
+val* var_ids /* var ids: HashMap[Object, Int] */;
+val* var2 /* : nullable POSet[Object] */;
+val* var3 /* : Array[nullable Object] */;
+val* var_lin /* var lin: Array[Object] */;
+val* var4 /* : nullable POSet[Object] */;
+val* var5 /* : Iterator[nullable Object] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_e /* var e: Object */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+long var10 /* : Int */;
+long var12 /* : Int */;
+val* var13 /* : nullable Object */;
+var1 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__TypingHasher_FT0kernel__Int]);
+((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[Object, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var1);
+var_ids = var1;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingHasher[Object]>*/;
+if (var2 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 648);
+exit(1);
+} else {
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_array__Collection__to_a]))(var2) /* to_a on <var2:nullable POSet[Object]>*/;
+}
+var_lin = var3;
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingHasher[Object]>*/;
+if (var4 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 649);
+exit(1);
+} else {
+((void (*)(val*, val*))(var4->class->vft[COLOR_sorter__AbstractSorter__sort]))(var4, var_lin) /* sort on <var4:nullable POSet[Object]>*/;
+}
+var5 = ((val* (*)(val*))(var_lin->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_lin) /* iterator on <var_lin:Array[Object]>*/;
+for(;;) {
+var6 = ((short int (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var5) /* is_ok on <var5:Iterator[nullable Object]>*/;
+if(!var6) break;
+var7 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__item]))(var5) /* item on <var5:Iterator[nullable Object]>*/;
+var_e = var7;
+var8 = ((long (*)(val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__length]))(var_ids) /* length on <var_ids:HashMap[Object, Int]>*/;
+var9 = 1;
+{ /* Inline kernel#Int#+ (var8,var9) */
+var12 = var8 + var9;
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var13 = BOX_kernel__Int(var10); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_e, var13) /* []= on <var_ids:HashMap[Object, Int]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var5->class->vft[COLOR_abstract_collection__Iterator__next]))(var5) /* next on <var5:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var = var_ids;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#compute_ids for (self: Object): Map[Object, Int] */
+val* VIRTUAL_layout_builders__TypingHasher__compute_ids(val* self) {
+val* var /* : Map[Object, Int] */;
+val* var1 /* : Map[Object, Int] */;
+var1 = layout_builders__TypingHasher__compute_ids(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#build_conflicts for (self: TypingHasher[Object], Set[Object]): Map[Object, Set[Object]] */
+val* layout_builders__TypingHasher__build_conflicts(val* self, val* p0) {
+val* var /* : Map[Object, Set[Object]] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Set[Object] */;
+val* var2 /* : HashMap[Object, Set[Object]] */;
+val* var_conflicts /* var conflicts: HashMap[Object, Set[Object]] */;
+val* var3 /* : Iterator[nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_e /* var e: Object */;
+val* var6 /* : HashSet[Object] */;
+val* var_supers /* var supers: HashSet[Object] */;
+val* var7 /* : nullable POSet[Object] */;
+val* var8 /* : POSetElement[Object] */;
+val* var9 /* : Collection[Object] */;
+/* Covariant cast for argument 0 (elements) <p0:Set[Object]> isa Set[TypingHasher#0] */
+/* <p0:Set[Object]> isa Set[TypingHasher#0] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Setlayout_builders__TypingHasher_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 656);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__TypingHasher_FT0abstract_collection__Setlayout_builders__TypingHasher_FT0]);
+((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[Object, Set[Object]]>*/;
+CHECK_NEW_hash_collection__HashMap(var2);
+var_conflicts = var2;
+var3 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_elements) /* iterator on <var_elements:Set[Object]>*/;
+for(;;) {
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
+var_e = var5;
+var6 = NEW_hash_collection__HashSet(self->type->resolution_table->types[COLOR_hash_collection__HashSetlayout_builders__TypingHasher_FT0]);
+((void (*)(val*))(var6->class->vft[COLOR_hash_collection__HashSet__init]))(var6) /* init on <var6:HashSet[Object]>*/;
+CHECK_NEW_hash_collection__HashSet(var6);
+var_supers = var6;
+var7 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(self) /* poset on <self:TypingHasher[Object]>*/;
+if (var7 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/layout_builders.nit", 660);
+exit(1);
+} else {
+var8 = ((val* (*)(val*, val*))(var7->class->vft[COLOR_poset__POSet___91d_93d]))(var7, var_e) /* [] on <var7:nullable POSet[Object]>*/;
+}
+var9 = ((val* (*)(val*))(var8->class->vft[COLOR_poset__POSetElement__greaters]))(var8) /* greaters on <var8:POSetElement[Object]>*/;
+((void (*)(val*, val*))(var_supers->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_supers, var9) /* add_all on <var_supers:HashSet[Object]>*/;
+((void (*)(val*, val*))(var_supers->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supers, var_e) /* add on <var_supers:HashSet[Object]>*/;
+((void (*)(val*, val*, val*))(var_conflicts->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_conflicts, var_e, var_supers) /* []= on <var_conflicts:HashMap[Object, Set[Object]]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var = var_conflicts;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#TypingHasher#build_conflicts for (self: Object, Set[Object]): Map[Object, Set[Object]] */
+val* VIRTUAL_layout_builders__TypingHasher__build_conflicts(val* self, val* p0) {
+val* var /* : Map[Object, Set[Object]] */;
+val* var1 /* : Map[Object, Set[Object]] */;
+var1 = layout_builders__TypingHasher__build_conflicts(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MTypeHasher#init for (self: MTypeHasher, PHOperator, MModule) */
+void layout_builders__MTypeHasher__init(val* self, val* p0, val* p1) {
+val* var_operator /* var operator: PHOperator */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MTypePOSetBuilder */;
+var_operator = p0;
+var_mmodule = p1;
+var = NEW_layout_builders__MTypePOSetBuilder(&type_layout_builders__MTypePOSetBuilder);
+((void (*)(val*, val*))(var->class->vft[COLOR_layout_builders__POSetBuilder__init]))(var, var_mmodule) /* init on <var:MTypePOSetBuilder>*/;
+CHECK_NEW_layout_builders__MTypePOSetBuilder(var);
+((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_layout_builders__TypingHasher__init]))(self, var_mmodule, var, var_operator) /* init on <self:MTypeHasher>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MTypeHasher#init for (self: Object, PHOperator, MModule) */
+void VIRTUAL_layout_builders__MTypeHasher__init(val* self, val* p0, val* p1) {
+layout_builders__MTypeHasher__init(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#MClassHasher#init for (self: MClassHasher, PHOperator, MModule) */
+void layout_builders__MClassHasher__init(val* self, val* p0, val* p1) {
+val* var_operator /* var operator: PHOperator */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var /* : MClassPOSetBuilder */;
+var_operator = p0;
+var_mmodule = p1;
+var = NEW_layout_builders__MClassPOSetBuilder(&type_layout_builders__MClassPOSetBuilder);
+((void (*)(val*, val*))(var->class->vft[COLOR_layout_builders__POSetBuilder__init]))(var, var_mmodule) /* init on <var:MClassPOSetBuilder>*/;
+CHECK_NEW_layout_builders__MClassPOSetBuilder(var);
+((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_layout_builders__TypingHasher__init]))(self, var_mmodule, var, var_operator) /* init on <self:MClassHasher>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MClassHasher#init for (self: Object, PHOperator, MModule) */
+void VIRTUAL_layout_builders__MClassHasher__init(val* self, val* p0, val* p1) {
+layout_builders__MClassHasher__init(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyHasher#mmodule for (self: MPropertyHasher[PropertyLayoutElement]): MModule */
+val* layout_builders__MPropertyHasher__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = self->attrs[COLOR_layout_builders__MPropertyHasher___64dmmodule].val; /* @mmodule on <self:MPropertyHasher[PropertyLayoutElement]> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mmodule", "src/layout_builders.nit", 685);
+exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyHasher#mmodule for (self: Object): MModule */
+val* VIRTUAL_layout_builders__MPropertyHasher__mmodule(val* self) {
+val* var /* : MModule */;
+val* var1 /* : MModule */;
+var1 = layout_builders__MPropertyHasher__mmodule(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyHasher#mmodule= for (self: MPropertyHasher[PropertyLayoutElement], MModule) */
+void layout_builders__MPropertyHasher__mmodule_61d(val* self, val* p0) {
+self->attrs[COLOR_layout_builders__MPropertyHasher___64dmmodule].val = p0; /* @mmodule on <self:MPropertyHasher[PropertyLayoutElement]> */
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyHasher#mmodule= for (self: Object, MModule) */
+void VIRTUAL_layout_builders__MPropertyHasher__mmodule_61d(val* self, val* p0) {
+layout_builders__MPropertyHasher__mmodule_61d(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyHasher#init for (self: MPropertyHasher[PropertyLayoutElement], PHOperator, MModule) */
+void layout_builders__MPropertyHasher__init(val* self, val* p0, val* p1) {
+val* var_operator /* var operator: PHOperator */;
+val* var_mmodule /* var mmodule: MModule */;
+var_operator = p0;
+var_mmodule = p1;
+((void (*)(val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__init]))(self) /* init on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__operator_61d]))(self, var_operator) /* operator= on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyHasher__mmodule_61d]))(self, var_mmodule) /* mmodule= on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyHasher#init for (self: Object, PHOperator, MModule) */
+void VIRTUAL_layout_builders__MPropertyHasher__init(val* self, val* p0, val* p1) {
+layout_builders__MPropertyHasher__init(self, p0, p1);
+RET_LABEL:;
+}
+/* method layout_builders#MPropertyHasher#build_poset for (self: MPropertyHasher[PropertyLayoutElement], Set[MClass]): POSet[MClass] */
+val* layout_builders__MPropertyHasher__build_poset(val* self, val* p0) {
+val* var /* : POSet[MClass] */;
+val* var_mclasses /* var mclasses: Set[MClass] */;
+val* var1 /* : POSet[MClass] */;
+val* var_poset /* var poset: POSet[MClass] */;
+val* var2 /* : Iterator[nullable Object] */;
+short int var3 /* : Bool */;
+val* var4 /* : nullable Object */;
+val* var_e /* var e: MClass */;
+val* var5 /* : POSetElement[Object] */;
+val* var6 /* : Iterator[nullable Object] */;
+short int var7 /* : Bool */;
+val* var8 /* : nullable Object */;
+val* var_o /* var o: MClass */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var11 /* : MModule */;
+val* var12 /* : POSet[MClass] */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var15 /* : MModule */;
+val* var16 /* : POSetElement[MClass] */;
+short int var17 /* : Bool */;
+var_mclasses = p0;
+var1 = NEW_poset__POSet(&type_poset__POSetmodel__MClass);
+((void (*)(val*))(var1->class->vft[COLOR_poset__POSet__init]))(var1) /* init on <var1:POSet[MClass]>*/;
+CHECK_NEW_poset__POSet(var1);
+var_poset = var1;
+var2 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:Set[MClass]>*/;
+for(;;) {
+var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
+if(!var3) break;
+var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
+var_e = var4;
+var5 = ((val* (*)(val*, val*))(var_poset->class->vft[COLOR_poset__POSet__add_node]))(var_poset, var_e) /* add_node on <var_poset:POSet[MClass]>*/;
+var5;
+var6 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:Set[MClass]>*/;
+for(;;) {
+var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
+if(!var7) break;
+var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
+var_o = var8;
+var10 = ((short int (*)(val*, val*))(var_e->class->vft[COLOR_kernel__Object___61d_61d]))(var_e, var_o) /* == on <var_e:MClass>*/;
+var_ = var10;
+if (var10){
+var9 = var_;
+} else {
+var11 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyHasher__mmodule]))(self) /* mmodule on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var11) /* flatten_mclass_hierarchy on <var11:MModule>*/;
+var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__Collection__has]))(var12, var_e) /* has on <var12:POSet[MClass]>*/;
+var14 = !var13;
+var9 = var14;
+}
+if (var9){
+goto CONTINUE_label;
+} else {
+}
+var15 = ((val* (*)(val*))(self->class->vft[COLOR_layout_builders__MPropertyHasher__mmodule]))(self) /* mmodule on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+var16 = ((val* (*)(val*, val*))(var_e->class->vft[COLOR_model__MClass__in_hierarchy]))(var_e, var15) /* in_hierarchy on <var_e:MClass>*/;
+var17 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_poset__POSetElement___60d]))(var16, var_o) /* < on <var16:POSetElement[MClass]>*/;
+if (var17){
+((void (*)(val*, val*, val*))(var_poset->class->vft[COLOR_poset__POSet__add_edge]))(var_poset, var_e, var_o) /* add_edge on <var_poset:POSet[MClass]>*/;
+} else {
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label18: (void)0;
+((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
+}
+BREAK_label18: (void)0;
+var = var_poset;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyHasher#build_poset for (self: Object, Set[MClass]): POSet[MClass] */
+val* VIRTUAL_layout_builders__MPropertyHasher__build_poset(val* self, val* p0) {
+val* var /* : POSet[MClass] */;
+val* var1 /* : POSet[MClass] */;
+var1 = layout_builders__MPropertyHasher__build_poset(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyHasher#build_layout for (self: MPropertyHasher[PropertyLayoutElement], Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* layout_builders__MPropertyHasher__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+short int var1 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+val* var_elements /* var elements: Map[MClass, Set[PropertyLayoutElement]] */;
+val* var2 /* : PHLayout[MClass, PropertyLayoutElement] */;
+val* var_result /* var result: PHLayout[MClass, PropertyLayoutElement] */;
+val* var3 /* : HashMap[PropertyLayoutElement, Int] */;
+val* var_ids /* var ids: HashMap[PropertyLayoutElement, Int] */;
+val* var4 /* : HashSet[MClass] */;
+val* var_mclasses /* var mclasses: HashSet[MClass] */;
+val* var5 /* : Collection[Object] */;
+val* var6 /* : POSet[MClass] */;
+val* var_poset /* var poset: POSet[MClass] */;
+val* var7 /* : Array[nullable Object] */;
+val* var_lin /* var lin: Array[MClass] */;
+val* var8 /* : Array[nullable Object] */;
+val* var9 /* : Iterator[nullable Object] */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable Object */;
+val* var_mclass /* var mclass: MClass */;
+val* var12 /* : nullable Object */;
+val* var13 /* : Iterator[nullable Object] */;
+short int var14 /* : Bool */;
+val* var15 /* : nullable Object */;
+val* var_mproperty /* var mproperty: PropertyLayoutElement */;
+short int var16 /* : Bool */;
+long var17 /* : Int */;
+long var18 /* : Int */;
+long var19 /* : Int */;
+long var21 /* : Int */;
+val* var22 /* : nullable Object */;
+val* var24 /* : Map[Object, Int] */;
+val* var25 /* : Map[Object, Int] */;
+val* var26 /* : Map[Object, Map[Object, Int]] */;
+/* Covariant cast for argument 0 (elements) <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
+/* <p0:Map[MClass, Set[PropertyLayoutElement]]> isa Map[MClass, Set[PropertyLayoutBuilder#0]] */
+type_struct = self->type->resolution_table->types[COLOR_abstract_collection__Mapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutBuilder_FT0];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= p0->type->table_size) {
+var1 = 0;
+} else {
+var1 = p0->type->type_table[cltype] == idtype;
+}
+if (!var1) {
+fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/layout_builders.nit", 704);
+exit(1);
+}
+var_elements = p0;
+var2 = NEW_layout_builders__PHLayout(self->type->resolution_table->types[COLOR_layout_builders__PHLayoutmodel__MClasslayout_builders__MPropertyHasher_FT0]);
+((void (*)(val*))(var2->class->vft[COLOR_layout_builders__PHLayout__init]))(var2) /* init on <var2:PHLayout[MClass, PropertyLayoutElement]>*/;
+CHECK_NEW_layout_builders__PHLayout(var2);
+var_result = var2;
+var3 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMaplayout_builders__MPropertyHasher_FT0kernel__Int]);
+((void (*)(val*))(var3->class->vft[COLOR_hash_collection__HashMap__init]))(var3) /* init on <var3:HashMap[PropertyLayoutElement, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var3);
+var_ids = var3;
+var4 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
+((void (*)(val*))(var4->class->vft[COLOR_hash_collection__HashSet__init]))(var4) /* init on <var4:HashSet[MClass]>*/;
+CHECK_NEW_hash_collection__HashSet(var4);
+var_mclasses = var4;
+var5 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__keys]))(var_elements) /* keys on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
+((void (*)(val*, val*))(var_mclasses->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_mclasses, var5) /* add_all on <var_mclasses:HashSet[MClass]>*/;
+var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_layout_builders__MPropertyHasher__build_poset]))(self, var_mclasses) /* build_poset on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+var_poset = var6;
+var7 = ((val* (*)(val*))(var_poset->class->vft[COLOR_array__Collection__to_a]))(var_poset) /* to_a on <var_poset:POSet[MClass]>*/;
+var_lin = var7;
+((void (*)(val*, val*))(var_poset->class->vft[COLOR_sorter__AbstractSorter__sort]))(var_poset, var_lin) /* sort on <var_poset:POSet[MClass]>*/;
+var8 = ((val* (*)(val*))(var_lin->class->vft[COLOR_array__AbstractArrayRead__reversed]))(var_lin) /* reversed on <var_lin:Array[MClass]>*/;
+var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Array[nullable Object](Array[MClass])>*/;
+for(;;) {
+var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
+if(!var10) break;
+var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
+var_mclass = var11;
+var12 = ((val* (*)(val*, val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_elements, var_mclass) /* [] on <var_elements:Map[MClass, Set[PropertyLayoutElement]]>*/;
+var13 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__Collection__iterator]))(var12) /* iterator on <var12:nullable Object(Set[PropertyLayoutElement])>*/;
+for(;;) {
+var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
+if(!var14) break;
+var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
+var_mproperty = var15;
+var16 = ((short int (*)(val*, val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_ids, var_mproperty) /* has_key on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
+if (var16){
+goto CONTINUE_label;
+} else {
+}
+var17 = ((long (*)(val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__length]))(var_ids) /* length on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
+var18 = 1;
+{ /* Inline kernel#Int#+ (var17,var18) */
+var21 = var17 + var18;
+var19 = var21;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
+}
+var22 = BOX_kernel__Int(var19); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_mproperty, var22) /* []= on <var_ids:HashMap[PropertyLayoutElement, Int]>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label23: (void)0;
+((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
+}
+BREAK_label23: (void)0;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids_61d]))(var_result, var_ids) /* ids= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var_ids) /* pos= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
+var24 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__compute_masks]))(self, var_elements, var_ids) /* compute_masks on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__masks_61d]))(var_result, var24) /* masks= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
+var25 = ((val* (*)(val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__masks]))(var_result) /* masks on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
+var26 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__compute_hashes]))(self, var_elements, var_ids, var25) /* compute_hashes on <self:MPropertyHasher[PropertyLayoutElement]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__hashes_61d]))(var_result, var26) /* hashes= on <var_result:PHLayout[MClass, PropertyLayoutElement]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#MPropertyHasher#build_layout for (self: Object, Map[MClass, Set[PropertyLayoutElement]]): Layout[PropertyLayoutElement] */
+val* VIRTUAL_layout_builders__MPropertyHasher__build_layout(val* self, val* p0) {
+val* var /* : Layout[PropertyLayoutElement] */;
+val* var1 /* : Layout[PropertyLayoutElement] */;
+var1 = layout_builders__MPropertyHasher__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionHasher#init for (self: ResolutionHasher, PHOperator) */
+void layout_builders__ResolutionHasher__init(val* self, val* p0) {
+val* var_operator /* var operator: PHOperator */;
+var_operator = p0;
+((void (*)(val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__init]))(self) /* init on <self:ResolutionHasher>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__operator_61d]))(self, var_operator) /* operator= on <self:ResolutionHasher>*/;
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionHasher#init for (self: Object, PHOperator) */
+void VIRTUAL_layout_builders__ResolutionHasher__init(val* self, val* p0) {
+layout_builders__ResolutionHasher__init(self, p0);
+RET_LABEL:;
+}
+/* method layout_builders#ResolutionHasher#build_layout for (self: ResolutionHasher, Map[MClassType, Set[MType]]): Layout[MType] */
+val* layout_builders__ResolutionHasher__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
+val* var1 /* : PHLayout[MClassType, MType] */;
+val* var_result /* var result: PHLayout[MClassType, MType] */;
+val* var2 /* : HashMap[MType, Int] */;
+val* var_ids /* var ids: HashMap[MType, Int] */;
+long var3 /* : Int */;
+long var_color /* var color: Int */;
+val* var4 /* : MapIterator[Object, nullable Object] */;
+short int var5 /* : Bool */;
+val* var6 /* : Object */;
+val* var_mclasstype /* var mclasstype: MClassType */;
+val* var7 /* : nullable Object */;
+val* var_mclasstypes /* var mclasstypes: Set[MType] */;
+val* var8 /* : Iterator[nullable Object] */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_element /* var element: MType */;
+short int var11 /* : Bool */;
+val* var12 /* : nullable Object */;
+long var13 /* : Int */;
+long var14 /* : Int */;
+long var16 /* : Int */;
+val* var18 /* : Map[Object, Int] */;
+val* var19 /* : Map[Object, Int] */;
+val* var20 /* : Map[Object, Map[Object, Int]] */;
+var_elements = p0;
+var1 = NEW_layout_builders__PHLayout(&type_layout_builders__PHLayoutmodel__MClassTypemodel__MType);
+((void (*)(val*))(var1->class->vft[COLOR_layout_builders__PHLayout__init]))(var1) /* init on <var1:PHLayout[MClassType, MType]>*/;
+CHECK_NEW_layout_builders__PHLayout(var1);
+var_result = var1;
+var2 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int);
+((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[MType, Int]>*/;
+CHECK_NEW_hash_collection__HashMap(var2);
+var_ids = var2;
+var3 = 1;
+var_color = var3;
+var4 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
+for(;;) {
+var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var4) /* is_ok on <var4:MapIterator[Object, nullable Object]>*/;
+if(!var5) break;
+var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__key]))(var4) /* key on <var4:MapIterator[Object, nullable Object]>*/;
+var_mclasstype = var6;
+var7 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__item]))(var4) /* item on <var4:MapIterator[Object, nullable Object]>*/;
+var_mclasstypes = var7;
+var8 = ((val* (*)(val*))(var_mclasstypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasstypes) /* iterator on <var_mclasstypes:Set[MType]>*/;
+for(;;) {
+var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
+if(!var9) break;
+var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
+var_element = var10;
+var11 = ((short int (*)(val*, val*))(var_ids->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_ids, var_element) /* has_key on <var_ids:HashMap[MType, Int]>*/;
+if (var11){
+goto CONTINUE_label;
+} else {
+}
+var12 = BOX_kernel__Int(var_color); /* autobox from Int to nullable Object */
+((void (*)(val*, val*, val*))(var_ids->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_ids, var_element, var12) /* []= on <var_ids:HashMap[MType, Int]>*/;
+var13 = 1;
+{ /* Inline kernel#Int#+ (var_color,var13) */
+var16 = var_color + var13;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+var_color = var14;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label17: (void)0;
+((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__MapIterator__next]))(var4) /* next on <var4:MapIterator[Object, nullable Object]>*/;
+}
+BREAK_label17: (void)0;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__ids_61d]))(var_result, var_ids) /* ids= on <var_result:PHLayout[MClassType, MType]>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__Layout__pos_61d]))(var_result, var_ids) /* pos= on <var_result:PHLayout[MClassType, MType]>*/;
+var18 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__compute_masks]))(self, var_elements, var_ids) /* compute_masks on <self:ResolutionHasher>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__masks_61d]))(var_result, var18) /* masks= on <var_result:PHLayout[MClassType, MType]>*/;
+var19 = ((val* (*)(val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__masks]))(var_result) /* masks on <var_result:PHLayout[MClassType, MType]>*/;
+var20 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_layout_builders__PerfectHasher__compute_hashes]))(self, var_elements, var_ids, var19) /* compute_hashes on <self:ResolutionHasher>*/;
+((void (*)(val*, val*))(var_result->class->vft[COLOR_layout_builders__PHLayout__hashes_61d]))(var_result, var20) /* hashes= on <var_result:PHLayout[MClassType, MType]>*/;
+var = var_result;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method layout_builders#ResolutionHasher#build_layout for (self: Object, Map[MClassType, Set[MType]]): Layout[MType] */
+val* VIRTUAL_layout_builders__ResolutionHasher__build_layout(val* self, val* p0) {
+val* var /* : Layout[MType] */;
+val* var1 /* : Layout[MType] */;
+var1 = layout_builders__ResolutionHasher__build_layout(self, p0);
+var = var1;
+RET_LABEL:;
+return var;
+}