-var1 = model__MNullType__as_nullable(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#need_anchor for (self: MNullType): Bool */
-short int model__MNullType__need_anchor(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = 0;
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#need_anchor for (self: Object): Bool */
-short int VIRTUAL_model__MNullType__need_anchor(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MNullType__need_anchor(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#resolve_for for (self: MNullType, MType, nullable MClassType, MModule, Bool): MType */
-val* model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
-val* var /* : MType */;
-val* var_mtype /* var mtype: MType */;
-val* var_anchor /* var anchor: nullable MClassType */;
-val* var_mmodule /* var mmodule: MModule */;
-short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
-var_mtype = p0;
-var_anchor = p1;
-var_mmodule = p2;
-var_cleanup_virtual = p3;
-var = self;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
-val* VIRTUAL_model__MNullType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
-val* var /* : MType */;
-val* var1 /* : MType */;
-var1 = model__MNullType__resolve_for(self, p0, p1, p2, p3);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#can_resolve_for for (self: MNullType, MType, nullable MClassType, MModule): Bool */
-short int model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-val* var_mtype /* var mtype: MType */;
-val* var_anchor /* var anchor: nullable MClassType */;
-val* var_mmodule /* var mmodule: MModule */;
-short int var1 /* : Bool */;
-var_mtype = p0;
-var_anchor = p1;
-var_mmodule = p2;
-var1 = 1;
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
-short int VIRTUAL_model__MNullType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MNullType__can_resolve_for(self, p0, p1, p2);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#collect_mclassdefs for (self: MNullType, MModule): Set[MClassDef] */
-val* model__MNullType__collect_mclassdefs(val* self, val* p0) {
-val* var /* : Set[MClassDef] */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var1 /* : HashSet[MClassDef] */;
-var_mmodule = p0;
-var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassDef);
-((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassDef]>*/;
-CHECK_NEW_hash_collection__HashSet(var1);
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#collect_mclassdefs for (self: Object, MModule): Set[MClassDef] */
-val* VIRTUAL_model__MNullType__collect_mclassdefs(val* self, val* p0) {
-val* var /* : Set[MClassDef] */;
-val* var1 /* : Set[MClassDef] */;
-var1 = model__MNullType__collect_mclassdefs(self, p0);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#collect_mclasses for (self: MNullType, MModule): Set[MClass] */
-val* model__MNullType__collect_mclasses(val* self, val* p0) {
-val* var /* : Set[MClass] */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var1 /* : HashSet[MClass] */;
-var_mmodule = p0;
-var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
-((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClass]>*/;
-CHECK_NEW_hash_collection__HashSet(var1);
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#collect_mclasses for (self: Object, MModule): Set[MClass] */
-val* VIRTUAL_model__MNullType__collect_mclasses(val* self, val* p0) {
-val* var /* : Set[MClass] */;
-val* var1 /* : Set[MClass] */;
-var1 = model__MNullType__collect_mclasses(self, p0);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#collect_mtypes for (self: MNullType, MModule): Set[MClassType] */
-val* model__MNullType__collect_mtypes(val* self, val* p0) {
-val* var /* : Set[MClassType] */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var1 /* : HashSet[MClassType] */;
-var_mmodule = p0;
-var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClassType);
-((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MClassType]>*/;
-CHECK_NEW_hash_collection__HashSet(var1);
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullType#collect_mtypes for (self: Object, MModule): Set[MClassType] */
-val* VIRTUAL_model__MNullType__collect_mtypes(val* self, val* p0) {
-val* var /* : Set[MClassType] */;
-val* var1 /* : Set[MClassType] */;
-var1 = model__MNullType__collect_mtypes(self, p0);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#mparameters for (self: MSignature): Array[MParameter] */
-val* model__MSignature__mparameters(val* self) {
-val* var /* : Array[MParameter] */;
-val* var1 /* : Array[MParameter] */;
-var1 = self->attrs[COLOR_model__MSignature___64dmparameters].val; /* @mparameters on <self:MSignature> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mparameters");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1360);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#mparameters for (self: Object): Array[MParameter] */
-val* VIRTUAL_model__MSignature__mparameters(val* self) {
-val* var /* : Array[MParameter] */;
-val* var1 /* : Array[MParameter] */;
-var1 = model__MSignature__mparameters(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#mparameters= for (self: MSignature, Array[MParameter]) */
-void model__MSignature__mparameters_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MSignature___64dmparameters].val = p0; /* @mparameters on <self:MSignature> */
-RET_LABEL:;
-}
-/* method model#MSignature#mparameters= for (self: Object, Array[MParameter]) */
-void VIRTUAL_model__MSignature__mparameters_61d(val* self, val* p0) {
-model__MSignature__mparameters_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MSignature#return_mtype for (self: MSignature): nullable MType */
-val* model__MSignature__return_mtype(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = self->attrs[COLOR_model__MSignature___64dreturn_mtype].val; /* @return_mtype on <self:MSignature> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#return_mtype for (self: Object): nullable MType */
-val* VIRTUAL_model__MSignature__return_mtype(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = model__MSignature__return_mtype(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#return_mtype= for (self: MSignature, nullable MType) */
-void model__MSignature__return_mtype_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MSignature___64dreturn_mtype].val = p0; /* @return_mtype on <self:MSignature> */
-RET_LABEL:;
-}
-/* method model#MSignature#return_mtype= for (self: Object, nullable MType) */
-void VIRTUAL_model__MSignature__return_mtype_61d(val* self, val* p0) {
-model__MSignature__return_mtype_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MSignature#depth for (self: MSignature): Int */
-long model__MSignature__depth(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-long var_dmax /* var dmax: Int */;
-val* var2 /* : nullable MType */;
-val* var_t /* var t: nullable MType */;
-val* var3 /* : null */;
-short int var4 /* : Bool */;
-long var5 /* : Int */;
-val* var6 /* : Array[MParameter] */;
-val* var7 /* : Iterator[nullable Object] */;
-short int var8 /* : Bool */;
-val* var9 /* : nullable Object */;
-val* var_p /* var p: MParameter */;
-val* var10 /* : MType */;
-long var11 /* : Int */;
-long var_d /* var d: Int */;
-short int var12 /* : Bool */;
-short int var14 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-short int var15 /* : Bool */;
-long var16 /* : Int */;
-long var17 /* : Int */;
-long var19 /* : Int */;
-var1 = 0;
-var_dmax = var1;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
-var_t = var2;
-var3 = NULL;
-if (var_t == NULL) {
-var4 = 0; /* is null */
-} else {
-var4 = 1; /* arg is null and recv is not */
-}
-if (var4){
-var5 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__depth]))(var_t) /* depth on <var_t:nullable MType(MType)>*/;
-var_dmax = var5;
-} else {
-}
-var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
-var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[MParameter]>*/;
-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_p = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
-var11 = ((long (*)(val*))(var10->class->vft[COLOR_model__MType__depth]))(var10) /* depth on <var10:MType>*/;
-var_d = var11;
-{ /* Inline kernel#Int#> (var_d,var_dmax) */
-/* Covariant cast for argument 0 (i) <var_dmax:Int> isa OTHER */
-/* <var_dmax:Int> isa OTHER */
-var14 = 1; /* easy <var_dmax:Int> isa OTHER*/
-if (!var14) {
-var_class_name = type_kernel__Int.name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
-exit(1);
-}
-var15 = var_d > var_dmax;
-var12 = var15;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
-}
-if (var12){
-var_dmax = var_d;
-} 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;
-var16 = 1;
-{ /* Inline kernel#Int#+ (var_dmax,var16) */
-var19 = var_dmax + var16;
-var17 = var19;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
-}
-var = var17;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#depth for (self: Object): Int */
-long VIRTUAL_model__MSignature__depth(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-var1 = model__MSignature__depth(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#length for (self: MSignature): Int */
-long model__MSignature__length(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-long var_res /* var res: Int */;
-val* var2 /* : nullable MType */;
-val* var_t /* var t: nullable MType */;
-val* var3 /* : null */;
-short int var4 /* : Bool */;
-long var5 /* : Int */;
-long var6 /* : Int */;
-long var8 /* : Int */;
-val* var9 /* : Array[MParameter] */;
-val* var10 /* : Iterator[nullable Object] */;
-short int var11 /* : Bool */;
-val* var12 /* : nullable Object */;
-val* var_p /* var p: MParameter */;
-val* var13 /* : MType */;
-long var14 /* : Int */;
-long var15 /* : Int */;
-long var17 /* : Int */;
-var1 = 1;
-var_res = var1;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
-var_t = var2;
-var3 = NULL;
-if (var_t == NULL) {
-var4 = 0; /* is null */
-} else {
-var4 = 1; /* arg is null and recv is not */
-}
-if (var4){
-var5 = ((long (*)(val*))(var_t->class->vft[COLOR_model__MType__length]))(var_t) /* length on <var_t:nullable MType(MType)>*/;
-{ /* Inline kernel#Int#+ (var_res,var5) */
-var8 = var_res + var5;
-var6 = var8;
-goto RET_LABEL7;
-RET_LABEL7:(void)0;
-}
-var_res = var6;
-} else {
-}
-var9 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
-var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Array[MParameter]>*/;
-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_p = var12;
-var13 = ((val* (*)(val*))(var_p->class->vft[COLOR_model__MParameter__mtype]))(var_p) /* mtype on <var_p:MParameter>*/;
-var14 = ((long (*)(val*))(var13->class->vft[COLOR_model__MType__length]))(var13) /* length on <var13:MType>*/;
-{ /* Inline kernel#Int#+ (var_res,var14) */
-var17 = var_res + var14;
-var15 = var17;
-goto RET_LABEL16;
-RET_LABEL16:(void)0;
-}
-var_res = var15;
-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;
-var = var_res;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#length for (self: Object): Int */
-long VIRTUAL_model__MSignature__length(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-var1 = model__MSignature__length(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#init for (self: MSignature, Array[MParameter], nullable MType) */
-void model__MSignature__init(val* self, val* p0, val* p1) {
-val* var_mparameters /* var mparameters: Array[MParameter] */;
-val* var_return_mtype /* var return_mtype: nullable MType */;
-long var /* : Int */;
-long var1 /* : Int */;
-long var3 /* : Int */;
-long var_vararg_rank /* var vararg_rank: Int */;
-val* var4 /* : Range[Int] */;
-long var5 /* : Int */;
-long var6 /* : Int */;
-val* var7 /* : Discrete */;
-val* var8 /* : Discrete */;
-val* var9 /* : Iterator[nullable Object] */;
-short int var10 /* : Bool */;
-val* var11 /* : nullable Object */;
-long var_i /* var i: Int */;
-long var12 /* : Int */;
-val* var13 /* : nullable Object */;
-val* var_parameter /* var parameter: MParameter */;
-short int var14 /* : Bool */;
-long var15 /* : Int */;
-long var16 /* : Int */;
-long var18 /* : Int */;
-short int var19 /* : Bool */;
-short int var21 /* : Bool */;
-var_mparameters = p0;
-var_return_mtype = p1;
-((void (*)(val*))(self->class->vft[COLOR_model__MType__init]))(self) /* init on <self:MSignature>*/;
-var = 1;
-{ /* Inline kernel#Int#unary - (var) */
-var3 = -var;
-var1 = var3;
-goto RET_LABEL2;
-RET_LABEL2:(void)0;
-}
-var_vararg_rank = var1;
-var4 = NEW_range__Range(&type_range__Rangekernel__Int);
-var5 = 0;
-var6 = ((long (*)(val*))(var_mparameters->class->vft[COLOR_abstract_collection__Collection__length]))(var_mparameters) /* length on <var_mparameters:Array[MParameter]>*/;
-var7 = BOX_kernel__Int(var5); /* autobox from Int to Discrete */
-var8 = BOX_kernel__Int(var6); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var4->class->vft[COLOR_range__Range__without_last]))(var4, var7, var8) /* without_last on <var4:Range[Int]>*/;
-CHECK_NEW_range__Range(var4);
-var9 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Collection__iterator]))(var4) /* iterator on <var4:Range[Int]>*/;
-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]>*/;
-var12 = ((struct instance_kernel__Int*)var11)->value; /* autounbox from nullable Object to Int */;
-var_i = var12;
-var13 = ((val* (*)(val*, long))(var_mparameters->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_mparameters, var_i) /* [] on <var_mparameters:Array[MParameter]>*/;
-var_parameter = var13;
-var14 = ((short int (*)(val*))(var_parameter->class->vft[COLOR_model__MParameter__is_vararg]))(var_parameter) /* is_vararg on <var_parameter:MParameter>*/;
-if (var14){
-var15 = 1;
-{ /* Inline kernel#Int#unary - (var15) */
-var18 = -var15;
-var16 = var18;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
-}
-{ /* Inline kernel#Int#== (var_vararg_rank,var16) */
-var21 = var_vararg_rank == var16;
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
-}
-if (!var19) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1396);
-exit(1);
-}
-var_vararg_rank = var_i;
-} else {
-}
-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*))(self->class->vft[COLOR_model__MSignature__mparameters_61d]))(self, var_mparameters) /* mparameters= on <self:MSignature>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MSignature__return_mtype_61d]))(self, var_return_mtype) /* return_mtype= on <self:MSignature>*/;
-((void (*)(val*, long))(self->class->vft[COLOR_model__MSignature__vararg_rank_61d]))(self, var_vararg_rank) /* vararg_rank= on <self:MSignature>*/;
-RET_LABEL:;
-}
-/* method model#MSignature#init for (self: Object, Array[MParameter], nullable MType) */
-void VIRTUAL_model__MSignature__init(val* self, val* p0, val* p1) {
-model__MSignature__init(self, p0, p1);
-RET_LABEL:;
-}
-/* method model#MSignature#vararg_rank for (self: MSignature): Int */
-long model__MSignature__vararg_rank(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-var1 = self->attrs[COLOR_model__MSignature___64dvararg_rank].l; /* @vararg_rank on <self:MSignature> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#vararg_rank for (self: Object): Int */
-long VIRTUAL_model__MSignature__vararg_rank(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-var1 = model__MSignature__vararg_rank(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#vararg_rank= for (self: MSignature, Int) */
-void model__MSignature__vararg_rank_61d(val* self, long p0) {
-self->attrs[COLOR_model__MSignature___64dvararg_rank].l = p0; /* @vararg_rank on <self:MSignature> */
-RET_LABEL:;
-}
-/* method model#MSignature#vararg_rank= for (self: Object, Int) */
-void VIRTUAL_model__MSignature__vararg_rank_61d(val* self, long p0) {
-model__MSignature__vararg_rank_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MSignature#arity for (self: MSignature): Int */
-long model__MSignature__arity(val* self) {
-long var /* : Int */;
-val* var1 /* : Array[MParameter] */;
-long var2 /* : Int */;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
-var2 = ((long (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__length]))(var1) /* length on <var1:Array[MParameter]>*/;
-var = var2;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#arity for (self: Object): Int */
-long VIRTUAL_model__MSignature__arity(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-var1 = model__MSignature__arity(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#to_s for (self: MSignature): String */
-val* model__MSignature__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : Buffer */;
-val* var_b /* var b: Buffer */;
-val* var2 /* : Array[MParameter] */;
-short int var3 /* : Bool */;
-short int var4 /* : Bool */;
-static val* varonce;
-val* var5 /* : String */;
-char* var6 /* : NativeString */;
-long var7 /* : Int */;
-val* var8 /* : String */;
-val* var9 /* : Range[Int] */;
-long var10 /* : Int */;
-val* var11 /* : Array[MParameter] */;
-long var12 /* : Int */;
-val* var13 /* : Discrete */;
-val* var14 /* : Discrete */;
-val* var15 /* : Iterator[nullable Object] */;
-short int var16 /* : Bool */;
-val* var17 /* : nullable Object */;
-long var_i /* var i: Int */;
-long var18 /* : Int */;
-val* var19 /* : Array[MParameter] */;
-val* var20 /* : nullable Object */;
-val* var_mparameter /* var mparameter: MParameter */;
-long var21 /* : Int */;
-short int var22 /* : Bool */;
-short int var24 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-short int var25 /* : Bool */;
-static val* varonce26;
-val* var27 /* : String */;
-char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : String */;
-val* var31 /* : String */;
-static val* varonce32;
-val* var33 /* : String */;
-char* var34 /* : NativeString */;
-long var35 /* : Int */;
-val* var36 /* : String */;
-val* var37 /* : MType */;
-val* var38 /* : String */;
-short int var39 /* : Bool */;
-static val* varonce40;
-val* var41 /* : String */;
-char* var42 /* : NativeString */;
-long var43 /* : Int */;
-val* var44 /* : String */;
-static val* varonce45;
-val* var46 /* : String */;
-char* var47 /* : NativeString */;
-long var48 /* : Int */;
-val* var49 /* : String */;
-val* var50 /* : nullable MType */;
-val* var_ret /* var ret: nullable MType */;
-val* var51 /* : null */;
-short int var52 /* : Bool */;
-static val* varonce53;
-val* var54 /* : String */;
-char* var55 /* : NativeString */;
-long var56 /* : Int */;
-val* var57 /* : String */;
-val* var58 /* : String */;
-val* var59 /* : String */;
-var1 = NEW_string__Buffer(&type_string__Buffer);
-((void (*)(val*))(var1->class->vft[COLOR_string__Buffer__init]))(var1) /* init on <var1:Buffer>*/;
-CHECK_NEW_string__Buffer(var1);
-var_b = var1;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
-var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var2) /* is_empty on <var2:Array[MParameter]>*/;
-var4 = !var3;
-if (var4){
-if (varonce) {
-var5 = varonce;
-} else {
-var6 = "(";
-var7 = 1;
-var8 = string__NativeString__to_s_with_length(var6, var7);
-var5 = var8;
-varonce = var5;
-}
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var5) /* append on <var_b:Buffer>*/;
-var9 = NEW_range__Range(&type_range__Rangekernel__Int);
-var10 = 0;
-var11 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
-var12 = ((long (*)(val*))(var11->class->vft[COLOR_abstract_collection__Collection__length]))(var11) /* length on <var11:Array[MParameter]>*/;
-var13 = BOX_kernel__Int(var10); /* autobox from Int to Discrete */
-var14 = BOX_kernel__Int(var12); /* autobox from Int to Discrete */
-((void (*)(val*, val*, val*))(var9->class->vft[COLOR_range__Range__without_last]))(var9, var13, var14) /* without_last on <var9:Range[Int]>*/;
-CHECK_NEW_range__Range(var9);
-var15 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Collection__iterator]))(var9) /* iterator on <var9:Range[Int]>*/;
-for(;;) {
-var16 = ((short int (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var15) /* is_ok on <var15:Iterator[nullable Object]>*/;
-if(!var16) break;
-var17 = ((val* (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__item]))(var15) /* item on <var15:Iterator[nullable Object]>*/;
-var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
-var_i = var18;
-var19 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
-var20 = ((val* (*)(val*, long))(var19->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var19, var_i) /* [] on <var19:Array[MParameter]>*/;
-var_mparameter = var20;
-var21 = 0;
-{ /* Inline kernel#Int#> (var_i,var21) */
-/* Covariant cast for argument 0 (i) <var21:Int> isa OTHER */
-/* <var21:Int> isa OTHER */
-var24 = 1; /* easy <var21:Int> isa OTHER*/
-if (!var24) {
-var_class_name = type_kernel__Int.name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 263);
-exit(1);
-}
-var25 = var_i > var21;
-var22 = var25;
-goto RET_LABEL23;
-RET_LABEL23:(void)0;
-}
-if (var22){
-if (varonce26) {
-var27 = varonce26;
-} else {
-var28 = ", ";
-var29 = 2;
-var30 = string__NativeString__to_s_with_length(var28, var29);
-var27 = var30;
-varonce26 = var27;
-}
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var27) /* append on <var_b:Buffer>*/;
-} else {
-}
-var31 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__name]))(var_mparameter) /* name on <var_mparameter:MParameter>*/;
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var31) /* append on <var_b:Buffer>*/;
-if (varonce32) {
-var33 = varonce32;
-} else {
-var34 = ": ";
-var35 = 2;
-var36 = string__NativeString__to_s_with_length(var34, var35);
-var33 = var36;
-varonce32 = var33;
-}
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var33) /* append on <var_b:Buffer>*/;
-var37 = ((val* (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__mtype]))(var_mparameter) /* mtype on <var_mparameter:MParameter>*/;
-var38 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:MType>*/;
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var38) /* append on <var_b:Buffer>*/;
-var39 = ((short int (*)(val*))(var_mparameter->class->vft[COLOR_model__MParameter__is_vararg]))(var_mparameter) /* is_vararg on <var_mparameter:MParameter>*/;
-if (var39){
-if (varonce40) {
-var41 = varonce40;
-} else {
-var42 = "...";
-var43 = 3;
-var44 = string__NativeString__to_s_with_length(var42, var43);
-var41 = var44;
-varonce40 = var41;
-}
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var41) /* append on <var_b:Buffer>*/;
-} else {
-}
-CONTINUE_label: (void)0;
-((void (*)(val*))(var15->class->vft[COLOR_abstract_collection__Iterator__next]))(var15) /* next on <var15:Iterator[nullable Object]>*/;
-}
-BREAK_label: (void)0;
-if (varonce45) {
-var46 = varonce45;
-} else {
-var47 = ")";
-var48 = 1;
-var49 = string__NativeString__to_s_with_length(var47, var48);
-var46 = var49;
-varonce45 = var46;
-}
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var46) /* append on <var_b:Buffer>*/;
-} else {
-}
-var50 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
-var_ret = var50;
-var51 = NULL;
-if (var_ret == NULL) {
-var52 = 0; /* is null */
-} else {
-var52 = 1; /* arg is null and recv is not */
-}
-if (var52){
-if (varonce53) {
-var54 = varonce53;
-} else {
-var55 = ": ";
-var56 = 2;
-var57 = string__NativeString__to_s_with_length(var55, var56);
-var54 = var57;
-varonce53 = var54;
-}
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var54) /* append on <var_b:Buffer>*/;
-var58 = ((val* (*)(val*))(var_ret->class->vft[COLOR_string__Object__to_s]))(var_ret) /* to_s on <var_ret:nullable MType(MType)>*/;
-((void (*)(val*, val*))(var_b->class->vft[COLOR_abstract_collection__Sequence__append]))(var_b, var58) /* append on <var_b:Buffer>*/;
-} else {
-}
-var59 = ((val* (*)(val*))(var_b->class->vft[COLOR_string__Object__to_s]))(var_b) /* to_s on <var_b:Buffer>*/;
-var = var59;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#to_s for (self: Object): String */
-val* VIRTUAL_model__MSignature__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = model__MSignature__to_s(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#resolve_for for (self: MSignature, MType, nullable MClassType, MModule, Bool): MSignature */
-val* model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
-val* var /* : MSignature */;
-val* var_mtype /* var mtype: MType */;
-val* var_anchor /* var anchor: nullable MClassType */;
-val* var_mmodule /* var mmodule: MModule */;
-short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
-val* var1 /* : Array[MParameter] */;
-val* var_params /* var params: Array[MParameter] */;
-val* var2 /* : Array[MParameter] */;
-val* var3 /* : Iterator[nullable Object] */;
-short int var4 /* : Bool */;
-val* var5 /* : nullable Object */;
-val* var_p /* var p: MParameter */;
-val* var6 /* : MParameter */;
-val* var7 /* : nullable MType */;
-val* var_ret /* var ret: nullable MType */;
-val* var8 /* : null */;
-short int var9 /* : Bool */;
-val* var10 /* : MType */;
-val* var11 /* : MSignature */;
-val* var_res /* var res: MSignature */;
-var_mtype = p0;
-var_anchor = p1;
-var_mmodule = p2;
-var_cleanup_virtual = p3;
-var1 = NEW_array__Array(&type_array__Arraymodel__MParameter);
-((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var1);
-var_params = var1;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__mparameters]))(self) /* mparameters on <self:MSignature>*/;
-var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:Array[MParameter]>*/;
-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_p = var5;
-var6 = ((val* (*)(val*, val*, val*, val*, short int))(var_p->class->vft[COLOR_model__MParameter__resolve_for]))(var_p, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_p:MParameter>*/;
-((void (*)(val*, val*))(var_params->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_params, var6) /* add on <var_params:Array[MParameter]>*/;
-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;
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MSignature__return_mtype]))(self) /* return_mtype on <self:MSignature>*/;
-var_ret = var7;
-var8 = NULL;
-if (var_ret == NULL) {
-var9 = 0; /* is null */
-} else {
-var9 = 1; /* arg is null and recv is not */
-}
-if (var9){
-var10 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_ret:nullable MType(MType)>*/;
-var_ret = var10;
-} else {
-}
-var11 = NEW_model__MSignature(&type_model__MSignature);
-((void (*)(val*, val*, val*))(var11->class->vft[COLOR_model__MSignature__init]))(var11, var_params, var_ret) /* init on <var11:MSignature>*/;
-CHECK_NEW_model__MSignature(var11);
-var_res = var11;
-var = var_res;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
-val* VIRTUAL_model__MSignature__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
-val* var /* : MType */;
-val* var1 /* : MSignature */;
-var1 = model__MSignature__resolve_for(self, p0, p1, p2, p3);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#name for (self: MParameter): String */
-val* model__MParameter__name(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = self->attrs[COLOR_model__MParameter___64dname].val; /* @name on <self:MParameter> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1455);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#name for (self: Object): String */
-val* VIRTUAL_model__MParameter__name(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = model__MParameter__name(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#name= for (self: MParameter, String) */
-void model__MParameter__name_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MParameter___64dname].val = p0; /* @name on <self:MParameter> */
-RET_LABEL:;
-}
-/* method model#MParameter#name= for (self: Object, String) */
-void VIRTUAL_model__MParameter__name_61d(val* self, val* p0) {
-model__MParameter__name_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MParameter#mtype for (self: MParameter): MType */
-val* model__MParameter__mtype(val* self) {
-val* var /* : MType */;
-val* var1 /* : MType */;
-var1 = self->attrs[COLOR_model__MParameter___64dmtype].val; /* @mtype on <self:MParameter> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mtype");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1458);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#mtype for (self: Object): MType */
-val* VIRTUAL_model__MParameter__mtype(val* self) {
-val* var /* : MType */;
-val* var1 /* : MType */;
-var1 = model__MParameter__mtype(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#mtype= for (self: MParameter, MType) */
-void model__MParameter__mtype_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MParameter___64dmtype].val = p0; /* @mtype on <self:MParameter> */
-RET_LABEL:;
-}
-/* method model#MParameter#mtype= for (self: Object, MType) */
-void VIRTUAL_model__MParameter__mtype_61d(val* self, val* p0) {
-model__MParameter__mtype_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MParameter#is_vararg for (self: MParameter): Bool */
-short int model__MParameter__is_vararg(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_model__MParameter___64dis_vararg].s; /* @is_vararg on <self:MParameter> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#is_vararg for (self: Object): Bool */
-short int VIRTUAL_model__MParameter__is_vararg(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MParameter__is_vararg(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#is_vararg= for (self: MParameter, Bool) */
-void model__MParameter__is_vararg_61d(val* self, short int p0) {
-self->attrs[COLOR_model__MParameter___64dis_vararg].s = p0; /* @is_vararg on <self:MParameter> */
-RET_LABEL:;
-}
-/* method model#MParameter#is_vararg= for (self: Object, Bool) */
-void VIRTUAL_model__MParameter__is_vararg_61d(val* self, short int p0) {
-model__MParameter__is_vararg_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MParameter#resolve_for for (self: MParameter, MType, nullable MClassType, MModule, Bool): MParameter */
-val* model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
-val* var /* : MParameter */;
-val* var_mtype /* var mtype: MType */;
-val* var_anchor /* var anchor: nullable MClassType */;
-val* var_mmodule /* var mmodule: MModule */;
-short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
-val* var1 /* : MType */;
-short int var2 /* : Bool */;
-short int var3 /* : Bool */;
-val* var4 /* : MType */;
-val* var5 /* : MType */;
-val* var_newtype /* var newtype: MType */;
-val* var6 /* : MParameter */;
-val* var7 /* : String */;
-short int var8 /* : Bool */;
-val* var_res /* var res: MParameter */;
-var_mtype = p0;
-var_anchor = p1;
-var_mmodule = p2;
-var_cleanup_virtual = p3;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__mtype]))(self) /* mtype on <self:MParameter>*/;
-var2 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
-var3 = !var2;
-if (var3){
-var = self;
-goto RET_LABEL;
-} else {
-}
-var4 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__mtype]))(self) /* mtype on <self:MParameter>*/;
-var5 = ((val* (*)(val*, val*, val*, val*, short int))(var4->class->vft[COLOR_model__MType__resolve_for]))(var4, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var4:MType>*/;
-var_newtype = var5;
-var6 = NEW_model__MParameter(&type_model__MParameter);
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MParameter__name]))(self) /* name on <self:MParameter>*/;
-var8 = ((short int (*)(val*))(self->class->vft[COLOR_model__MParameter__is_vararg]))(self) /* is_vararg on <self:MParameter>*/;
-((void (*)(val*, val*, val*, short int))(var6->class->vft[COLOR_model__MParameter__init]))(var6, var7, var_newtype, var8) /* init on <var6:MParameter>*/;
-CHECK_NEW_model__MParameter(var6);
-var_res = var6;
-var = var_res;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MParameter */
-val* VIRTUAL_model__MParameter__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
-val* var /* : MParameter */;
-val* var1 /* : MParameter */;
-var1 = model__MParameter__resolve_for(self, p0, p1, p2, p3);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MParameter#init for (self: MParameter, String, MType, Bool) */
-void model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
-self->attrs[COLOR_model__MParameter___64dname].val = p0; /* @name on <self:MParameter> */
-self->attrs[COLOR_model__MParameter___64dmtype].val = p1; /* @mtype on <self:MParameter> */
-self->attrs[COLOR_model__MParameter___64dis_vararg].s = p2; /* @is_vararg on <self:MParameter> */
-RET_LABEL:;
-}
-/* method model#MParameter#init for (self: Object, String, MType, Bool) */
-void VIRTUAL_model__MParameter__init(val* self, val* p0, val* p1, short int p2) {
-model__MParameter__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MProperty#intro_mclassdef for (self: MProperty): MClassDef */
-val* model__MProperty__intro_mclassdef(val* self) {
-val* var /* : MClassDef */;
-val* var1 /* : MClassDef */;
-var1 = self->attrs[COLOR_model__MProperty___64dintro_mclassdef].val; /* @intro_mclassdef on <self:MProperty> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @intro_mclassdef");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1489);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#intro_mclassdef for (self: Object): MClassDef */
-val* VIRTUAL_model__MProperty__intro_mclassdef(val* self) {
-val* var /* : MClassDef */;
-val* var1 /* : MClassDef */;
-var1 = model__MProperty__intro_mclassdef(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#intro_mclassdef= for (self: MProperty, MClassDef) */
-void model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MProperty___64dintro_mclassdef].val = p0; /* @intro_mclassdef on <self:MProperty> */
-RET_LABEL:;
-}
-/* method model#MProperty#intro_mclassdef= for (self: Object, MClassDef) */
-void VIRTUAL_model__MProperty__intro_mclassdef_61d(val* self, val* p0) {
-model__MProperty__intro_mclassdef_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MProperty#name for (self: MProperty): String */
-val* model__MProperty__name(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = self->attrs[COLOR_model__MProperty___64dname].val; /* @name on <self:MProperty> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @name");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1494);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#name for (self: Object): String */
-val* VIRTUAL_model__MProperty__name(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = model__MProperty__name(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#name= for (self: MProperty, String) */
-void model__MProperty__name_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MProperty___64dname].val = p0; /* @name on <self:MProperty> */
-RET_LABEL:;
-}
-/* method model#MProperty#name= for (self: Object, String) */
-void VIRTUAL_model__MProperty__name_61d(val* self, val* p0) {
-model__MProperty__name_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MProperty#full_name for (self: MProperty): String */
-val* model__MProperty__full_name(val* self) {
-val* var /* : String */;
-val* var1 /* : Array[Object] */;
-long var2 /* : Int */;
-val* var_ /* var : Array[Object] */;
-static val* varonce;
-val* var3 /* : String */;
-char* var4 /* : NativeString */;
-long var5 /* : Int */;
-val* var6 /* : String */;
-val* var7 /* : MClassDef */;
-val* var8 /* : MModule */;
-val* var9 /* : String */;
-static val* varonce10;
-val* var11 /* : String */;
-char* var12 /* : NativeString */;
-long var13 /* : Int */;
-val* var14 /* : String */;
-val* var15 /* : MClassDef */;
-val* var16 /* : MClass */;
-val* var17 /* : String */;
-static val* varonce18;
-val* var19 /* : String */;
-char* var20 /* : NativeString */;
-long var21 /* : Int */;
-val* var22 /* : String */;
-val* var23 /* : String */;
-static val* varonce24;
-val* var25 /* : String */;
-char* var26 /* : NativeString */;
-long var27 /* : Int */;
-val* var28 /* : String */;
-val* var29 /* : String */;
-var1 = NEW_array__Array(&type_array__Arraykernel__Object);
-var2 = 7;
-((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
-var_ = var1;
-if (varonce) {
-var3 = varonce;
-} else {
-var4 = "";
-var5 = 0;
-var6 = string__NativeString__to_s_with_length(var4, var5);
-var3 = var6;
-varonce = var3;
-}
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef]))(self) /* intro_mclassdef on <self:MProperty>*/;
-var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__mmodule]))(var7) /* mmodule on <var7:MClassDef>*/;
-var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model_base__MModule__full_name]))(var8) /* full_name on <var8:MModule>*/;
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
-if (varonce10) {
-var11 = varonce10;
-} else {
-var12 = "::";
-var13 = 2;
-var14 = string__NativeString__to_s_with_length(var12, var13);
-var11 = var14;
-varonce10 = var11;
-}
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
-var15 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef]))(self) /* intro_mclassdef on <self:MProperty>*/;
-var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mclass]))(var15) /* mclass on <var15:MClassDef>*/;
-var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClass__name]))(var16) /* name on <var16:MClass>*/;
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var17) /* add on <var_:Array[Object]>*/;
-if (varonce18) {
-var19 = varonce18;
-} else {
-var20 = "::";
-var21 = 2;
-var22 = string__NativeString__to_s_with_length(var20, var21);
-var19 = var22;
-varonce18 = var19;
-}
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var19) /* add on <var_:Array[Object]>*/;
-var23 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__name]))(self) /* name on <self:MProperty>*/;
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
-if (varonce24) {
-var25 = varonce24;
-} else {
-var26 = "";
-var27 = 0;
-var28 = string__NativeString__to_s_with_length(var26, var27);
-var25 = var28;
-varonce24 = var25;
-}
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var25) /* add on <var_:Array[Object]>*/;
-var29 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
-var = var29;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#full_name for (self: Object): String */
-val* VIRTUAL_model__MProperty__full_name(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = model__MProperty__full_name(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#visibility for (self: MProperty): MVisibility */
-val* model__MProperty__visibility(val* self) {
-val* var /* : MVisibility */;
-val* var1 /* : MVisibility */;
-var1 = self->attrs[COLOR_model__MProperty___64dvisibility].val; /* @visibility on <self:MProperty> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @visibility");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1504);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#visibility for (self: Object): MVisibility */
-val* VIRTUAL_model__MProperty__visibility(val* self) {
-val* var /* : MVisibility */;
-val* var1 /* : MVisibility */;
-var1 = model__MProperty__visibility(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#visibility= for (self: MProperty, MVisibility) */
-void model__MProperty__visibility_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MProperty___64dvisibility].val = p0; /* @visibility on <self:MProperty> */
-RET_LABEL:;
-}
-/* method model#MProperty#visibility= for (self: Object, MVisibility) */
-void VIRTUAL_model__MProperty__visibility_61d(val* self, val* p0) {
-model__MProperty__visibility_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MProperty#init for (self: MProperty, MClassDef, String, MVisibility) */
-void model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
-val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
-val* var_name /* var name: String */;
-val* var_visibility /* var visibility: MVisibility */;
-val* var /* : Array[MProperty] */;
-val* var1 /* : MModule */;
-val* var2 /* : Model */;
-val* var_model /* var model: Model */;
-val* var3 /* : MultiHashMap[String, MProperty] */;
-val* var4 /* : Array[MProperty] */;
-var_intro_mclassdef = p0;
-var_name = p1;
-var_visibility = p2;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__intro_mclassdef_61d]))(self, var_intro_mclassdef) /* intro_mclassdef= on <self:MProperty>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__name_61d]))(self, var_name) /* name= on <self:MProperty>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MProperty__visibility_61d]))(self, var_visibility) /* visibility= on <self:MProperty>*/;
-var = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__intro_mproperties]))(var_intro_mclassdef) /* intro_mproperties on <var_intro_mclassdef:MClassDef>*/;
-((void (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var, self) /* add on <var:Array[MProperty]>*/;
-var1 = ((val* (*)(val*))(var_intro_mclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intro_mclassdef) /* mmodule on <var_intro_mclassdef:MClassDef>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model_base__MModule__model]))(var1) /* model on <var1:MModule>*/;
-var_model = var2;
-var3 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mproperties_by_name]))(var_model) /* mproperties_by_name on <var_model:Model>*/;
-((void (*)(val*, val*, val*))(var3->class->vft[COLOR_more_collections__MultiHashMap__add_one]))(var3, var_name, self) /* add_one on <var3:MultiHashMap[String, MProperty]>*/;
-var4 = ((val* (*)(val*))(var_model->class->vft[COLOR_model__Model__mproperties]))(var_model) /* mproperties on <var_model:Model>*/;
-((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var4, self) /* add on <var4:Array[MProperty]>*/;
-RET_LABEL:;
-}
-/* method model#MProperty#init for (self: Object, MClassDef, String, MVisibility) */
-void VIRTUAL_model__MProperty__init(val* self, val* p0, val* p1, val* p2) {
-model__MProperty__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MProperty#mpropdefs for (self: MProperty): Array[MPropDef] */
-val* model__MProperty__mpropdefs(val* self) {
-val* var /* : Array[MPropDef] */;
-val* var1 /* : Array[MPropDef] */;
-var1 = self->attrs[COLOR_model__MProperty___64dmpropdefs].val; /* @mpropdefs on <self:MProperty> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdefs");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#mpropdefs for (self: Object): Array[MPropDef] */
-val* VIRTUAL_model__MProperty__mpropdefs(val* self) {
-val* var /* : Array[MPropDef] */;
-val* var1 /* : Array[MPropDef] */;
-var1 = model__MProperty__mpropdefs(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#mpropdefs= for (self: MProperty, Array[MPropDef]) */
-void model__MProperty__mpropdefs_61d(val* self, val* p0) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-/* Covariant cast for argument 0 (mpropdefs) <p0:Array[MPropDef]> isa Array[MPROPDEF] */
-/* <p0:Array[MPropDef]> isa Array[MPROPDEF] */
-type_struct = self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF];
-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) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1518);
-exit(1);
-}
-self->attrs[COLOR_model__MProperty___64dmpropdefs].val = p0; /* @mpropdefs on <self:MProperty> */
-RET_LABEL:;
-}
-/* method model#MProperty#mpropdefs= for (self: Object, Array[MPropDef]) */
-void VIRTUAL_model__MProperty__mpropdefs_61d(val* self, val* p0) {
-model__MProperty__mpropdefs_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MProperty#intro for (self: MProperty): MPropDef */
-val* model__MProperty__intro(val* self) {
-val* var /* : MPropDef */;
-val* var1 /* : Array[MPropDef] */;
-val* var2 /* : nullable Object */;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__first]))(var1) /* first on <var1:Array[MPropDef]>*/;
-var = var2;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#intro for (self: Object): MPropDef */
-val* VIRTUAL_model__MProperty__intro(val* self) {
-val* var /* : MPropDef */;
-val* var1 /* : MPropDef */;
-var1 = model__MProperty__intro(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#to_s for (self: MProperty): String */
-val* model__MProperty__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__name]))(self) /* name on <self:MProperty>*/;
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#to_s for (self: Object): String */
-val* VIRTUAL_model__MProperty__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = model__MProperty__to_s(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
-val* model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
-val* var /* : Array[MPropDef] */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var_mtype /* var mtype: MType */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : MType */;
-val* var5 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var6 /* : nullable Object */;
-val* var_cache /* var cache: nullable Array[MPropDef] */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-val* var9 /* : Array[MPropDef] */;
-val* var_candidates /* var candidates: Array[MPropDef] */;
-val* var10 /* : Array[MPropDef] */;
-val* var11 /* : Iterator[nullable Object] */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable Object */;
-val* var_mpropdef /* var mpropdef: MPropDef */;
-val* var14 /* : POSetElement[MModule] */;
-val* var15 /* : MClassDef */;
-val* var16 /* : MModule */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-val* var19 /* : null */;
-val* var20 /* : MClassDef */;
-val* var21 /* : MClassType */;
-short int var22 /* : Bool */;
-short int var23 /* : Bool */;
-long var24 /* : Int */;
-long var25 /* : Int */;
-short int var26 /* : Bool */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-const char* var_class_name;
-short int var31 /* : Bool */;
-val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var33 /* : Array[MPropDef] */;
-val* var_res /* var res: Array[MPropDef] */;
-val* var34 /* : Iterator[nullable Object] */;
-short int var35 /* : Bool */;
-val* var36 /* : nullable Object */;
-val* var_pd1 /* var pd1: MPropDef */;
-val* var37 /* : MClassDef */;
-val* var_cd1 /* var cd1: MClassDef */;
-val* var38 /* : MClass */;
-val* var_c1 /* var c1: MClass */;
-short int var39 /* : Bool */;
-short int var_keep /* var keep: Bool */;
-val* var40 /* : Iterator[nullable Object] */;
-short int var41 /* : Bool */;
-val* var42 /* : nullable Object */;
-val* var_pd2 /* var pd2: MPropDef */;
-short int var43 /* : Bool */;
-val* var45 /* : MClassDef */;
-val* var_cd2 /* var cd2: MClassDef */;
-val* var46 /* : MClass */;
-val* var_c2 /* var c2: MClass */;
-val* var47 /* : MClassType */;
-val* var48 /* : MClassType */;
-short int var49 /* : Bool */;
-val* var50 /* : MModule */;
-val* var51 /* : POSetElement[MModule] */;
-val* var52 /* : MModule */;
-short int var53 /* : Bool */;
-short int var54 /* : Bool */;
-val* var55 /* : MClassType */;
-val* var56 /* : null */;
-val* var57 /* : MClassType */;
-short int var58 /* : Bool */;
-short int var59 /* : Bool */;
-short int var61 /* : Bool */;
-static val* varonce;
-val* var62 /* : String */;
-char* var63 /* : NativeString */;
-long var64 /* : Int */;
-val* var65 /* : String */;
-static val* varonce66;
-val* var67 /* : String */;
-char* var68 /* : NativeString */;
-long var69 /* : Int */;
-val* var70 /* : String */;
-val* var71 /* : String */;
-val* var72 /* : Array[Object] */;
-long var73 /* : Int */;
-val* var74 /* : NativeArray[Object] */;
-val* var75 /* : String */;
-val* var76 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-var_mmodule = p0;
-var_mtype = p1;
-var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
-var2 = !var1;
-if (!var2) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1540);
-exit(1);
-}
-/* <var_mtype:MType> isa MNullableType */
-cltype = type_model__MNullableType.color;
-idtype = type_model__MNullableType.id;
-if(cltype >= var_mtype->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_mtype->type->type_table[cltype] == idtype;
-}
-if (var3){
-var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
-var_mtype = var4;
-} else {
-}
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
-var6 = ((val* (*)(val*, val*, val*))(var5->class->vft[COLOR_more_collections__HashMap2___91d_93d]))(var5, var_mmodule, var_mtype) /* [] on <var5:HashMap2[MModule, MType, Array[MPropDef]]>*/;
-var_cache = var6;
-var7 = NULL;
-if (var_cache == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
-}
-if (var8){
-var = var_cache;
-goto RET_LABEL;
-} else {
-}
-var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
-((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var9);
-var_candidates = var9;
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
-var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
-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_mpropdef = var13;
-var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
-var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
-var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
-var18 = !var17;
-if (var18){
-goto CONTINUE_label;
-} else {
-}
-var19 = NULL;
-var20 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClassDef__bound_mtype]))(var20) /* bound_mtype on <var20:MClassDef>*/;
-var22 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var19, var21) /* is_subtype on <var_mtype:MType>*/;
-var23 = !var22;
-if (var23){
-goto CONTINUE_label;
-} else {
-}
-((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
-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;
-var24 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
-var25 = 1;
-{ /* Inline kernel#Int#<= (var24,var25) */
-/* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
-/* <var25:Int> isa OTHER */
-var28 = 1; /* easy <var25:Int> isa OTHER*/
-if (!var28) {
-var_class_name = type_kernel__Int.name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
-exit(1);
-}
-var31 = var24 <= var25;
-var26 = var31;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
-}
-if (var26){
-var32 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
-((void (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var32, var_mmodule, var_mtype, var_candidates) /* []= on <var32:HashMap2[MModule, MType, Array[MPropDef]]>*/;
-var = var_candidates;
-goto RET_LABEL;
-} else {
-}
-var33 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
-((void (*)(val*))(var33->class->vft[COLOR_array__Array__init]))(var33) /* init on <var33:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var33);
-var_res = var33;
-var34 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
-for(;;) {
-var35 = ((short int (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var34) /* is_ok on <var34:Iterator[nullable Object]>*/;
-if(!var35) break;
-var36 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__item]))(var34) /* item on <var34:Iterator[nullable Object]>*/;
-var_pd1 = var36;
-var37 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
-var_cd1 = var37;
-var38 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
-var_c1 = var38;
-var39 = 1;
-var_keep = var39;
-var40 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
-for(;;) {
-var41 = ((short int (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var40) /* is_ok on <var40:Iterator[nullable Object]>*/;
-if(!var41) break;
-var42 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__item]))(var40) /* item on <var40:Iterator[nullable Object]>*/;
-var_pd2 = var42;
-var43 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
-if (var43){
-goto CONTINUE_label44;
-} else {
-}
-var45 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
-var_cd2 = var45;
-var46 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
-var_c2 = var46;
-var47 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
-var48 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
-var49 = ((short int (*)(val*, val*))(var47->class->vft[COLOR_kernel__Object___61d_61d]))(var47, var48) /* == on <var47:MClassType>*/;
-if (var49){
-var50 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
-var51 = ((val* (*)(val*))(var50->class->vft[COLOR_model_base__MModule__in_importation]))(var50) /* in_importation on <var50:MModule>*/;
-var52 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
-var53 = ((short int (*)(val*, val*))(var51->class->vft[COLOR_poset__POSetElement___60d_61d]))(var51, var52) /* <= on <var51:POSetElement[MModule]>*/;
-if (var53){
-var54 = 0;
-var_keep = var54;
-goto BREAK_label44;
-} else {
-}
-} else {
-var55 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
-var56 = NULL;
-var57 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
-var58 = ((short int (*)(val*, val*, val*, val*))(var55->class->vft[COLOR_model__MType__is_subtype]))(var55, var_mmodule, var56, var57) /* is_subtype on <var55:MClassType>*/;
-if (var58){
-var59 = 0;
-var_keep = var59;
-goto BREAK_label44;
-} else {
-}
-}
-CONTINUE_label44: (void)0;
-((void (*)(val*))(var40->class->vft[COLOR_abstract_collection__Iterator__next]))(var40) /* next on <var40:Iterator[nullable Object]>*/;
-}
-BREAK_label44: (void)0;
-if (var_keep){
-((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
-} else {
-}
-CONTINUE_label60: (void)0;
-((void (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__next]))(var34) /* next on <var34:Iterator[nullable Object]>*/;
-}
-BREAK_label60: (void)0;
-var61 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
-if (var61){
-if (varonce) {
-var62 = varonce;
-} else {
-var63 = "All lost! ";
-var64 = 10;
-var65 = string__NativeString__to_s_with_length(var63, var64);
-var62 = var65;
-varonce = var62;
-}
-if (varonce66) {
-var67 = varonce66;
-} else {
-var68 = ", ";
-var69 = 2;
-var70 = string__NativeString__to_s_with_length(var68, var69);
-var67 = var70;
-varonce66 = var67;
-}
-var71 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var67) /* join on <var_candidates:Array[MPropDef]>*/;
-var72 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var72 = array_instance Array[Object] */
-var73 = 2;
-var74 = NEW_array__NativeArray(var73, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var74)->values[0] = (val*) var62;
-((struct instance_array__NativeArray*)var74)->values[1] = (val*) var71;
-((void (*)(val*, val*, long))(var72->class->vft[COLOR_array__Array__with_native]))(var72, var74, var73) /* with_native on <var72:Array[Object]>*/;
-CHECK_NEW_array__Array(var72);
-}
-var75 = ((val* (*)(val*))(var72->class->vft[COLOR_string__Object__to_s]))(var72) /* to_s on <var72:Array[Object]>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var75) /* print on <self:MProperty>*/;
-} else {
-}
-var76 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_definitions_cache]))(self) /* lookup_definitions_cache on <self:MProperty>*/;
-((void (*)(val*, val*, val*, val*))(var76->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var76, var_mmodule, var_mtype, var_res) /* []= on <var76:HashMap2[MModule, MType, Array[MPropDef]]>*/;
-var = var_res;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_definitions for (self: Object, MModule, MType): Array[MPropDef] */
-val* VIRTUAL_model__MProperty__lookup_definitions(val* self, val* p0, val* p1) {
-val* var /* : Array[MPropDef] */;
-val* var1 /* : Array[MPropDef] */;
-var1 = model__MProperty__lookup_definitions(self, p0, p1);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
-val* model__MProperty__lookup_definitions_cache(val* self) {
-val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-var1 = self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val; /* @lookup_definitions_cache on <self:MProperty> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_definitions_cache");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1597);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
-val* VIRTUAL_model__MProperty__lookup_definitions_cache(val* self) {
-val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-var1 = model__MProperty__lookup_definitions_cache(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_definitions_cache= for (self: MProperty, HashMap2[MModule, MType, Array[MPropDef]]) */
-void model__MProperty__lookup_definitions_cache_61d(val* self, val* p0) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-/* Covariant cast for argument 0 (lookup_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
-/* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
-type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2model_base__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
-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) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1597);
-exit(1);
-}
-self->attrs[COLOR_model__MProperty___64dlookup_definitions_cache].val = p0; /* @lookup_definitions_cache on <self:MProperty> */
-RET_LABEL:;
-}
-/* method model#MProperty#lookup_definitions_cache= for (self: Object, HashMap2[MModule, MType, Array[MPropDef]]) */
-void VIRTUAL_model__MProperty__lookup_definitions_cache_61d(val* self, val* p0) {
-model__MProperty__lookup_definitions_cache_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MProperty#lookup_super_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
-val* model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
-val* var /* : Array[MPropDef] */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var_mtype /* var mtype: MType */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : MType */;
-val* var5 /* : Array[MPropDef] */;
-val* var_candidates /* var candidates: Array[MPropDef] */;
-val* var6 /* : Array[MPropDef] */;
-val* var7 /* : Iterator[nullable Object] */;
-short int var8 /* : Bool */;
-val* var9 /* : nullable Object */;
-val* var_mpropdef /* var mpropdef: MPropDef */;
-val* var10 /* : POSetElement[MModule] */;
-val* var11 /* : MClassDef */;
-val* var12 /* : MModule */;
-short int var13 /* : Bool */;
-short int var14 /* : Bool */;
-val* var15 /* : null */;
-val* var16 /* : MClassDef */;
-val* var17 /* : MClassType */;
-short int var18 /* : Bool */;
-short int var19 /* : Bool */;
-short int var20 /* : Bool */;
-val* var21 /* : MClassDef */;
-val* var22 /* : MClassType */;
-short int var23 /* : Bool */;
-short int var_ /* var : Bool */;
-val* var24 /* : MClassDef */;
-val* var25 /* : MModule */;
-short int var26 /* : Bool */;
-long var27 /* : Int */;
-long var28 /* : Int */;
-short int var29 /* : Bool */;
-short int var31 /* : Bool */;
-int cltype32;
-int idtype33;
-const char* var_class_name;
-short int var34 /* : Bool */;
-val* var35 /* : Array[MPropDef] */;
-val* var_res /* var res: Array[MPropDef] */;
-val* var36 /* : Iterator[nullable Object] */;
-short int var37 /* : Bool */;
-val* var38 /* : nullable Object */;
-val* var_pd1 /* var pd1: MPropDef */;
-val* var39 /* : MClassDef */;
-val* var_cd1 /* var cd1: MClassDef */;
-val* var40 /* : MClass */;
-val* var_c1 /* var c1: MClass */;
-short int var41 /* : Bool */;
-short int var_keep /* var keep: Bool */;
-val* var42 /* : Iterator[nullable Object] */;
-short int var43 /* : Bool */;
-val* var44 /* : nullable Object */;
-val* var_pd2 /* var pd2: MPropDef */;
-short int var45 /* : Bool */;
-val* var47 /* : MClassDef */;
-val* var_cd2 /* var cd2: MClassDef */;
-val* var48 /* : MClass */;
-val* var_c2 /* var c2: MClass */;
-val* var49 /* : MClassType */;
-val* var50 /* : MClassType */;
-short int var51 /* : Bool */;
-val* var52 /* : MModule */;
-val* var53 /* : POSetElement[MModule] */;
-val* var54 /* : MModule */;
-short int var55 /* : Bool */;
-short int var56 /* : Bool */;
-val* var57 /* : MClassType */;
-val* var58 /* : null */;
-val* var59 /* : MClassType */;
-short int var60 /* : Bool */;
-short int var61 /* : Bool */;
-short int var63 /* : Bool */;
-static val* varonce;
-val* var64 /* : String */;
-char* var65 /* : NativeString */;
-long var66 /* : Int */;
-val* var67 /* : String */;
-static val* varonce68;
-val* var69 /* : String */;
-char* var70 /* : NativeString */;
-long var71 /* : Int */;
-val* var72 /* : String */;
-val* var73 /* : String */;
-val* var74 /* : Array[Object] */;
-long var75 /* : Int */;
-val* var76 /* : NativeArray[Object] */;
-val* var77 /* : String */;
-var_mmodule = p0;
-var_mtype = p1;
-var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
-var2 = !var1;
-if (!var2) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1609);
-exit(1);
-}
-/* <var_mtype:MType> isa MNullableType */
-cltype = type_model__MNullableType.color;
-idtype = type_model__MNullableType.id;
-if(cltype >= var_mtype->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_mtype->type->type_table[cltype] == idtype;
-}
-if (var3){
-var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
-var_mtype = var4;
-} else {
-}
-var5 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
-((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var5);
-var_candidates = var5;
-var6 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
-var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__iterator]))(var6) /* iterator on <var6:Array[MPropDef]>*/;
-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_mpropdef = var9;
-var10 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
-var11 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MClassDef__mmodule]))(var11) /* mmodule on <var11:MClassDef>*/;
-var13 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_poset__POSetElement___60d_61d]))(var10, var12) /* <= on <var10:POSetElement[MModule]>*/;
-var14 = !var13;
-if (var14){
-goto CONTINUE_label;
-} else {
-}
-var15 = NULL;
-var16 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on <var16:MClassDef>*/;
-var18 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var15, var17) /* is_subtype on <var_mtype:MType>*/;
-var19 = !var18;
-if (var19){
-goto CONTINUE_label;
-} else {
-}
-var21 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MClassDef__bound_mtype]))(var21) /* bound_mtype on <var21:MClassDef>*/;
-var23 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___61d_61d]))(var_mtype, var22) /* == on <var_mtype:MType>*/;
-var_ = var23;
-if (var23){
-var24 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var25 = ((val* (*)(val*))(var24->class->vft[COLOR_model__MClassDef__mmodule]))(var24) /* mmodule on <var24:MClassDef>*/;
-var26 = ((short int (*)(val*, val*))(var_mmodule->class->vft[COLOR_kernel__Object___61d_61d]))(var_mmodule, var25) /* == on <var_mmodule:MModule>*/;
-var20 = var26;
-} else {
-var20 = var_;
-}
-if (var20){
-goto CONTINUE_label;
-} else {
-}
-((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
-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;
-var27 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
-var28 = 1;
-{ /* Inline kernel#Int#<= (var27,var28) */
-/* Covariant cast for argument 0 (i) <var28:Int> isa OTHER */
-/* <var28:Int> isa OTHER */
-var31 = 1; /* easy <var28:Int> isa OTHER*/
-if (!var31) {
-var_class_name = type_kernel__Int.name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
-exit(1);
-}
-var34 = var27 <= var28;
-var29 = var34;
-goto RET_LABEL30;
-RET_LABEL30:(void)0;
-}
-if (var29){
-var = var_candidates;
-goto RET_LABEL;
-} else {
-}
-var35 = NEW_array__Array(&type_array__Arraymodel__MPropDef);
-((void (*)(val*))(var35->class->vft[COLOR_array__Array__init]))(var35) /* init on <var35:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var35);
-var_res = var35;
-var36 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
-for(;;) {
-var37 = ((short int (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var36) /* is_ok on <var36:Iterator[nullable Object]>*/;
-if(!var37) break;
-var38 = ((val* (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__item]))(var36) /* item on <var36:Iterator[nullable Object]>*/;
-var_pd1 = var38;
-var39 = ((val* (*)(val*))(var_pd1->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd1) /* mclassdef on <var_pd1:MPropDef>*/;
-var_cd1 = var39;
-var40 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mclass]))(var_cd1) /* mclass on <var_cd1:MClassDef>*/;
-var_c1 = var40;
-var41 = 1;
-var_keep = var41;
-var42 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_candidates) /* iterator on <var_candidates:Array[MPropDef]>*/;
-for(;;) {
-var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
-if(!var43) break;
-var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
-var_pd2 = var44;
-var45 = ((short int (*)(val*, val*))(var_pd2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pd2, var_pd1) /* == on <var_pd2:MPropDef>*/;
-if (var45){
-goto CONTINUE_label46;
-} else {
-}
-var47 = ((val* (*)(val*))(var_pd2->class->vft[COLOR_model__MPropDef__mclassdef]))(var_pd2) /* mclassdef on <var_pd2:MPropDef>*/;
-var_cd2 = var47;
-var48 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mclass]))(var_cd2) /* mclass on <var_cd2:MClassDef>*/;
-var_c2 = var48;
-var49 = ((val* (*)(val*))(var_c2->class->vft[COLOR_model__MClass__mclass_type]))(var_c2) /* mclass_type on <var_c2:MClass>*/;
-var50 = ((val* (*)(val*))(var_c1->class->vft[COLOR_model__MClass__mclass_type]))(var_c1) /* mclass_type on <var_c1:MClass>*/;
-var51 = ((short int (*)(val*, val*))(var49->class->vft[COLOR_kernel__Object___61d_61d]))(var49, var50) /* == on <var49:MClassType>*/;
-if (var51){
-var52 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd2) /* mmodule on <var_cd2:MClassDef>*/;
-var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model_base__MModule__in_importation]))(var52) /* in_importation on <var52:MModule>*/;
-var54 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__mmodule]))(var_cd1) /* mmodule on <var_cd1:MClassDef>*/;
-var55 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_poset__POSetElement___60d_61d]))(var53, var54) /* <= on <var53:POSetElement[MModule]>*/;
-if (var55){
-var56 = 0;
-var_keep = var56;
-goto BREAK_label46;
-} else {
-}
-} else {
-var57 = ((val* (*)(val*))(var_cd2->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd2) /* bound_mtype on <var_cd2:MClassDef>*/;
-var58 = NULL;
-var59 = ((val* (*)(val*))(var_cd1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_cd1) /* bound_mtype on <var_cd1:MClassDef>*/;
-var60 = ((short int (*)(val*, val*, val*, val*))(var57->class->vft[COLOR_model__MType__is_subtype]))(var57, var_mmodule, var58, var59) /* is_subtype on <var57:MClassType>*/;
-if (var60){
-var61 = 0;
-var_keep = var61;
-goto BREAK_label46;
-} else {
-}
-}
-CONTINUE_label46: (void)0;
-((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
-}
-BREAK_label46: (void)0;
-if (var_keep){
-((void (*)(val*, val*))(var_res->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_res, var_pd1) /* add on <var_res:Array[MPropDef]>*/;
-} else {
-}
-CONTINUE_label62: (void)0;
-((void (*)(val*))(var36->class->vft[COLOR_abstract_collection__Iterator__next]))(var36) /* next on <var36:Iterator[nullable Object]>*/;
-}
-BREAK_label62: (void)0;
-var63 = ((short int (*)(val*))(var_res->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var_res) /* is_empty on <var_res:Array[MPropDef]>*/;
-if (var63){
-if (varonce) {
-var64 = varonce;
-} else {
-var65 = "All lost! ";
-var66 = 10;
-var67 = string__NativeString__to_s_with_length(var65, var66);
-var64 = var67;
-varonce = var64;
-}
-if (varonce68) {
-var69 = varonce68;
-} else {
-var70 = ", ";
-var71 = 2;
-var72 = string__NativeString__to_s_with_length(var70, var71);
-var69 = var72;
-varonce68 = var69;
-}
-var73 = ((val* (*)(val*, val*))(var_candidates->class->vft[COLOR_string__Collection__join]))(var_candidates, var69) /* join on <var_candidates:Array[MPropDef]>*/;
-var74 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var74 = array_instance Array[Object] */
-var75 = 2;
-var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var76)->values[0] = (val*) var64;
-((struct instance_array__NativeArray*)var76)->values[1] = (val*) var73;
-((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
-CHECK_NEW_array__Array(var74);
-}
-var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var77) /* print on <self:MProperty>*/;
-} else {
-}
-var = var_res;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_super_definitions for (self: Object, MModule, MType): Array[MPropDef] */
-val* VIRTUAL_model__MProperty__lookup_super_definitions(val* self, val* p0, val* p1) {
-val* var /* : Array[MPropDef] */;
-val* var1 /* : Array[MPropDef] */;
-var1 = model__MProperty__lookup_super_definitions(self, p0, p1);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_first_definition for (self: MProperty, MModule, MType): MPropDef */
-val* model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
-val* var /* : MPropDef */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var_mtype /* var mtype: MType */;
-short int var1 /* : Bool */;
-val* var2 /* : Array[MPropDef] */;
-val* var3 /* : nullable Object */;
-var_mmodule = p0;
-var_mtype = p1;
-var1 = ((short int (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__has_mproperty]))(var_mtype, var_mmodule, self) /* has_mproperty on <var_mtype:MType>*/;
-if (!var1) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1671);
-exit(1);
-}
-var2 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(self, var_mmodule, var_mtype) /* lookup_all_definitions on <self:MProperty>*/;
-var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__first]))(var2) /* first on <var2:Array[MPropDef]>*/;
-var = var3;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_first_definition for (self: Object, MModule, MType): MPropDef */
-val* VIRTUAL_model__MProperty__lookup_first_definition(val* self, val* p0, val* p1) {
-val* var /* : MPropDef */;
-val* var1 /* : MPropDef */;
-var1 = model__MProperty__lookup_first_definition(self, p0, p1);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_all_definitions for (self: MProperty, MModule, MType): Array[MPropDef] */
-val* model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
-val* var /* : Array[MPropDef] */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var_mtype /* var mtype: MType */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : MType */;
-val* var5 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var6 /* : nullable Object */;
-val* var_cache /* var cache: nullable Array[MPropDef] */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-val* var9 /* : Array[MPropDef] */;
-val* var_candidates /* var candidates: Array[MPropDef] */;
-val* var10 /* : Array[MPropDef] */;
-val* var11 /* : Iterator[nullable Object] */;
-short int var12 /* : Bool */;
-val* var13 /* : nullable Object */;
-val* var_mpropdef /* var mpropdef: MPropDef */;
-val* var14 /* : POSetElement[MModule] */;
-val* var15 /* : MClassDef */;
-val* var16 /* : MModule */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-val* var19 /* : null */;
-val* var20 /* : MClassDef */;
-val* var21 /* : MClassType */;
-short int var22 /* : Bool */;
-short int var23 /* : Bool */;
-long var24 /* : Int */;
-long var25 /* : Int */;
-short int var26 /* : Bool */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-const char* var_class_name;
-short int var31 /* : Bool */;
-val* var32 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var33 /* : Array[nullable Object] */;
-val* var34 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-var_mmodule = p0;
-var_mtype = p1;
-var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
-var2 = !var1;
-if (!var2) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1679);
-exit(1);
-}
-/* <var_mtype:MType> isa MNullableType */
-cltype = type_model__MNullableType.color;
-idtype = type_model__MNullableType.id;
-if(cltype >= var_mtype->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_mtype->type->type_table[cltype] == idtype;
-}
-if (var3){
-var4 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
-var_mtype = var4;
-} else {
-}
-var5 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
-var6 = ((val* (*)(val*, val*, val*))(var5->class->vft[COLOR_more_collections__HashMap2___91d_93d]))(var5, var_mmodule, var_mtype) /* [] on <var5:HashMap2[MModule, MType, Array[MPropDef]]>*/;
-var_cache = var6;
-var7 = NULL;
-if (var_cache == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
-}
-if (var8){
-var = var_cache;
-goto RET_LABEL;
-} else {
-}
-var9 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymodel__MProperty_VTMPROPDEF]);
-((void (*)(val*))(var9->class->vft[COLOR_array__Array__init]))(var9) /* init on <var9:Array[MPropDef]>*/;
-CHECK_NEW_array__Array(var9);
-var_candidates = var9;
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__mpropdefs]))(self) /* mpropdefs on <self:MProperty>*/;
-var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_collection__Collection__iterator]))(var10) /* iterator on <var10:Array[MPropDef]>*/;
-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_mpropdef = var13;
-var14 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model_base__MModule__in_importation]))(var_mmodule) /* in_importation on <var_mmodule:MModule>*/;
-var15 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MClassDef__mmodule]))(var15) /* mmodule on <var15:MClassDef>*/;
-var17 = ((short int (*)(val*, val*))(var14->class->vft[COLOR_poset__POSetElement___60d_61d]))(var14, var16) /* <= on <var14:POSetElement[MModule]>*/;
-var18 = !var17;
-if (var18){
-goto CONTINUE_label;
-} else {
-}
-var19 = NULL;
-var20 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MPropDef>*/;
-var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MClassDef__bound_mtype]))(var20) /* bound_mtype on <var20:MClassDef>*/;
-var22 = ((short int (*)(val*, val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__is_subtype]))(var_mtype, var_mmodule, var19, var21) /* is_subtype on <var_mtype:MType>*/;
-var23 = !var22;
-if (var23){
-goto CONTINUE_label;
-} else {
-}
-((void (*)(val*, val*))(var_candidates->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_candidates, var_mpropdef) /* add on <var_candidates:Array[MPropDef]>*/;
-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;
-var24 = ((long (*)(val*))(var_candidates->class->vft[COLOR_abstract_collection__Collection__length]))(var_candidates) /* length on <var_candidates:Array[MPropDef]>*/;
-var25 = 1;
-{ /* Inline kernel#Int#<= (var24,var25) */
-/* Covariant cast for argument 0 (i) <var25:Int> isa OTHER */
-/* <var25:Int> isa OTHER */
-var28 = 1; /* easy <var25:Int> isa OTHER*/
-if (!var28) {
-var_class_name = type_kernel__Int.name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
-exit(1);
-}
-var31 = var24 <= var25;
-var26 = var31;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
-}
-if (var26){
-var32 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
-((void (*)(val*, val*, val*, val*))(var32->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var32, var_mmodule, var_mtype, var_candidates) /* []= on <var32:HashMap2[MModule, MType, Array[MPropDef]]>*/;
-var = var_candidates;
-goto RET_LABEL;
-} else {
-}
-((void (*)(val*, val*))(var_mmodule->class->vft[COLOR_model__MModule__linearize_mpropdefs]))(var_mmodule, var_candidates) /* linearize_mpropdefs on <var_mmodule:MModule>*/;
-var33 = ((val* (*)(val*))(var_candidates->class->vft[COLOR_array__AbstractArrayRead__reversed]))(var_candidates) /* reversed on <var_candidates:Array[MPropDef]>*/;
-var_candidates = var33;
-var34 = ((val* (*)(val*))(self->class->vft[COLOR_model__MProperty__lookup_all_definitions_cache]))(self) /* lookup_all_definitions_cache on <self:MProperty>*/;
-((void (*)(val*, val*, val*, val*))(var34->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var34, var_mmodule, var_mtype, var_candidates) /* []= on <var34:HashMap2[MModule, MType, Array[MPropDef]]>*/;
-var = var_candidates;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_all_definitions for (self: Object, MModule, MType): Array[MPropDef] */
-val* VIRTUAL_model__MProperty__lookup_all_definitions(val* self, val* p0, val* p1) {
-val* var /* : Array[MPropDef] */;
-val* var1 /* : Array[MPropDef] */;
-var1 = model__MProperty__lookup_all_definitions(self, p0, p1);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_all_definitions_cache for (self: MProperty): HashMap2[MModule, MType, Array[MPropDef]] */
-val* model__MProperty__lookup_all_definitions_cache(val* self) {
-val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-var1 = self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val; /* @lookup_all_definitions_cache on <self:MProperty> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @lookup_all_definitions_cache");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1708);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_all_definitions_cache for (self: Object): HashMap2[MModule, MType, Array[MPropDef]] */
-val* VIRTUAL_model__MProperty__lookup_all_definitions_cache(val* self) {
-val* var /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-var1 = model__MProperty__lookup_all_definitions_cache(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MProperty#lookup_all_definitions_cache= for (self: MProperty, HashMap2[MModule, MType, Array[MPropDef]]) */
-void model__MProperty__lookup_all_definitions_cache_61d(val* self, val* p0) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-/* Covariant cast for argument 0 (lookup_all_definitions_cache) <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
-/* <p0:HashMap2[MModule, MType, Array[MPropDef]]> isa HashMap2[MModule, MType, Array[MPROPDEF]] */
-type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2model_base__MModulemodel__MTypearray__Arraymodel__MProperty_VTMPROPDEF];
-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) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2[MModule, MType, Array[MPROPDEF]]", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1708);
-exit(1);
-}
-self->attrs[COLOR_model__MProperty___64dlookup_all_definitions_cache].val = p0; /* @lookup_all_definitions_cache on <self:MProperty> */
-RET_LABEL:;
-}
-/* method model#MProperty#lookup_all_definitions_cache= for (self: Object, HashMap2[MModule, MType, Array[MPropDef]]) */
-void VIRTUAL_model__MProperty__lookup_all_definitions_cache_61d(val* self, val* p0) {
-model__MProperty__lookup_all_definitions_cache_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MMethod#init for (self: MMethod, MClassDef, String, MVisibility) */
-void model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
-val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
-val* var_name /* var name: String */;
-val* var_visibility /* var visibility: MVisibility */;
-var_intro_mclassdef = p0;
-var_name = p1;
-var_visibility = p2;
-((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MMethod>*/;
-RET_LABEL:;
-}
-/* method model#MMethod#init for (self: Object, MClassDef, String, MVisibility) */
-void VIRTUAL_model__MMethod__init(val* self, val* p0, val* p1, val* p2) {
-model__MMethod__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MMethod#is_init for (self: MMethod): Bool */
-short int model__MMethod__is_init(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_model__MMethod___64dis_init].s; /* @is_init on <self:MMethod> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethod#is_init for (self: Object): Bool */
-short int VIRTUAL_model__MMethod__is_init(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MMethod__is_init(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethod#is_init= for (self: MMethod, Bool) */
-void model__MMethod__is_init_61d(val* self, short int p0) {
-self->attrs[COLOR_model__MMethod___64dis_init].s = p0; /* @is_init on <self:MMethod> */
-RET_LABEL:;
-}
-/* method model#MMethod#is_init= for (self: Object, Bool) */
-void VIRTUAL_model__MMethod__is_init_61d(val* self, short int p0) {
-model__MMethod__is_init_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MMethod#is_new for (self: MMethod): Bool */
-short int model__MMethod__is_new(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_model__MMethod___64dis_new].s; /* @is_new on <self:MMethod> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethod#is_new for (self: Object): Bool */
-short int VIRTUAL_model__MMethod__is_new(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MMethod__is_new(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethod#is_new= for (self: MMethod, Bool) */
-void model__MMethod__is_new_61d(val* self, short int p0) {
-self->attrs[COLOR_model__MMethod___64dis_new].s = p0; /* @is_new on <self:MMethod> */
-RET_LABEL:;
-}
-/* method model#MMethod#is_new= for (self: Object, Bool) */
-void VIRTUAL_model__MMethod__is_new_61d(val* self, short int p0) {
-model__MMethod__is_new_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MMethod#is_init_for for (self: MMethod, MClass): Bool */
-short int model__MMethod__is_init_for(val* self, val* p0) {
-short int var /* : Bool */;
-val* var_mclass /* var mclass: MClass */;
-short int var1 /* : Bool */;
-var_mclass = p0;
-var1 = ((short int (*)(val*))(self->class->vft[COLOR_model__MMethod__is_init]))(self) /* is_init on <self:MMethod>*/;
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethod#is_init_for for (self: Object, MClass): Bool */
-short int VIRTUAL_model__MMethod__is_init_for(val* self, val* p0) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MMethod__is_init_for(self, p0);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MAttribute#init for (self: MAttribute, MClassDef, String, MVisibility) */
-void model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
-val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
-val* var_name /* var name: String */;
-val* var_visibility /* var visibility: MVisibility */;
-var_intro_mclassdef = p0;
-var_name = p1;
-var_visibility = p2;
-((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MAttribute>*/;
-RET_LABEL:;
-}
-/* method model#MAttribute#init for (self: Object, MClassDef, String, MVisibility) */
-void VIRTUAL_model__MAttribute__init(val* self, val* p0, val* p1, val* p2) {
-model__MAttribute__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MVirtualTypeProp#init for (self: MVirtualTypeProp, MClassDef, String, MVisibility) */
-void model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
-val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
-val* var_name /* var name: String */;
-val* var_visibility /* var visibility: MVisibility */;
-var_intro_mclassdef = p0;
-var_name = p1;
-var_visibility = p2;
-((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MProperty__init]))(self, p0, p1, p2) /* init on <self:MVirtualTypeProp>*/;
-RET_LABEL:;
-}
-/* method model#MVirtualTypeProp#init for (self: Object, MClassDef, String, MVisibility) */
-void VIRTUAL_model__MVirtualTypeProp__init(val* self, val* p0, val* p1, val* p2) {
-model__MVirtualTypeProp__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MVirtualTypeProp#mvirtualtype for (self: MVirtualTypeProp): MVirtualType */
-val* model__MVirtualTypeProp__mvirtualtype(val* self) {
-val* var /* : MVirtualType */;
-val* var1 /* : MVirtualType */;
-var1 = self->attrs[COLOR_model__MVirtualTypeProp___64dmvirtualtype].val; /* @mvirtualtype on <self:MVirtualTypeProp> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mvirtualtype");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1762);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MVirtualTypeProp#mvirtualtype for (self: Object): MVirtualType */
-val* VIRTUAL_model__MVirtualTypeProp__mvirtualtype(val* self) {
-val* var /* : MVirtualType */;
-val* var1 /* : MVirtualType */;
-var1 = model__MVirtualTypeProp__mvirtualtype(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MVirtualTypeProp#mvirtualtype= for (self: MVirtualTypeProp, MVirtualType) */
-void model__MVirtualTypeProp__mvirtualtype_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MVirtualTypeProp___64dmvirtualtype].val = p0; /* @mvirtualtype on <self:MVirtualTypeProp> */
-RET_LABEL:;
-}
-/* method model#MVirtualTypeProp#mvirtualtype= for (self: Object, MVirtualType) */
-void VIRTUAL_model__MVirtualTypeProp__mvirtualtype_61d(val* self, val* p0) {
-model__MVirtualTypeProp__mvirtualtype_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MPropDef#location for (self: MPropDef): Location */
-val* model__MPropDef__location(val* self) {
-val* var /* : Location */;
-val* var1 /* : Location */;
-var1 = self->attrs[COLOR_model__MPropDef___64dlocation].val; /* @location on <self:MPropDef> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @location");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1779);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#location for (self: Object): Location */
-val* VIRTUAL_model__MPropDef__location(val* self) {
-val* var /* : Location */;
-val* var1 /* : Location */;
-var1 = model__MPropDef__location(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#location= for (self: MPropDef, Location) */
-void model__MPropDef__location_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MPropDef___64dlocation].val = p0; /* @location on <self:MPropDef> */
-RET_LABEL:;
-}
-/* method model#MPropDef#location= for (self: Object, Location) */
-void VIRTUAL_model__MPropDef__location_61d(val* self, val* p0) {
-model__MPropDef__location_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MPropDef#mclassdef for (self: MPropDef): MClassDef */
-val* model__MPropDef__mclassdef(val* self) {
-val* var /* : MClassDef */;
-val* var1 /* : MClassDef */;
-var1 = self->attrs[COLOR_model__MPropDef___64dmclassdef].val; /* @mclassdef on <self:MPropDef> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mclassdef");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1782);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#mclassdef for (self: Object): MClassDef */
-val* VIRTUAL_model__MPropDef__mclassdef(val* self) {
-val* var /* : MClassDef */;
-val* var1 /* : MClassDef */;
-var1 = model__MPropDef__mclassdef(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#mclassdef= for (self: MPropDef, MClassDef) */
-void model__MPropDef__mclassdef_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MPropDef___64dmclassdef].val = p0; /* @mclassdef on <self:MPropDef> */
-RET_LABEL:;
-}
-/* method model#MPropDef#mclassdef= for (self: Object, MClassDef) */
-void VIRTUAL_model__MPropDef__mclassdef_61d(val* self, val* p0) {
-model__MPropDef__mclassdef_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MPropDef#mproperty for (self: MPropDef): MProperty */
-val* model__MPropDef__mproperty(val* self) {
-val* var /* : MProperty */;
-val* var1 /* : MProperty */;
-var1 = self->attrs[COLOR_model__MPropDef___64dmproperty].val; /* @mproperty on <self:MPropDef> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mproperty");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1785);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#mproperty for (self: Object): MProperty */
-val* VIRTUAL_model__MPropDef__mproperty(val* self) {
-val* var /* : MProperty */;
-val* var1 /* : MProperty */;
-var1 = model__MPropDef__mproperty(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#mproperty= for (self: MPropDef, MProperty) */
-void model__MPropDef__mproperty_61d(val* self, val* p0) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-/* Covariant cast for argument 0 (mproperty) <p0:MProperty> isa MPROPERTY */
-/* <p0:MProperty> isa MPROPERTY */
-type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
-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) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1785);
-exit(1);
-}
-self->attrs[COLOR_model__MPropDef___64dmproperty].val = p0; /* @mproperty on <self:MPropDef> */
-RET_LABEL:;
-}
-/* method model#MPropDef#mproperty= for (self: Object, MProperty) */
-void VIRTUAL_model__MPropDef__mproperty_61d(val* self, val* p0) {
-model__MPropDef__mproperty_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MPropDef#init for (self: MPropDef, MClassDef, MProperty, Location) */
-void model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var_mproperty /* var mproperty: MProperty */;
-val* var_location /* var location: Location */;
-val* var1 /* : Array[MPropDef] */;
-val* var2 /* : Array[MPropDef] */;
-static val* varonce;
-val* var3 /* : String */;
-char* var4 /* : NativeString */;
-long var5 /* : Int */;
-val* var6 /* : String */;
-val* var7 /* : Array[Object] */;
-long var8 /* : Int */;
-val* var9 /* : NativeArray[Object] */;
-val* var10 /* : String */;
-/* Covariant cast for argument 1 (mproperty) <p1:MProperty> isa MPROPERTY */
-/* <p1:MProperty> isa MPROPERTY */
-type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
-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) {
-var_class_name = p1 == NULL ? "null" : p1->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1788);
-exit(1);
-}
-var_mclassdef = p0;
-var_mproperty = p1;
-var_location = p2;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__mclassdef_61d]))(self, var_mclassdef) /* mclassdef= on <self:MPropDef>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__mproperty_61d]))(self, var_mproperty) /* mproperty= on <self:MPropDef>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__location_61d]))(self, var_location) /* location= on <self:MPropDef>*/;
-var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
-((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var1, self) /* add on <var1:Array[MPropDef]>*/;
-var2 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on <var_mproperty:MProperty>*/;
-((void (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var2, self) /* add on <var2:Array[MPropDef]>*/;
-if (varonce) {
-var3 = varonce;
-} else {
-var4 = "#";
-var5 = 1;
-var6 = string__NativeString__to_s_with_length(var4, var5);
-var3 = var6;
-varonce = var3;
-}
-var7 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var7 = array_instance Array[Object] */
-var8 = 3;
-var9 = NEW_array__NativeArray(var8, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var9)->values[0] = (val*) var_mclassdef;
-((struct instance_array__NativeArray*)var9)->values[1] = (val*) var3;
-((struct instance_array__NativeArray*)var9)->values[2] = (val*) var_mproperty;
-((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
-CHECK_NEW_array__Array(var7);
-}
-var10 = ((val* (*)(val*))(var7->class->vft[COLOR_string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MPropDef__to_s_61d]))(self, var10) /* to_s= on <self:MPropDef>*/;
-RET_LABEL:;
-}
-/* method model#MPropDef#init for (self: Object, MClassDef, MProperty, Location) */
-void VIRTUAL_model__MPropDef__init(val* self, val* p0, val* p1, val* p2) {
-model__MPropDef__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MPropDef#to_s for (self: MPropDef): String */
-val* model__MPropDef__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = self->attrs[COLOR_model__MPropDef___64dto_s].val; /* @to_s on <self:MPropDef> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1798);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#to_s for (self: Object): String */
-val* VIRTUAL_model__MPropDef__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = model__MPropDef__to_s(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#to_s= for (self: MPropDef, String) */
-void model__MPropDef__to_s_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MPropDef___64dto_s].val = p0; /* @to_s on <self:MPropDef> */
-RET_LABEL:;
-}
-/* method model#MPropDef#to_s= for (self: Object, String) */
-void VIRTUAL_model__MPropDef__to_s_61d(val* self, val* p0) {
-model__MPropDef__to_s_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MPropDef#is_intro for (self: MPropDef): Bool */
-short int model__MPropDef__is_intro(val* self) {
-short int var /* : Bool */;
-val* var1 /* : MProperty */;
-val* var2 /* : MPropDef */;
-short int var3 /* : Bool */;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
-var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MProperty__intro]))(var1) /* intro on <var1:MProperty>*/;
-var3 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, self) /* == on <var2:MPropDef>*/;
-var = var3;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#is_intro for (self: Object): Bool */
-short int VIRTUAL_model__MPropDef__is_intro(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MPropDef__is_intro(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#lookup_next_definition for (self: MPropDef, MModule, MType): MPropDef */
-val* model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
-val* var /* : MPropDef */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var_mtype /* var mtype: MType */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-val* var3 /* : MProperty */;
-val* var4 /* : Array[MPropDef] */;
-val* var_mpropdefs /* var mpropdefs: Array[MPropDef] */;
-val* var5 /* : Iterator[nullable Object] */;
-val* var_i /* var i: ArrayIterator[MPropDef] */;
-short int var6 /* : Bool */;
-short int var7 /* : Bool */;
-short int var_ /* var : Bool */;
-val* var8 /* : nullable Object */;
-short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-short int var11 /* : Bool */;
-val* var12 /* : nullable Object */;
-short int var13 /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-var_mmodule = p0;
-var_mtype = p1;
-var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
-var2 = !var1;
-if (!var2) {
-fprintf(stderr, "Runtime error: %s", "Assert failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1812);
-exit(1);
-}
-var3 = ((val* (*)(val*))(self->class->vft[COLOR_model__MPropDef__mproperty]))(self) /* mproperty on <self:MPropDef>*/;
-var4 = ((val* (*)(val*, val*, val*))(var3->class->vft[COLOR_model__MProperty__lookup_all_definitions]))(var3, var_mmodule, var_mtype) /* lookup_all_definitions on <var3:MProperty>*/;
-var_mpropdefs = var4;
-var5 = ((val* (*)(val*))(var_mpropdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mpropdefs) /* iterator on <var_mpropdefs:Array[MPropDef]>*/;
-var_i = var5;
-for(;;) {
-var7 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
-var_ = var7;
-if (var7){
-var8 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:ArrayIterator[MPropDef]>*/;
-var9 = ((short int (*)(val*, val*))(var8->class->vft[COLOR_kernel__Object___33d_61d]))(var8, self) /* != on <var8:nullable Object(MPropDef)>*/;
-var6 = var9;
-} else {
-var6 = var_;
-}
-if (!var6) break;
-((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:ArrayIterator[MPropDef]>*/;
-CONTINUE_label: (void)0;
-}
-BREAK_label: (void)0;
-var10 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
-if (!var10) {
-fprintf(stderr, "Runtime error: %s", "Assert \'has_property\' failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1817);
-exit(1);
-}
-((void (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__next]))(var_i) /* next on <var_i:ArrayIterator[MPropDef]>*/;
-var11 = ((short int (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var_i) /* is_ok on <var_i:ArrayIterator[MPropDef]>*/;
-if (!var11) {
-fprintf(stderr, "Runtime error: %s", "Assert \'has_next_property\' failed");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1819);
-exit(1);
-}
-var12 = ((val* (*)(val*))(var_i->class->vft[COLOR_abstract_collection__Iterator__item]))(var_i) /* item on <var_i:ArrayIterator[MPropDef]>*/;
-/* <var12:nullable Object(MPropDef)> isa MPROPDEF */
-type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPDEF];
-cltype = type_struct->color;
-idtype = type_struct->id;
-if(cltype >= var12->type->table_size) {
-var13 = 0;
-} else {
-var13 = var12->type->type_table[cltype] == idtype;
-}
-if (!var13) {
-var_class_name = var12 == NULL ? "null" : var12->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1820);
-exit(1);
-}
-var = var12;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MPropDef#lookup_next_definition for (self: Object, MModule, MType): MPropDef */
-val* VIRTUAL_model__MPropDef__lookup_next_definition(val* self, val* p0, val* p1) {
-val* var /* : MPropDef */;
-val* var1 /* : MPropDef */;
-var1 = model__MPropDef__lookup_next_definition(self, p0, p1);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethodDef#init for (self: MMethodDef, MClassDef, MMethod, Location) */
-void model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var_mproperty /* var mproperty: MMethod */;
-val* var_location /* var location: Location */;
-/* Covariant cast for argument 1 (mproperty) <p1:MMethod> isa MPROPERTY */
-/* <p1:MMethod> isa MPROPERTY */
-type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
-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) {
-var_class_name = p1 == NULL ? "null" : p1->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1831);
-exit(1);
-}
-var_mclassdef = p0;
-var_mproperty = p1;
-var_location = p2;
-((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MMethodDef>*/;
-RET_LABEL:;
-}
-/* method model#MMethodDef#init for (self: Object, MClassDef, MMethod, Location) */
-void VIRTUAL_model__MMethodDef__init(val* self, val* p0, val* p1, val* p2) {
-model__MMethodDef__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MMethodDef#msignature for (self: MMethodDef): nullable MSignature */
-val* model__MMethodDef__msignature(val* self) {
-val* var /* : nullable MSignature */;
-val* var1 /* : nullable MSignature */;
-var1 = self->attrs[COLOR_model__MMethodDef___64dmsignature].val; /* @msignature on <self:MMethodDef> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethodDef#msignature for (self: Object): nullable MSignature */
-val* VIRTUAL_model__MMethodDef__msignature(val* self) {
-val* var /* : nullable MSignature */;
-val* var1 /* : nullable MSignature */;
-var1 = model__MMethodDef__msignature(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethodDef#msignature= for (self: MMethodDef, nullable MSignature) */
-void model__MMethodDef__msignature_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MMethodDef___64dmsignature].val = p0; /* @msignature on <self:MMethodDef> */
-RET_LABEL:;
-}
-/* method model#MMethodDef#msignature= for (self: Object, nullable MSignature) */
-void VIRTUAL_model__MMethodDef__msignature_61d(val* self, val* p0) {
-model__MMethodDef__msignature_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MMethodDef#is_abstract for (self: MMethodDef): Bool */
-short int model__MMethodDef__is_abstract(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_model__MMethodDef___64dis_abstract].s; /* @is_abstract on <self:MMethodDef> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethodDef#is_abstract for (self: Object): Bool */
-short int VIRTUAL_model__MMethodDef__is_abstract(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MMethodDef__is_abstract(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MMethodDef#is_abstract= for (self: MMethodDef, Bool) */
-void model__MMethodDef__is_abstract_61d(val* self, short int p0) {
-self->attrs[COLOR_model__MMethodDef___64dis_abstract].s = p0; /* @is_abstract on <self:MMethodDef> */
-RET_LABEL:;
-}
-/* method model#MMethodDef#is_abstract= for (self: Object, Bool) */
-void VIRTUAL_model__MMethodDef__is_abstract_61d(val* self, short int p0) {
-model__MMethodDef__is_abstract_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MAttributeDef#init for (self: MAttributeDef, MClassDef, MAttribute, Location) */
-void model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var_mproperty /* var mproperty: MAttribute */;
-val* var_location /* var location: Location */;
-/* Covariant cast for argument 1 (mproperty) <p1:MAttribute> isa MPROPERTY */
-/* <p1:MAttribute> isa MPROPERTY */
-type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
-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) {
-var_class_name = p1 == NULL ? "null" : p1->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1850);
-exit(1);
-}
-var_mclassdef = p0;
-var_mproperty = p1;
-var_location = p2;
-((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MAttributeDef>*/;
-RET_LABEL:;
-}
-/* method model#MAttributeDef#init for (self: Object, MClassDef, MAttribute, Location) */
-void VIRTUAL_model__MAttributeDef__init(val* self, val* p0, val* p1, val* p2) {
-model__MAttributeDef__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MAttributeDef#static_mtype for (self: MAttributeDef): nullable MType */
-val* model__MAttributeDef__static_mtype(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = self->attrs[COLOR_model__MAttributeDef___64dstatic_mtype].val; /* @static_mtype on <self:MAttributeDef> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MAttributeDef#static_mtype for (self: Object): nullable MType */
-val* VIRTUAL_model__MAttributeDef__static_mtype(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = model__MAttributeDef__static_mtype(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MAttributeDef#static_mtype= for (self: MAttributeDef, nullable MType) */
-void model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MAttributeDef___64dstatic_mtype].val = p0; /* @static_mtype on <self:MAttributeDef> */
-RET_LABEL:;
-}
-/* method model#MAttributeDef#static_mtype= for (self: Object, nullable MType) */
-void VIRTUAL_model__MAttributeDef__static_mtype_61d(val* self, val* p0) {
-model__MAttributeDef__static_mtype_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MVirtualTypeDef#init for (self: MVirtualTypeDef, MClassDef, MVirtualTypeProp, Location) */
-void model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-int cltype;
-int idtype;
-const struct type* type_struct;
-const char* var_class_name;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var_mproperty /* var mproperty: MVirtualTypeProp */;
-val* var_location /* var location: Location */;
-/* Covariant cast for argument 1 (mproperty) <p1:MVirtualTypeProp> isa MPROPERTY */
-/* <p1:MVirtualTypeProp> isa MPROPERTY */
-type_struct = self->type->resolution_table->types[COLOR_model__MPropDef_VTMPROPERTY];
-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) {
-var_class_name = p1 == NULL ? "null" : p1->type->name;
-fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1866);
-exit(1);
-}
-var_mclassdef = p0;
-var_mproperty = p1;
-var_location = p2;
-((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_model__MPropDef__init]))(self, p0, p1, p2) /* init on <self:MVirtualTypeDef>*/;
-RET_LABEL:;
-}
-/* method model#MVirtualTypeDef#init for (self: Object, MClassDef, MVirtualTypeProp, Location) */
-void VIRTUAL_model__MVirtualTypeDef__init(val* self, val* p0, val* p1, val* p2) {
-model__MVirtualTypeDef__init(self, p0, p1, p2);
-RET_LABEL:;
-}
-/* method model#MVirtualTypeDef#bound for (self: MVirtualTypeDef): nullable MType */
-val* model__MVirtualTypeDef__bound(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = self->attrs[COLOR_model__MVirtualTypeDef___64dbound].val; /* @bound on <self:MVirtualTypeDef> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MVirtualTypeDef#bound for (self: Object): nullable MType */
-val* VIRTUAL_model__MVirtualTypeDef__bound(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = model__MVirtualTypeDef__bound(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MVirtualTypeDef#bound= for (self: MVirtualTypeDef, nullable MType) */
-void model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MVirtualTypeDef___64dbound].val = p0; /* @bound on <self:MVirtualTypeDef> */
-RET_LABEL:;
-}
-/* method model#MVirtualTypeDef#bound= for (self: Object, nullable MType) */
-void VIRTUAL_model__MVirtualTypeDef__bound_61d(val* self, val* p0) {
-model__MVirtualTypeDef__bound_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MClassKind#to_s for (self: MClassKind): String */
-val* model__MClassKind__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = self->attrs[COLOR_model__MClassKind___64dto_s].val; /* @to_s on <self:MClassKind> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @to_s");
-fprintf(stderr, " (%s:%d)\n", "src/model/model.nit", 1886);
-exit(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MClassKind#to_s for (self: Object): String */
-val* VIRTUAL_model__MClassKind__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = model__MClassKind__to_s(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MClassKind#to_s= for (self: MClassKind, String) */
-void model__MClassKind__to_s_61d(val* self, val* p0) {
-self->attrs[COLOR_model__MClassKind___64dto_s].val = p0; /* @to_s on <self:MClassKind> */
-RET_LABEL:;
-}
-/* method model#MClassKind#to_s= for (self: Object, String) */
-void VIRTUAL_model__MClassKind__to_s_61d(val* self, val* p0) {
-model__MClassKind__to_s_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MClassKind#need_init for (self: MClassKind): Bool */
-short int model__MClassKind__need_init(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_model__MClassKind___64dneed_init].s; /* @need_init on <self:MClassKind> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MClassKind#need_init for (self: Object): Bool */
-short int VIRTUAL_model__MClassKind__need_init(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = model__MClassKind__need_init(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MClassKind#need_init= for (self: MClassKind, Bool) */
-void model__MClassKind__need_init_61d(val* self, short int p0) {
-self->attrs[COLOR_model__MClassKind___64dneed_init].s = p0; /* @need_init on <self:MClassKind> */
-RET_LABEL:;
-}
-/* method model#MClassKind#need_init= for (self: Object, Bool) */
-void VIRTUAL_model__MClassKind__need_init_61d(val* self, short int p0) {
-model__MClassKind__need_init_61d(self, p0);
-RET_LABEL:;
-}
-/* method model#MClassKind#init for (self: MClassKind, String, Bool) */
-void model__MClassKind__init(val* self, val* p0, short int p1) {
-val* var_s /* var s: String */;
-short int var_need_init /* var need_init: Bool */;
-var_s = p0;
-var_need_init = p1;
-((void (*)(val*, val*))(self->class->vft[COLOR_model__MClassKind__to_s_61d]))(self, var_s) /* to_s= on <self:MClassKind>*/;
-((void (*)(val*, short int))(self->class->vft[COLOR_model__MClassKind__need_init_61d]))(self, var_need_init) /* need_init= on <self:MClassKind>*/;
-RET_LABEL:;
-}
-/* method model#MClassKind#init for (self: Object, String, Bool) */
-void VIRTUAL_model__MClassKind__init(val* self, val* p0, short int p1) {
-model__MClassKind__init(self, p0, p1);
-RET_LABEL:;
-}
-/* method model#Object#abstract_kind for (self: Object): MClassKind */
-val* model__Object__abstract_kind(val* self) {
-val* var /* : MClassKind */;
-static val* varonce;
-static int varonce_guard;
-val* var1 /* : MClassKind */;
-val* var2 /* : MClassKind */;
-static val* varonce3;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : String */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
-var1 = varonce;
-} else {
-var2 = NEW_model__MClassKind(&type_model__MClassKind);
-if (varonce3) {
-var4 = varonce3;
-} else {
-var5 = "abstract class";
-var6 = 14;
-var7 = string__NativeString__to_s_with_length(var5, var6);
-var4 = var7;
-varonce3 = var4;
-}
-var8 = 1;
-((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
-var1 = var2;
-varonce = var1;
-varonce_guard = 1;
-}
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#abstract_kind for (self: Object): MClassKind */
-val* VIRTUAL_model__Object__abstract_kind(val* self) {
-val* var /* : MClassKind */;
-val* var1 /* : MClassKind */;
-var1 = model__Object__abstract_kind(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#concrete_kind for (self: Object): MClassKind */
-val* model__Object__concrete_kind(val* self) {
-val* var /* : MClassKind */;
-static val* varonce;
-static int varonce_guard;
-val* var1 /* : MClassKind */;
-val* var2 /* : MClassKind */;
-static val* varonce3;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : String */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
-var1 = varonce;
-} else {
-var2 = NEW_model__MClassKind(&type_model__MClassKind);
-if (varonce3) {
-var4 = varonce3;
-} else {
-var5 = "class";
-var6 = 5;
-var7 = string__NativeString__to_s_with_length(var5, var6);
-var4 = var7;
-varonce3 = var4;
-}
-var8 = 1;
-((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
-var1 = var2;
-varonce = var1;
-varonce_guard = 1;
-}
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#concrete_kind for (self: Object): MClassKind */
-val* VIRTUAL_model__Object__concrete_kind(val* self) {
-val* var /* : MClassKind */;
-val* var1 /* : MClassKind */;
-var1 = model__Object__concrete_kind(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#interface_kind for (self: Object): MClassKind */
-val* model__Object__interface_kind(val* self) {
-val* var /* : MClassKind */;
-static val* varonce;
-static int varonce_guard;
-val* var1 /* : MClassKind */;
-val* var2 /* : MClassKind */;
-static val* varonce3;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : String */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
-var1 = varonce;
-} else {
-var2 = NEW_model__MClassKind(&type_model__MClassKind);
-if (varonce3) {
-var4 = varonce3;
-} else {
-var5 = "interface";
-var6 = 9;
-var7 = string__NativeString__to_s_with_length(var5, var6);
-var4 = var7;
-varonce3 = var4;
-}
-var8 = 0;
-((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
-var1 = var2;
-varonce = var1;
-varonce_guard = 1;
-}
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#interface_kind for (self: Object): MClassKind */
-val* VIRTUAL_model__Object__interface_kind(val* self) {
-val* var /* : MClassKind */;
-val* var1 /* : MClassKind */;
-var1 = model__Object__interface_kind(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#enum_kind for (self: Object): MClassKind */
-val* model__Object__enum_kind(val* self) {
-val* var /* : MClassKind */;
-static val* varonce;
-static int varonce_guard;
-val* var1 /* : MClassKind */;
-val* var2 /* : MClassKind */;
-static val* varonce3;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : String */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
-var1 = varonce;
-} else {
-var2 = NEW_model__MClassKind(&type_model__MClassKind);
-if (varonce3) {
-var4 = varonce3;
-} else {
-var5 = "enum";
-var6 = 4;
-var7 = string__NativeString__to_s_with_length(var5, var6);
-var4 = var7;
-varonce3 = var4;
-}
-var8 = 0;
-((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
-var1 = var2;
-varonce = var1;
-varonce_guard = 1;
-}
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#enum_kind for (self: Object): MClassKind */
-val* VIRTUAL_model__Object__enum_kind(val* self) {
-val* var /* : MClassKind */;
-val* var1 /* : MClassKind */;
-var1 = model__Object__enum_kind(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#extern_kind for (self: Object): MClassKind */
-val* model__Object__extern_kind(val* self) {
-val* var /* : MClassKind */;
-static val* varonce;
-static int varonce_guard;
-val* var1 /* : MClassKind */;
-val* var2 /* : MClassKind */;
-static val* varonce3;
-val* var4 /* : String */;
-char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : String */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
-var1 = varonce;
-} else {
-var2 = NEW_model__MClassKind(&type_model__MClassKind);
-if (varonce3) {
-var4 = varonce3;
-} else {
-var5 = "extern";
-var6 = 6;
-var7 = string__NativeString__to_s_with_length(var5, var6);
-var4 = var7;
-varonce3 = var4;
-}
-var8 = 0;
-((void (*)(val*, val*, short int))(var2->class->vft[COLOR_model__MClassKind__init]))(var2, var4, var8) /* init on <var2:MClassKind>*/;
-CHECK_NEW_model__MClassKind(var2);
-var1 = var2;
-varonce = var1;
-varonce_guard = 1;
-}
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#Object#extern_kind for (self: Object): MClassKind */
-val* VIRTUAL_model__Object__extern_kind(val* self) {
-val* var /* : MClassKind */;
-val* var1 /* : MClassKind */;
-var1 = model__Object__extern_kind(self);