lib/html: implement the tag list as an hashset instead of a array.
[nit.git] / c_src / nit__modelize_property.sep.1.c
index 3941324..4ccc72f 100644 (file)
@@ -7,7 +7,7 @@ var1 = self->attrs[COLOR_nit__modelize_property__ToolContext___modelize_property
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelize_property_phase");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 24);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -26,20 +26,19 @@ val* var6 /* : nullable Object */;
 val* var_nclassdef /* var nclassdef: AClassdef */;
 val* var7 /* : nullable Array[AClassdef] */;
 val* var9 /* : nullable Array[AClassdef] */;
-val* var10 /* : null */;
+short int var10 /* : Bool */;
 short int var11 /* : Bool */;
-short int var12 /* : Bool */;
-val* var13 /* : ToolContext */;
-val* var15 /* : ToolContext */;
-val* var16 /* : ModelBuilder */;
+val* var12 /* : ToolContext */;
+val* var14 /* : ToolContext */;
+val* var15 /* : ModelBuilder */;
 var_nmodule = p0;
 {
 { /* Inline parser_nodes#AModule#n_classdefs (var_nmodule) on <var_nmodule:AModule> */
 var2 = var_nmodule->attrs[COLOR_nit__parser_nodes__AModule___n_classdefs].val; /* _n_classdefs on <var_nmodule:AModule> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_classdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 919);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1096);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -52,11 +51,11 @@ var3 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(v
 var_4 = var3;
 for(;;) {
 {
-var5 = ((short int (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_4) /* is_ok on <var_4:Iterator[AClassdef]>*/;
+var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:Iterator[AClassdef]>*/
 }
 if (var5){
 {
-var6 = ((val* (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_4) /* item on <var_4:Iterator[AClassdef]>*/;
+var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:Iterator[AClassdef]>*/
 }
 var_nclassdef = var6;
 {
@@ -66,51 +65,48 @@ var7 = var9;
 RET_LABEL8:(void)0;
 }
 }
-var10 = NULL;
 if (var7 == NULL) {
-var11 = 1; /* is null */
+var10 = 1; /* is null */
 } else {
-var11 = 0; /* arg is null but recv is not */
+var10 = 0; /* arg is null but recv is not */
 }
 if (0) {
-var12 = standard___standard__Array___standard__kernel__Object___61d_61d(var7, var10);
-var11 = var12;
+var11 = standard___standard__Array___standard__kernel__Object___61d_61d(var7, ((val*)NULL));
+var10 = var11;
 }
-if (var11){
+if (var10){
 goto BREAK_label;
 } else {
 }
 {
 { /* Inline phase#Phase#toolcontext (self) on <self:ModelizePropertyPhase> */
-var15 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:ModelizePropertyPhase> */
-if (unlikely(var15 == NULL)) {
+var14 = self->attrs[COLOR_nit__phase__Phase___toolcontext].val; /* _toolcontext on <self:ModelizePropertyPhase> */
+if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 201);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__phase, 200);
+fatal_exit(1);
 }
-var13 = var15;
-RET_LABEL14:(void)0;
+var12 = var14;
+RET_LABEL13:(void)0;
 }
 }
 {
-var16 = nit__modelbuilder_base___ToolContext___modelbuilder(var13);
+var15 = nit__modelbuilder_base___ToolContext___modelbuilder(var12);
 }
 {
-nit__modelize_property___ModelBuilder___build_properties(var16, var_nclassdef); /* Direct call modelize_property#ModelBuilder#build_properties on <var16:ModelBuilder>*/
+nit__modelize_property___ModelBuilder___build_properties(var15, var_nclassdef); /* Direct call modelize_property#ModelBuilder#build_properties on <var15:ModelBuilder>*/
 }
 BREAK_label: (void)0;
 {
-((void (*)(val* self))(var_4->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_4) /* next on <var_4:Iterator[AClassdef]>*/;
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:Iterator[AClassdef]>*/
 }
 } else {
-goto BREAK_label17;
+goto BREAK_label16;
 }
 }
-BREAK_label17: (void)0;
+BREAK_label16: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_4) on <var_4:Iterator[AClassdef]> */
-RET_LABEL18:(void)0;
-}
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:Iterator[AClassdef]>*/
 }
 RET_LABEL:;
 }
@@ -122,7 +118,7 @@ var1 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___mpropdef2npropde
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 40);
-show_backtrace(1);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -136,34 +132,31 @@ val* var1 /* : HashMap[MPropDef, APropdef] */;
 val* var3 /* : HashMap[MPropDef, APropdef] */;
 val* var4 /* : nullable Object */;
 val* var_res /* var res: nullable Object */;
-val* var5 /* : null */;
+short int var5 /* : Bool */;
 short int var6 /* : Bool */;
-short int var7 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var8 /* : Bool */;
 short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-val* var11 /* : ToolContext */;
-val* var13 /* : ToolContext */;
+val* var10 /* : ToolContext */;
+val* var12 /* : ToolContext */;
+short int var13 /* : Bool */;
 short int var14 /* : Bool */;
-short int var15 /* : Bool */;
 int cltype;
 int idtype;
 short int var_ /* var : Bool */;
-val* var16 /* : MProperty */;
-val* var18 /* : MProperty */;
-short int var19 /* : Bool */;
-short int var21 /* : Bool */;
-val* var22 /* : HashMap[MClassDef, AClassdef] */;
-val* var24 /* : HashMap[MClassDef, AClassdef] */;
-val* var25 /* : MClassDef */;
-val* var27 /* : MClassDef */;
-val* var28 /* : nullable Object */;
-val* var29 /* : null */;
-short int var30 /* : Bool */;
+val* var15 /* : MProperty */;
+val* var17 /* : MProperty */;
+short int var18 /* : Bool */;
+short int var20 /* : Bool */;
+val* var21 /* : HashMap[MClassDef, AClassdef] */;
+val* var23 /* : HashMap[MClassDef, AClassdef] */;
+val* var24 /* : MClassDef */;
+val* var26 /* : MClassDef */;
+val* var27 /* : nullable Object */;
+short int var28 /* : Bool */;
+short int var29 /* : Bool */;
 short int var31 /* : Bool */;
-short int var33 /* : Bool */;
-short int var34 /* : Bool */;
-val* var35 /* : null */;
+short int var32 /* : Bool */;
 var_mpropdef = p0;
 {
 { /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (self) on <self:ModelBuilder> */
@@ -171,7 +164,7 @@ var3 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___mpropdef2npropde
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 40);
-show_backtrace(1);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -181,40 +174,39 @@ RET_LABEL2:(void)0;
 var4 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var1, var_mpropdef);
 }
 var_res = var4;
-var5 = NULL;
 if (var_res == NULL) {
-var6 = 0; /* is null */
+var5 = 0; /* is null */
 } else {
-var6 = 1; /* arg is null and recv is not */
+var5 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_res,var5) on <var_res:nullable Object(nullable APropdef)> */
-var_other = var5;
+{ /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable Object(nullable APropdef)> */
+var_other = ((val*)NULL);
 {
-var9 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable APropdef(APropdef)>*/;
+var8 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other); /* == on <var_res:nullable APropdef(APropdef)>*/
 }
-var10 = !var9;
-var7 = var10;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+var9 = !var8;
+var6 = var9;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
-var6 = var7;
+var5 = var6;
 }
-if (var6){
+if (var5){
 {
 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
-var13 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
-if (unlikely(var13 == NULL)) {
+var12 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+fatal_exit(1);
 }
-var11 = var13;
-RET_LABEL12:(void)0;
+var10 = var12;
+RET_LABEL11:(void)0;
 }
 }
 {
-nit__phase___ToolContext___run_phases_on_npropdef(var11, var_res); /* Direct call phase#ToolContext#run_phases_on_npropdef on <var11:ToolContext>*/
+nit__phase___ToolContext___run_phases_on_npropdef(var10, var_res); /* Direct call phase#ToolContext#run_phases_on_npropdef on <var10:ToolContext>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -224,92 +216,90 @@ goto RET_LABEL;
 cltype = type_nit__MMethodDef.color;
 idtype = type_nit__MMethodDef.id;
 if(cltype >= var_mpropdef->type->table_size) {
-var15 = 0;
+var14 = 0;
 } else {
-var15 = var_mpropdef->type->type_table[cltype] == idtype;
+var14 = var_mpropdef->type->type_table[cltype] == idtype;
 }
-var_ = var15;
-if (var15){
+var_ = var14;
+if (var14){
 {
 { /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef(MMethodDef)> */
-var18 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef(MMethodDef)> */
-if (unlikely(var18 == NULL)) {
+var17 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef(MMethodDef)> */
+if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var16 = var18;
-RET_LABEL17:(void)0;
+var15 = var17;
+RET_LABEL16:(void)0;
 }
 }
 {
-{ /* Inline model#MMethod#is_root_init (var16) on <var16:MProperty(MMethod)> */
-var21 = var16->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var16:MProperty(MMethod)> */
-var19 = var21;
-RET_LABEL20:(void)0;
+{ /* Inline model#MMethod#is_root_init (var15) on <var15:MProperty(MMethod)> */
+var20 = var15->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var15:MProperty(MMethod)> */
+var18 = var20;
+RET_LABEL19:(void)0;
 }
 }
-var14 = var19;
+var13 = var18;
 } else {
-var14 = var_;
+var13 = var_;
 }
-if (var14){
+if (var13){
 {
 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (self) on <self:ModelBuilder> */
-var24 = self->attrs[COLOR_nit__modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
-if (unlikely(var24 == NULL)) {
+var23 = self->attrs[COLOR_nit__modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
+if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 426);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 449);
+fatal_exit(1);
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef(MMethodDef)> */
-var27 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef(MMethodDef)> */
-if (unlikely(var27 == NULL)) {
+var26 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef(MMethodDef)> */
+if (unlikely(var26 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
+fatal_exit(1);
 }
-var25 = var27;
-RET_LABEL26:(void)0;
+var24 = var26;
+RET_LABEL25:(void)0;
 }
 }
 {
-var28 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var22, var25);
+var27 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var21, var24);
 }
-var_res = var28;
-var29 = NULL;
+var_res = var27;
 if (var_res == NULL) {
-var30 = 0; /* is null */
+var28 = 0; /* is null */
 } else {
-var30 = 1; /* arg is null and recv is not */
+var28 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_res,var29) on <var_res:nullable Object(nullable AClassdef)> */
-var_other = var29;
+{ /* Inline kernel#Object#!= (var_res,((val*)NULL)) on <var_res:nullable Object(nullable AClassdef)> */
+var_other = ((val*)NULL);
 {
-var33 = ((short int (*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable AClassdef(AClassdef)>*/;
+var31 = ((short int(*)(val* self, val* p0))(var_res->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_res, var_other); /* == on <var_res:nullable AClassdef(AClassdef)>*/
 }
-var34 = !var33;
-var31 = var34;
-goto RET_LABEL32;
-RET_LABEL32:(void)0;
+var32 = !var31;
+var29 = var32;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
 }
-var30 = var31;
+var28 = var29;
 }
-if (var30){
+if (var28){
 var = var_res;
 goto RET_LABEL;
 } else {
 }
 } else {
 }
-var35 = NULL;
-var = var35;
+var = ((val*)NULL);
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -324,25 +314,24 @@ val* var2 /* : HashMap[MClassDef, AClassdef] */;
 val* var4 /* : HashMap[MClassDef, AClassdef] */;
 val* var5 /* : nullable Object */;
 val* var_n /* var n: nullable AClassdef */;
-val* var6 /* : null */;
+short int var6 /* : Bool */;
 short int var7 /* : Bool */;
-short int var8 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var10 /* : Bool */;
-short int var12 /* : Bool */;
-val* var13 /* : ANodes[APropdef] */;
-val* var15 /* : ANodes[APropdef] */;
+short int var9 /* : Bool */;
+short int var11 /* : Bool */;
+val* var12 /* : ANodes[APropdef] */;
+val* var14 /* : ANodes[APropdef] */;
 val* var_ /* var : ANodes[APropdef] */;
-val* var16 /* : Iterator[ANode] */;
-val* var_17 /* var : Iterator[APropdef] */;
-short int var18 /* : Bool */;
-val* var19 /* : nullable Object */;
+val* var15 /* : Iterator[ANode] */;
+val* var_16 /* var : Iterator[APropdef] */;
+short int var17 /* : Bool */;
+val* var18 /* : nullable Object */;
 val* var_npropdef /* var npropdef: APropdef */;
-short int var20 /* : Bool */;
+short int var19 /* : Bool */;
 int cltype;
 int idtype;
-val* var21 /* : ToolContext */;
-val* var23 /* : ToolContext */;
+val* var20 /* : ToolContext */;
+val* var22 /* : ToolContext */;
 var_mclassdef = p0;
 var1 = NEW_standard__Array(&type_standard__Array__nit__AAttrPropdef);
 {
@@ -354,8 +343,8 @@ var_res = var1;
 var4 = self->attrs[COLOR_nit__modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 426);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 449);
+fatal_exit(1);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -365,83 +354,82 @@ RET_LABEL3:(void)0;
 var5 = standard___standard__HashMap___standard__abstract_collection__MapRead__get_or_null(var2, var_mclassdef);
 }
 var_n = var5;
-var6 = NULL;
 if (var_n == NULL) {
-var7 = 1; /* is null */
+var6 = 1; /* is null */
 } else {
-var7 = 0; /* arg is null but recv is not */
+var6 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_n,var6) on <var_n:nullable AClassdef> */
-var_other = var6;
+{ /* Inline kernel#Object#== (var_n,((val*)NULL)) on <var_n:nullable AClassdef> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_n,var_other) on <var_n:nullable AClassdef(AClassdef)> */
-var12 = var_n == var_other;
-var10 = var12;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var11 = var_n == var_other;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
 }
 }
-var8 = var10;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
-var7 = var8;
+var6 = var7;
 }
-if (var7){
+if (var6){
 var = var_res;
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline parser_nodes#AClassdef#n_propdefs (var_n) on <var_n:nullable AClassdef(AClassdef)> */
-var15 = var_n->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_n:nullable AClassdef(AClassdef)> */
-if (unlikely(var15 == NULL)) {
+var14 = var_n->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_n:nullable AClassdef(AClassdef)> */
+if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1012);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
+fatal_exit(1);
 }
-var13 = var15;
-RET_LABEL14:(void)0;
+var12 = var14;
+RET_LABEL13:(void)0;
 }
 }
-var_ = var13;
+var_ = var12;
 {
-var16 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
+var15 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
 }
-var_17 = var16;
+var_16 = var15;
 for(;;) {
 {
-var18 = ((short int (*)(val* self))(var_17->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_17) /* is_ok on <var_17:Iterator[APropdef]>*/;
+var17 = ((short int(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_16); /* is_ok on <var_16:Iterator[APropdef]>*/
 }
-if (var18){
+if (var17){
 {
-var19 = ((val* (*)(val* self))(var_17->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_17) /* item on <var_17:Iterator[APropdef]>*/;
+var18 = ((val*(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_16); /* item on <var_16:Iterator[APropdef]>*/
 }
-var_npropdef = var19;
+var_npropdef = var18;
 /* <var_npropdef:APropdef> isa AAttrPropdef */
 cltype = type_nit__AAttrPropdef.color;
 idtype = type_nit__AAttrPropdef.id;
 if(cltype >= var_npropdef->type->table_size) {
-var20 = 0;
+var19 = 0;
 } else {
-var20 = var_npropdef->type->type_table[cltype] == idtype;
+var19 = var_npropdef->type->type_table[cltype] == idtype;
 }
-if (var20){
+if (var19){
 {
 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
-var23 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
-if (unlikely(var23 == NULL)) {
+var22 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+fatal_exit(1);
 }
-var21 = var23;
-RET_LABEL22:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-nit__phase___ToolContext___run_phases_on_npropdef(var21, var_npropdef); /* Direct call phase#ToolContext#run_phases_on_npropdef on <var21:ToolContext>*/
+nit__phase___ToolContext___run_phases_on_npropdef(var20, var_npropdef); /* Direct call phase#ToolContext#run_phases_on_npropdef on <var20:ToolContext>*/
 }
 {
 standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_res, var_npropdef); /* Direct call array#Array#add on <var_res:Array[AAttrPropdef]>*/
@@ -449,7 +437,7 @@ standard___standard__Array___standard__abstract_collection__SimpleCollection__ad
 } else {
 }
 {
-((void (*)(val* self))(var_17->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_17) /* next on <var_17:Iterator[APropdef]>*/;
+((void(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_16); /* next on <var_16:Iterator[APropdef]>*/
 }
 } else {
 goto BREAK_label;
@@ -457,9 +445,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_17) on <var_17:Iterator[APropdef]> */
-RET_LABEL24:(void)0;
-}
+((void(*)(val* self))((((long)var_16&3)?class_info[((long)var_16&3)]:var_16->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_16); /* finish on <var_16:Iterator[APropdef]>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -471,66 +457,122 @@ void nit__modelize_property___ModelBuilder___build_properties(val* self, val* p0
 val* var_nclassdef /* var nclassdef: AClassdef */;
 short int var /* : Bool */;
 short int var2 /* : Bool */;
-short int var3 /* : Bool */;
-val* var5 /* : nullable MClassDef */;
-val* var7 /* : nullable MClassDef */;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var8 /* : nullable POSetElement[MClassDef] */;
-val* var10 /* : nullable POSetElement[MClassDef] */;
-val* var11 /* : null */;
-short int var12 /* : Bool */;
-short int var13 /* : Bool */;
+val* var4 /* : nullable MClassDef */;
+val* var6 /* : nullable MClassDef */;
+val* var_mclassdef /* var mclassdef: nullable MClassDef */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var15 /* : Bool */;
+short int var10 /* : Bool */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable POSetElement[MClassDef] */;
+val* var15 /* : nullable POSetElement[MClassDef] */;
+short int var16 /* : Bool */;
 short int var17 /* : Bool */;
-val* var18 /* : nullable POSetElement[MClassDef] */;
-val* var20 /* : nullable POSetElement[MClassDef] */;
-val* var21 /* : Collection[nullable Object] */;
+short int var19 /* : Bool */;
+short int var21 /* : Bool */;
+val* var22 /* : nullable POSetElement[MClassDef] */;
+val* var24 /* : nullable POSetElement[MClassDef] */;
+val* var25 /* : Collection[nullable Object] */;
 val* var_ /* var : Collection[MClassDef] */;
-val* var22 /* : Iterator[nullable Object] */;
-val* var_23 /* var : Iterator[MClassDef] */;
-short int var24 /* : Bool */;
-val* var25 /* : nullable Object */;
+val* var26 /* : Iterator[nullable Object] */;
+val* var_27 /* var : Iterator[MClassDef] */;
+short int var28 /* : Bool */;
+val* var29 /* : nullable Object */;
 val* var_superclassdef /* var superclassdef: MClassDef */;
-val* var26 /* : HashMap[MClassDef, AClassdef] */;
-val* var28 /* : HashMap[MClassDef, AClassdef] */;
-short int var29 /* : Bool */;
-short int var30 /* : Bool */;
-val* var31 /* : HashMap[MClassDef, AClassdef] */;
-val* var33 /* : HashMap[MClassDef, AClassdef] */;
-val* var34 /* : nullable Object */;
-val* var37 /* : nullable Array[AClassdef] */;
-val* var39 /* : nullable Array[AClassdef] */;
-val* var_40 /* var : nullable Array[AClassdef] */;
-val* var41 /* : ArrayIterator[nullable Object] */;
-val* var_42 /* var : ArrayIterator[AClassdef] */;
-short int var43 /* : Bool */;
-val* var44 /* : nullable Object */;
+val* var30 /* : HashMap[MClassDef, AClassdef] */;
+val* var32 /* : HashMap[MClassDef, AClassdef] */;
+short int var33 /* : Bool */;
+short int var34 /* : Bool */;
+val* var35 /* : HashMap[MClassDef, AClassdef] */;
+val* var37 /* : HashMap[MClassDef, AClassdef] */;
+val* var38 /* : nullable Object */;
+val* var40 /* : nullable Array[AClassdef] */;
+val* var42 /* : nullable Array[AClassdef] */;
+val* var_43 /* var : nullable Array[AClassdef] */;
+val* var44 /* : ArrayIterator[nullable Object] */;
+val* var_45 /* var : ArrayIterator[AClassdef] */;
+short int var46 /* : Bool */;
+val* var47 /* : nullable Object */;
 val* var_nclassdef2 /* var nclassdef2: AClassdef */;
-val* var45 /* : ANodes[APropdef] */;
-val* var47 /* : ANodes[APropdef] */;
-val* var_48 /* var : ANodes[APropdef] */;
-val* var49 /* : Iterator[ANode] */;
-val* var_50 /* var : Iterator[APropdef] */;
-short int var51 /* : Bool */;
-val* var52 /* : nullable Object */;
+val* var48 /* : ANodes[APropdef] */;
+val* var50 /* : ANodes[APropdef] */;
+val* var_51 /* var : ANodes[APropdef] */;
+val* var52 /* : Iterator[ANode] */;
+val* var_53 /* var : Iterator[APropdef] */;
+short int var54 /* : Bool */;
+val* var55 /* : nullable Object */;
 val* var_npropdef /* var npropdef: APropdef */;
-val* var55 /* : ANodes[APropdef] */;
 val* var57 /* : ANodes[APropdef] */;
-val* var_58 /* var : ANodes[APropdef] */;
-val* var59 /* : Iterator[ANode] */;
-val* var_60 /* var : Iterator[APropdef] */;
-short int var61 /* : Bool */;
-val* var62 /* : nullable Object */;
-val* var_npropdef63 /* var npropdef: APropdef */;
-val* var66 /* : ANodes[APropdef] */;
-val* var68 /* : ANodes[APropdef] */;
-val* var_69 /* var : ANodes[APropdef] */;
-val* var70 /* : Iterator[ANode] */;
-val* var_71 /* var : Iterator[APropdef] */;
-short int var72 /* : Bool */;
-val* var73 /* : nullable Object */;
-val* var_npropdef74 /* var npropdef: APropdef */;
+val* var59 /* : ANodes[APropdef] */;
+val* var_60 /* var : ANodes[APropdef] */;
+val* var61 /* : Iterator[ANode] */;
+val* var_62 /* var : Iterator[APropdef] */;
+short int var63 /* : Bool */;
+val* var64 /* : nullable Object */;
+val* var_npropdef65 /* var npropdef: APropdef */;
+val* var67 /* : ANodes[APropdef] */;
+val* var69 /* : ANodes[APropdef] */;
+val* var_70 /* var : ANodes[APropdef] */;
+val* var71 /* : Iterator[ANode] */;
+val* var_72 /* var : Iterator[APropdef] */;
+short int var73 /* : Bool */;
+val* var74 /* : nullable Object */;
+val* var_npropdef75 /* var npropdef: APropdef */;
+short int var76 /* : Bool */;
+int cltype;
+int idtype;
+short int var77 /* : Bool */;
+val* var79 /* : nullable MPropDef */;
+val* var81 /* : nullable MPropDef */;
+val* var_mpropdef /* var mpropdef: nullable MVirtualTypeDef */;
+short int var82 /* : Bool */;
+short int var83 /* : Bool */;
+short int var85 /* : Bool */;
+short int var87 /* : Bool */;
+val* var88 /* : nullable MType */;
+val* var90 /* : nullable MType */;
+short int var91 /* : Bool */;
+short int var92 /* : Bool */;
+short int var94 /* : Bool */;
+short int var96 /* : Bool */;
+val* var97 /* : MProperty */;
+val* var99 /* : MProperty */;
+val* var100 /* : MClassType */;
+val* var102 /* : MClassType */;
+val* var103 /* : MModule */;
+val* var105 /* : MModule */;
+short int var106 /* : Bool */;
+short int var107 /* : Bool */;
+val* var108 /* : MModule */;
+val* var110 /* : MModule */;
+val* var111 /* : Model */;
+val* var113 /* : Model */;
+val* var114 /* : MNullType */;
+val* var116 /* : MNullType */;
+val* var119 /* : ANodes[APropdef] */;
+val* var121 /* : ANodes[APropdef] */;
+val* var_122 /* var : ANodes[APropdef] */;
+val* var123 /* : Iterator[ANode] */;
+val* var_124 /* var : Iterator[APropdef] */;
+short int var125 /* : Bool */;
+val* var126 /* : nullable Object */;
+val* var_npropdef127 /* var npropdef: APropdef */;
+short int var128 /* : Bool */;
+int cltype129;
+int idtype130;
+short int var131 /* : Bool */;
+val* var134 /* : ANodes[APropdef] */;
+val* var136 /* : ANodes[APropdef] */;
+val* var_137 /* var : ANodes[APropdef] */;
+val* var138 /* : Iterator[ANode] */;
+val* var_139 /* var : Iterator[APropdef] */;
+short int var140 /* : Bool */;
+val* var141 /* : nullable Object */;
+val* var_npropdef142 /* var npropdef: APropdef */;
+short int var143 /* : Bool */;
+int cltype144;
+int idtype145;
 var_nclassdef = p0;
 {
 { /* Inline modelize_property#AClassdef#build_properties_is_done (var_nclassdef) on <var_nclassdef:AClassdef> */
@@ -543,307 +585,586 @@ if (var){
 goto RET_LABEL;
 } else {
 }
-var3 = 1;
 {
-{ /* Inline modelize_property#AClassdef#build_properties_is_done= (var_nclassdef,var3) on <var_nclassdef:AClassdef> */
-var_nclassdef->attrs[COLOR_nit__modelize_property__AClassdef___build_properties_is_done].s = var3; /* _build_properties_is_done on <var_nclassdef:AClassdef> */
-RET_LABEL4:(void)0;
+{ /* Inline modelize_property#AClassdef#build_properties_is_done= (var_nclassdef,1) on <var_nclassdef:AClassdef> */
+var_nclassdef->attrs[COLOR_nit__modelize_property__AClassdef___build_properties_is_done].s = 1; /* _build_properties_is_done on <var_nclassdef:AClassdef> */
+RET_LABEL3:(void)0;
 }
 }
 {
 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef> */
-var7 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef> */
-var5 = var7;
-RET_LABEL6:(void)0;
+var6 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___mclassdef].val; /* _mclassdef on <var_nclassdef:AClassdef> */
+var4 = var6;
+RET_LABEL5:(void)0;
 }
 }
-if (unlikely(var5 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 89);
-show_backtrace(1);
+var_mclassdef = var4;
+if (var_mclassdef == NULL) {
+var7 = 1; /* is null */
+} else {
+var7 = 0; /* arg is null but recv is not */
 }
-var_mclassdef = var5;
+if (0) {
+{ /* Inline kernel#Object#== (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MClassDef#in_hierarchy (var_mclassdef) on <var_mclassdef:MClassDef> */
-var10 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef:MClassDef> */
+{ /* Inline kernel#Object#is_same_instance (var_mclassdef,var_other) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var12 = var_mclassdef == var_other;
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+}
 var8 = var10;
+goto RET_LABEL9;
 RET_LABEL9:(void)0;
 }
+var7 = var8;
+}
+if (var7){
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline model#MClassDef#in_hierarchy (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var15 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var13 = var15;
+RET_LABEL14:(void)0;
+}
 }
-var11 = NULL;
-if (var8 == NULL) {
-var12 = 1; /* is null */
+if (var13 == NULL) {
+var16 = 1; /* is null */
 } else {
-var12 = 0; /* arg is null but recv is not */
+var16 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var8,var11) on <var8:nullable POSetElement[MClassDef]> */
-var_other = var11;
+{ /* Inline kernel#Object#== (var13,((val*)NULL)) on <var13:nullable POSetElement[MClassDef]> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:nullable POSetElement[MClassDef](POSetElement[MClassDef])> */
-var17 = var8 == var_other;
-var15 = var17;
-goto RET_LABEL16;
-RET_LABEL16:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var13,var_other) on <var13:nullable POSetElement[MClassDef](POSetElement[MClassDef])> */
+var21 = var13 == var_other;
+var19 = var21;
+goto RET_LABEL20;
+RET_LABEL20:(void)0;
 }
 }
-var13 = var15;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+var17 = var19;
+goto RET_LABEL18;
+RET_LABEL18:(void)0;
 }
-var12 = var13;
+var16 = var17;
 }
-if (var12){
+if (var16){
 goto RET_LABEL;
 } else {
 }
 {
-{ /* Inline model#MClassDef#in_hierarchy (var_mclassdef) on <var_mclassdef:MClassDef> */
-var20 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef:MClassDef> */
-var18 = var20;
-RET_LABEL19:(void)0;
+{ /* Inline model#MClassDef#in_hierarchy (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var24 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___in_hierarchy].val; /* _in_hierarchy on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var22 = var24;
+RET_LABEL23:(void)0;
 }
 }
-if (var18 == NULL) {
+if (var22 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 91);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 92);
+fatal_exit(1);
 } else {
-var21 = poset___poset__POSetElement___direct_greaters(var18);
+var25 = poset___poset__POSetElement___direct_greaters(var22);
 }
-var_ = var21;
+var_ = var25;
 {
-var22 = ((val* (*)(val* self))(var_->class->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Collection[MClassDef]>*/;
+var26 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Collection[MClassDef]>*/
 }
-var_23 = var22;
+var_27 = var26;
 for(;;) {
 {
-var24 = ((short int (*)(val* self))(var_23->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_23) /* is_ok on <var_23:Iterator[MClassDef]>*/;
+var28 = ((short int(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_27); /* is_ok on <var_27:Iterator[MClassDef]>*/
 }
-if (var24){
+if (var28){
 {
-var25 = ((val* (*)(val* self))(var_23->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_23) /* item on <var_23:Iterator[MClassDef]>*/;
+var29 = ((val*(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_27); /* item on <var_27:Iterator[MClassDef]>*/
 }
-var_superclassdef = var25;
+var_superclassdef = var29;
 {
 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (self) on <self:ModelBuilder> */
-var28 = self->attrs[COLOR_nit__modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
-if (unlikely(var28 == NULL)) {
+var32 = self->attrs[COLOR_nit__modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
+if (unlikely(var32 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 426);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 449);
+fatal_exit(1);
 }
-var26 = var28;
-RET_LABEL27:(void)0;
+var30 = var32;
+RET_LABEL31:(void)0;
 }
 }
 {
-var29 = standard___standard__MapRead___has_key(var26, var_superclassdef);
+var33 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var30, var_superclassdef);
 }
-var30 = !var29;
-if (var30){
+var34 = !var33;
+if (var34){
 goto BREAK_label;
 } else {
 }
 {
 { /* Inline modelize_class#ModelBuilder#mclassdef2nclassdef (self) on <self:ModelBuilder> */
-var33 = self->attrs[COLOR_nit__modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
-if (unlikely(var33 == NULL)) {
+var37 = self->attrs[COLOR_nit__modelize_class__ModelBuilder___mclassdef2nclassdef].val; /* _mclassdef2nclassdef on <self:ModelBuilder> */
+if (unlikely(var37 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef2nclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 426);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_class, 449);
+fatal_exit(1);
 }
-var31 = var33;
-RET_LABEL32:(void)0;
+var35 = var37;
+RET_LABEL36:(void)0;
 }
 }
 {
-var34 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var31, var_superclassdef);
+var38 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var35, var_superclassdef);
 }
 {
-nit__modelize_property___ModelBuilder___build_properties(self, var34); /* Direct call modelize_property#ModelBuilder#build_properties on <self:ModelBuilder>*/
+nit__modelize_property___ModelBuilder___build_properties(self, var38); /* Direct call modelize_property#ModelBuilder#build_properties on <self:ModelBuilder>*/
 }
 BREAK_label: (void)0;
 {
-((void (*)(val* self))(var_23->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_23) /* next on <var_23:Iterator[MClassDef]>*/;
+((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_27); /* next on <var_27:Iterator[MClassDef]>*/
 }
 } else {
-goto BREAK_label35;
+goto BREAK_label39;
 }
 }
-BREAK_label35: (void)0;
+BREAK_label39: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_23) on <var_23:Iterator[MClassDef]> */
-RET_LABEL36:(void)0;
-}
+((void(*)(val* self))((((long)var_27&3)?class_info[((long)var_27&3)]:var_27->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_27); /* finish on <var_27:Iterator[MClassDef]>*/
 }
 {
-nit__modelize_property___MClassDef___build_self_type(var_mclassdef, self, var_nclassdef); /* Direct call modelize_property#MClassDef#build_self_type on <var_mclassdef:MClassDef>*/
+nit__modelize_property___MClassDef___build_self_type(var_mclassdef, self, var_nclassdef); /* Direct call modelize_property#MClassDef#build_self_type on <var_mclassdef:nullable MClassDef(MClassDef)>*/
 }
 {
 { /* Inline modelize_class#AClassdef#all_defs (var_nclassdef) on <var_nclassdef:AClassdef> */
-var39 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___all_defs].val; /* _all_defs on <var_nclassdef:AClassdef> */
-var37 = var39;
-RET_LABEL38:(void)0;
+var42 = var_nclassdef->attrs[COLOR_nit__modelize_class__AClassdef___all_defs].val; /* _all_defs on <var_nclassdef:AClassdef> */
+var40 = var42;
+RET_LABEL41:(void)0;
 }
 }
-var_40 = var37;
-if (var_40 == NULL) {
+var_43 = var40;
+if (var_43 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 97);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 98);
+fatal_exit(1);
 } else {
-var41 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_40);
+var44 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_43);
 }
-var_42 = var41;
+var_45 = var44;
 for(;;) {
 {
-var43 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_42);
+var46 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_45);
 }
-if (var43){
+if (var46){
 {
-var44 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_42);
+var47 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_45);
 }
-var_nclassdef2 = var44;
+var_nclassdef2 = var47;
 {
 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
-var47 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
-if (unlikely(var47 == NULL)) {
+var50 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
+if (unlikely(var50 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1012);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
+fatal_exit(1);
 }
-var45 = var47;
-RET_LABEL46:(void)0;
+var48 = var50;
+RET_LABEL49:(void)0;
 }
 }
-var_48 = var45;
+var_51 = var48;
 {
-var49 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_48);
+var52 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_51);
 }
-var_50 = var49;
+var_53 = var52;
 for(;;) {
 {
-var51 = ((short int (*)(val* self))(var_50->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_50) /* is_ok on <var_50:Iterator[APropdef]>*/;
+var54 = ((short int(*)(val* self))((((long)var_53&3)?class_info[((long)var_53&3)]:var_53->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_53); /* is_ok on <var_53:Iterator[APropdef]>*/
 }
-if (var51){
+if (var54){
 {
-var52 = ((val* (*)(val* self))(var_50->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_50) /* item on <var_50:Iterator[APropdef]>*/;
+var55 = ((val*(*)(val* self))((((long)var_53&3)?class_info[((long)var_53&3)]:var_53->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_53); /* item on <var_53:Iterator[APropdef]>*/
 }
-var_npropdef = var52;
+var_npropdef = var55;
 {
-((void (*)(val* self, val* p0, val* p1))(var_npropdef->class->vft[COLOR_nit__modelize_property__APropdef__build_property]))(var_npropdef, self, var_mclassdef) /* build_property on <var_npropdef:APropdef>*/;
+((void(*)(val* self, val* p0, val* p1))(var_npropdef->class->vft[COLOR_nit__modelize_property__APropdef__build_property]))(var_npropdef, self, var_mclassdef); /* build_property on <var_npropdef:APropdef>*/
 }
 {
-((void (*)(val* self))(var_50->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_50) /* next on <var_50:Iterator[APropdef]>*/;
+((void(*)(val* self))((((long)var_53&3)?class_info[((long)var_53&3)]:var_53->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_53); /* next on <var_53:Iterator[APropdef]>*/
 }
 } else {
-goto BREAK_label53;
+goto BREAK_label56;
 }
 }
-BREAK_label53: (void)0;
+BREAK_label56: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_50) on <var_50:Iterator[APropdef]> */
-RET_LABEL54:(void)0;
-}
+((void(*)(val* self))((((long)var_53&3)?class_info[((long)var_53&3)]:var_53->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_53); /* finish on <var_53:Iterator[APropdef]>*/
 }
 {
 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
-var57 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
-if (unlikely(var57 == NULL)) {
+var59 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
+if (unlikely(var59 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1012);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
+fatal_exit(1);
 }
-var55 = var57;
-RET_LABEL56:(void)0;
+var57 = var59;
+RET_LABEL58:(void)0;
 }
 }
-var_58 = var55;
+var_60 = var57;
 {
-var59 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_58);
+var61 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_60);
 }
-var_60 = var59;
+var_62 = var61;
 for(;;) {
 {
-var61 = ((short int (*)(val* self))(var_60->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_60) /* is_ok on <var_60:Iterator[APropdef]>*/;
+var63 = ((short int(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_62); /* is_ok on <var_62:Iterator[APropdef]>*/
 }
-if (var61){
+if (var63){
 {
-var62 = ((val* (*)(val* self))(var_60->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_60) /* item on <var_60:Iterator[APropdef]>*/;
+var64 = ((val*(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_62); /* item on <var_62:Iterator[APropdef]>*/
 }
-var_npropdef63 = var62;
+var_npropdef65 = var64;
 {
-((void (*)(val* self, val* p0))(var_npropdef63->class->vft[COLOR_nit__modelize_property__APropdef__build_signature]))(var_npropdef63, self) /* build_signature on <var_npropdef63:APropdef>*/;
+((void(*)(val* self, val* p0))(var_npropdef65->class->vft[COLOR_nit__modelize_property__APropdef__build_signature]))(var_npropdef65, self); /* build_signature on <var_npropdef65:APropdef>*/
 }
 {
-((void (*)(val* self))(var_60->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_60) /* next on <var_60:Iterator[APropdef]>*/;
+((void(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_62); /* next on <var_62:Iterator[APropdef]>*/
 }
 } else {
-goto BREAK_label64;
+goto BREAK_label66;
 }
 }
-BREAK_label64: (void)0;
+BREAK_label66: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_60) on <var_60:Iterator[APropdef]> */
-RET_LABEL65:(void)0;
-}
+((void(*)(val* self))((((long)var_62&3)?class_info[((long)var_62&3)]:var_62->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_62); /* finish on <var_62:Iterator[APropdef]>*/
 }
 {
 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
-var68 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
-if (unlikely(var68 == NULL)) {
+var69 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
+if (unlikely(var69 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1012);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
+fatal_exit(1);
 }
-var66 = var68;
-RET_LABEL67:(void)0;
+var67 = var69;
+RET_LABEL68:(void)0;
 }
 }
-var_69 = var66;
+var_70 = var67;
 {
-var70 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_69);
+var71 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_70);
 }
-var_71 = var70;
+var_72 = var71;
 for(;;) {
 {
-var72 = ((short int (*)(val* self))(var_71->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_71) /* is_ok on <var_71:Iterator[APropdef]>*/;
-}
-if (var72){
-{
-var73 = ((val* (*)(val* self))(var_71->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_71) /* item on <var_71:Iterator[APropdef]>*/;
-}
-var_npropdef74 = var73;
-{
-((void (*)(val* self, val* p0))(var_npropdef74->class->vft[COLOR_nit__modelize_property__APropdef__check_signature]))(var_npropdef74, self) /* check_signature on <var_npropdef74:APropdef>*/;
+var73 = ((short int(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_72); /* is_ok on <var_72:Iterator[APropdef]>*/
 }
+if (var73){
 {
-((void (*)(val* self))(var_71->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_71) /* next on <var_71:Iterator[APropdef]>*/;
+var74 = ((val*(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_72); /* item on <var_72:Iterator[APropdef]>*/
 }
+var_npropdef75 = var74;
+/* <var_npropdef75:APropdef> isa ATypePropdef */
+cltype = type_nit__ATypePropdef.color;
+idtype = type_nit__ATypePropdef.id;
+if(cltype >= var_npropdef75->type->table_size) {
+var76 = 0;
 } else {
-goto BREAK_label75;
+var76 = var_npropdef75->type->type_table[cltype] == idtype;
 }
+var77 = !var76;
+if (var77){
+goto BREAK_label78;
+} else {
 }
-BREAK_label75: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_71) on <var_71:Iterator[APropdef]> */
-RET_LABEL76:(void)0;
-}
+{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef75) on <var_npropdef75:APropdef(ATypePropdef)> */
+var81 = var_npropdef75->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef75:APropdef(ATypePropdef)> */
+var79 = var81;
+RET_LABEL80:(void)0;
 }
-{
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_42); /* Direct call array#ArrayIterator#next on <var_42:ArrayIterator[AClassdef]>*/
 }
+var_mpropdef = var79;
+if (var_mpropdef == NULL) {
+var82 = 1; /* is null */
 } else {
-goto BREAK_label77;
+var82 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_mpropdef,((val*)NULL)) on <var_mpropdef:nullable MVirtualTypeDef> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_mpropdef,var_other) on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)> */
+var87 = var_mpropdef == var_other;
+var85 = var87;
+goto RET_LABEL86;
+RET_LABEL86:(void)0;
+}
+}
+var83 = var85;
+goto RET_LABEL84;
+RET_LABEL84:(void)0;
+}
+var82 = var83;
+}
+if (var82){
+goto BREAK_label78;
+} else {
 }
-BREAK_label77: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_42) on <var_42:ArrayIterator[AClassdef]> */
-RET_LABEL78:(void)0;
+{ /* Inline model#MVirtualTypeDef#bound (var_mpropdef) on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)> */
+var90 = var_mpropdef->attrs[COLOR_nit__model__MVirtualTypeDef___bound].val; /* _bound on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)> */
+var88 = var90;
+RET_LABEL89:(void)0;
+}
+}
+if (var88 == NULL) {
+var91 = 1; /* is null */
+} else {
+var91 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var88,((val*)NULL)) on <var88:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var88,var_other) on <var88:nullable MType(MType)> */
+var96 = var88 == var_other;
+var94 = var96;
+goto RET_LABEL95;
+RET_LABEL95:(void)0;
+}
+}
+var92 = var94;
+goto RET_LABEL93;
+RET_LABEL93:(void)0;
+}
+var91 = var92;
+}
+if (var91){
+goto BREAK_label78;
+} else {
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)> */
+var99 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)> */
+if (unlikely(var99 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var97 = var99;
+RET_LABEL98:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var102 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:nullable MClassDef(MClassDef)> */
+if (unlikely(var102 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
+}
+var100 = var102;
+RET_LABEL101:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var105 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:nullable MClassDef(MClassDef)> */
+if (unlikely(var105 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
+}
+var103 = var105;
+RET_LABEL104:(void)0;
+}
+}
+{
+var106 = nit__modelize_property___ModelBuilder___check_virtual_types_circularity(self, var_npropdef75, var97, var100, var103);
+}
+var107 = !var106;
+if (var107){
+{
+{ /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var110 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:nullable MClassDef(MClassDef)> */
+if (unlikely(var110 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
+}
+var108 = var110;
+RET_LABEL109:(void)0;
+}
+}
+{
+{ /* Inline mmodule#MModule#model (var108) on <var108:MModule> */
+var113 = var108->attrs[COLOR_nit__mmodule__MModule___model].val; /* _model on <var108:MModule> */
+if (unlikely(var113 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 73);
+fatal_exit(1);
+}
+var111 = var113;
+RET_LABEL112:(void)0;
+}
+}
+{
+{ /* Inline model#Model#null_type (var111) on <var111:Model> */
+var116 = var111->attrs[COLOR_nit__model__Model___null_type].val; /* _null_type on <var111:Model> */
+if (unlikely(var116 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _null_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 94);
+fatal_exit(1);
+}
+var114 = var116;
+RET_LABEL115:(void)0;
+}
+}
+{
+{ /* Inline model#MVirtualTypeDef#bound= (var_mpropdef,var114) on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)> */
+var_mpropdef->attrs[COLOR_nit__model__MVirtualTypeDef___bound].val = var114; /* _bound on <var_mpropdef:nullable MVirtualTypeDef(MVirtualTypeDef)> */
+RET_LABEL117:(void)0;
+}
+}
+} else {
+}
+BREAK_label78: (void)0;
+{
+((void(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_72); /* next on <var_72:Iterator[APropdef]>*/
+}
+} else {
+goto BREAK_label118;
+}
+}
+BREAK_label118: (void)0;
+{
+((void(*)(val* self))((((long)var_72&3)?class_info[((long)var_72&3)]:var_72->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_72); /* finish on <var_72:Iterator[APropdef]>*/
+}
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
+var121 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
+if (unlikely(var121 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
+fatal_exit(1);
+}
+var119 = var121;
+RET_LABEL120:(void)0;
+}
+}
+var_122 = var119;
+{
+var123 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_122);
+}
+var_124 = var123;
+for(;;) {
+{
+var125 = ((short int(*)(val* self))((((long)var_124&3)?class_info[((long)var_124&3)]:var_124->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_124); /* is_ok on <var_124:Iterator[APropdef]>*/
+}
+if (var125){
+{
+var126 = ((val*(*)(val* self))((((long)var_124&3)?class_info[((long)var_124&3)]:var_124->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_124); /* item on <var_124:Iterator[APropdef]>*/
+}
+var_npropdef127 = var126;
+/* <var_npropdef127:APropdef> isa ATypePropdef */
+cltype129 = type_nit__ATypePropdef.color;
+idtype130 = type_nit__ATypePropdef.id;
+if(cltype129 >= var_npropdef127->type->table_size) {
+var128 = 0;
+} else {
+var128 = var_npropdef127->type->type_table[cltype129] == idtype130;
+}
+var131 = !var128;
+if (var131){
+goto BREAK_label132;
+} else {
+}
+{
+nit__modelize_property___ATypePropdef___APropdef__check_signature(var_npropdef127, self); /* Direct call modelize_property#ATypePropdef#check_signature on <var_npropdef127:APropdef(ATypePropdef)>*/
+}
+BREAK_label132: (void)0;
+{
+((void(*)(val* self))((((long)var_124&3)?class_info[((long)var_124&3)]:var_124->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_124); /* next on <var_124:Iterator[APropdef]>*/
+}
+} else {
+goto BREAK_label133;
+}
+}
+BREAK_label133: (void)0;
+{
+((void(*)(val* self))((((long)var_124&3)?class_info[((long)var_124&3)]:var_124->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_124); /* finish on <var_124:Iterator[APropdef]>*/
+}
+{
+{ /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef2) on <var_nclassdef2:AClassdef> */
+var136 = var_nclassdef2->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef2:AClassdef> */
+if (unlikely(var136 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
+fatal_exit(1);
+}
+var134 = var136;
+RET_LABEL135:(void)0;
+}
+}
+var_137 = var134;
+{
+var138 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_137);
+}
+var_139 = var138;
+for(;;) {
+{
+var140 = ((short int(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_139); /* is_ok on <var_139:Iterator[APropdef]>*/
+}
+if (var140){
+{
+var141 = ((val*(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_139); /* item on <var_139:Iterator[APropdef]>*/
+}
+var_npropdef142 = var141;
+/* <var_npropdef142:APropdef> isa ATypePropdef */
+cltype144 = type_nit__ATypePropdef.color;
+idtype145 = type_nit__ATypePropdef.id;
+if(cltype144 >= var_npropdef142->type->table_size) {
+var143 = 0;
+} else {
+var143 = var_npropdef142->type->type_table[cltype144] == idtype145;
+}
+if (var143){
+goto BREAK_label146;
+} else {
+}
+{
+((void(*)(val* self, val* p0))(var_npropdef142->class->vft[COLOR_nit__modelize_property__APropdef__check_signature]))(var_npropdef142, self); /* check_signature on <var_npropdef142:APropdef>*/
+}
+BREAK_label146: (void)0;
+{
+((void(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_139); /* next on <var_139:Iterator[APropdef]>*/
+}
+} else {
+goto BREAK_label147;
+}
+}
+BREAK_label147: (void)0;
+{
+((void(*)(val* self))((((long)var_139&3)?class_info[((long)var_139&3)]:var_139->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_139); /* finish on <var_139:Iterator[APropdef]>*/
+}
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_45); /* Direct call array#ArrayIterator#next on <var_45:ArrayIterator[AClassdef]>*/
+}
+} else {
+goto BREAK_label148;
 }
 }
+BREAK_label148: (void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_45); /* Direct call array#ArrayIterator#finish on <var_45:ArrayIterator[AClassdef]>*/
+}
 {
 nit__modelize_property___ModelBuilder___process_default_constructors(self, var_nclassdef); /* Direct call modelize_property#ModelBuilder#process_default_constructors on <self:ModelBuilder>*/
 }
@@ -879,489 +1200,601 @@ val* var11 /* : String */;
 static val* varonce;
 val* var12 /* : String */;
 char* var13 /* : NativeString */;
-long var14 /* : Int */;
-val* var15 /* : FlatString */;
-short int var16 /* : Bool */;
+val* var14 /* : FlatString */;
+short int var15 /* : Bool */;
 short int var_ /* var : Bool */;
-val* var17 /* : nullable MMethod */;
-val* var19 /* : nullable MMethod */;
-val* var20 /* : null */;
-short int var21 /* : Bool */;
-short int var22 /* : Bool */;
+val* var16 /* : nullable MMethod */;
+val* var18 /* : nullable MMethod */;
+short int var19 /* : Bool */;
+short int var20 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var22 /* : Bool */;
 short int var24 /* : Bool */;
-short int var26 /* : Bool */;
-val* var27 /* : MMethod */;
-static val* varonce28;
-val* var29 /* : String */;
-char* var30 /* : NativeString */;
-long var31 /* : Int */;
-val* var32 /* : FlatString */;
-val* var33 /* : MClass */;
-val* var35 /* : MClass */;
-val* var36 /* : MVisibility */;
-val* var38 /* : MVisibility */;
+val* var25 /* : MMethod */;
+static val* varonce26;
+val* var27 /* : String */;
+char* var28 /* : NativeString */;
+val* var29 /* : FlatString */;
+val* var30 /* : MClass */;
+val* var32 /* : MClass */;
+val* var33 /* : MVisibility */;
+val* var35 /* : MVisibility */;
 val* var_mprop /* var mprop: MMethod */;
-short int var39 /* : Bool */;
-val* var41 /* : MMethodDef */;
-val* var42 /* : Location */;
-val* var44 /* : Location */;
+val* var37 /* : MMethodDef */;
+val* var38 /* : Location */;
+val* var40 /* : Location */;
 val* var_mpropdef /* var mpropdef: MMethodDef */;
-val* var45 /* : Array[MParameter] */;
+val* var41 /* : Array[MParameter] */;
 val* var_mparameters /* var mparameters: Array[MParameter] */;
-val* var46 /* : MSignature */;
-val* var47 /* : null */;
+val* var42 /* : MSignature */;
 val* var_msignature /* var msignature: MSignature */;
-short int var50 /* : Bool */;
-val* var53 /* : ToolContext */;
-val* var55 /* : ToolContext */;
-static val* varonce56;
+val* var47 /* : ToolContext */;
+val* var49 /* : ToolContext */;
+val* var51 /* : NativeArray[String] */;
+static val* varonce50;
+static val* varonce52;
+val* var53 /* : String */;
+char* var54 /* : NativeString */;
+val* var55 /* : FlatString */;
+val* var56 /* : String */;
 val* var57 /* : String */;
-char* var58 /* : NativeString */;
-long var59 /* : Int */;
-val* var60 /* : FlatString */;
-val* var61 /* : Array[Object] */;
-long var62 /* : Int */;
-val* var63 /* : NativeArray[Object] */;
-val* var64 /* : String */;
-long var65 /* : Int */;
-val* var67 /* : MClass */;
-val* var69 /* : MClass */;
-val* var70 /* : MClassKind */;
-val* var72 /* : MClassKind */;
-short int var73 /* : Bool */;
-short int var75 /* : Bool */;
-short int var76 /* : Bool */;
-val* var77 /* : null */;
+val* var58 /* : String */;
+val* var59 /* : String */;
 val* var_defined_init /* var defined_init: nullable MMethodDef */;
-val* var78 /* : Array[MPropDef] */;
-val* var80 /* : Array[MPropDef] */;
-val* var_81 /* var : Array[MPropDef] */;
-val* var82 /* : ArrayIterator[nullable Object] */;
-val* var_83 /* var : ArrayIterator[MPropDef] */;
-short int var84 /* : Bool */;
-val* var85 /* : nullable Object */;
-val* var_mpropdef86 /* var mpropdef: MPropDef */;
-short int var87 /* : Bool */;
+val* var61 /* : Array[MPropDef] */;
+val* var63 /* : Array[MPropDef] */;
+val* var_64 /* var : Array[MPropDef] */;
+val* var65 /* : ArrayIterator[nullable Object] */;
+val* var_66 /* var : ArrayIterator[MPropDef] */;
+short int var67 /* : Bool */;
+val* var68 /* : nullable Object */;
+val* var_mpropdef69 /* var mpropdef: MPropDef */;
+short int var70 /* : Bool */;
 int cltype;
 int idtype;
+short int var71 /* : Bool */;
+val* var72 /* : MProperty */;
+val* var74 /* : MProperty */;
+short int var75 /* : Bool */;
+short int var77 /* : Bool */;
+short int var78 /* : Bool */;
+val* var79 /* : MProperty */;
+val* var81 /* : MProperty */;
+short int var82 /* : Bool */;
+short int var84 /* : Bool */;
+short int var85 /* : Bool */;
+short int var86 /* : Bool */;
 short int var88 /* : Bool */;
-val* var89 /* : MProperty */;
+short int var90 /* : Bool */;
 val* var91 /* : MProperty */;
-short int var92 /* : Bool */;
-short int var94 /* : Bool */;
-short int var95 /* : Bool */;
-val* var96 /* : MProperty */;
-val* var98 /* : MProperty */;
-short int var99 /* : Bool */;
+val* var93 /* : MProperty */;
+val* var94 /* : String */;
+val* var96 /* : String */;
+static val* varonce97;
+val* var98 /* : String */;
+char* var99 /* : NativeString */;
+val* var100 /* : FlatString */;
 short int var101 /* : Bool */;
-val* var102 /* : null */;
 short int var103 /* : Bool */;
-short int var104 /* : Bool */;
+int cltype104;
+int idtype105;
 short int var106 /* : Bool */;
-short int var108 /* : Bool */;
-val* var109 /* : MProperty */;
-val* var111 /* : MProperty */;
-val* var112 /* : String */;
-val* var114 /* : String */;
-static val* varonce115;
-val* var116 /* : String */;
-char* var117 /* : NativeString */;
-long var118 /* : Int */;
-val* var119 /* : FlatString */;
-short int var120 /* : Bool */;
-short int var123 /* : Bool */;
-int cltype124;
-int idtype125;
-short int var126 /* : Bool */;
-val* var127 /* : Array[MParameter] */;
-val* var_mparameters128 /* var mparameters: Array[MParameter] */;
-val* var129 /* : Array[MProperty] */;
+val* var107 /* : Array[MParameter] */;
+val* var_mparameters108 /* var mparameters: Array[MParameter] */;
+val* var109 /* : Array[MProperty] */;
 val* var_initializers /* var initializers: Array[MProperty] */;
-val* var130 /* : ANodes[APropdef] */;
-val* var132 /* : ANodes[APropdef] */;
-val* var_133 /* var : ANodes[APropdef] */;
-val* var134 /* : Iterator[ANode] */;
-val* var_135 /* var : Iterator[APropdef] */;
-short int var136 /* : Bool */;
-val* var137 /* : nullable Object */;
+val* var110 /* : ANodes[APropdef] */;
+val* var112 /* : ANodes[APropdef] */;
+val* var_113 /* var : ANodes[APropdef] */;
+val* var114 /* : Iterator[ANode] */;
+val* var_115 /* var : Iterator[APropdef] */;
+short int var116 /* : Bool */;
+val* var117 /* : nullable Object */;
 val* var_npropdef /* var npropdef: APropdef */;
-short int var138 /* : Bool */;
-int cltype139;
-int idtype140;
-val* var141 /* : nullable MPropDef */;
-val* var143 /* : nullable MPropDef */;
-val* var144 /* : null */;
-short int var145 /* : Bool */;
-short int var146 /* : Bool */;
-short int var148 /* : Bool */;
-short int var150 /* : Bool */;
-static val* varonce151;
-val* var152 /* : String */;
-char* var153 /* : NativeString */;
-long var154 /* : Int */;
-val* var155 /* : FlatString */;
-val* var156 /* : nullable AAnnotation */;
-val* var_at /* var at: nullable AAnnotation */;
-val* var157 /* : null */;
-short int var158 /* : Bool */;
-short int var159 /* : Bool */;
-short int var161 /* : Bool */;
-short int var163 /* : Bool */;
-val* var165 /* : nullable MPropDef */;
-val* var167 /* : nullable MPropDef */;
-val* var168 /* : nullable MSignature */;
-val* var170 /* : nullable MSignature */;
+short int var118 /* : Bool */;
+int cltype119;
+int idtype120;
+short int var121 /* : Bool */;
+short int var123 /* : Bool */;
+short int var124 /* : Bool */;
+val* var126 /* : nullable MPropDef */;
+val* var128 /* : nullable MPropDef */;
+short int var129 /* : Bool */;
+short int var130 /* : Bool */;
+short int var132 /* : Bool */;
+short int var134 /* : Bool */;
+val* var135 /* : nullable MPropDef */;
+val* var137 /* : nullable MPropDef */;
+val* var138 /* : nullable MSignature */;
+val* var140 /* : nullable MSignature */;
 val* var_sig /* var sig: nullable MSignature */;
-val* var171 /* : null */;
-short int var172 /* : Bool */;
-short int var173 /* : Bool */;
-short int var175 /* : Bool */;
-short int var177 /* : Bool */;
-val* var178 /* : nullable MPropDef */;
-val* var180 /* : nullable MPropDef */;
-short int var181 /* : Bool */;
-short int var182 /* : Bool */;
-static val* varonce183;
-val* var184 /* : String */;
-char* var185 /* : NativeString */;
-long var186 /* : Int */;
-val* var187 /* : FlatString */;
-val* var188 /* : Array[MParameter] */;
-val* var190 /* : Array[MParameter] */;
-val* var_191 /* var : Array[MParameter] */;
-val* var192 /* : ArrayIterator[nullable Object] */;
-val* var_193 /* var : ArrayIterator[MParameter] */;
-short int var194 /* : Bool */;
-val* var195 /* : nullable Object */;
+short int var141 /* : Bool */;
+short int var142 /* : Bool */;
+short int var144 /* : Bool */;
+short int var146 /* : Bool */;
+val* var147 /* : Array[MParameter] */;
+val* var149 /* : Array[MParameter] */;
+val* var_150 /* var : Array[MParameter] */;
+val* var151 /* : ArrayIterator[nullable Object] */;
+val* var_152 /* var : ArrayIterator[MParameter] */;
+short int var153 /* : Bool */;
+val* var154 /* : nullable Object */;
 val* var_param /* var param: MParameter */;
-val* var196 /* : MType */;
-val* var198 /* : MType */;
+val* var155 /* : MType */;
+val* var157 /* : MType */;
 val* var_ret_type /* var ret_type: MType */;
-val* var199 /* : MParameter */;
-val* var200 /* : String */;
-val* var202 /* : String */;
-short int var203 /* : Bool */;
+val* var158 /* : MParameter */;
+val* var159 /* : String */;
+val* var161 /* : String */;
+short int var162 /* : Bool */;
+int cltype163;
+int idtype164;
 val* var_mparameter /* var mparameter: MParameter */;
-val* var206 /* : nullable MPropDef */;
-val* var208 /* : nullable MPropDef */;
-val* var209 /* : MProperty */;
-val* var211 /* : MProperty */;
-short int var212 /* : Bool */;
-int cltype213;
-int idtype214;
-val* var215 /* : nullable MPropDef */;
-val* var217 /* : nullable MPropDef */;
-val* var218 /* : null */;
-short int var219 /* : Bool */;
-short int var220 /* : Bool */;
-short int var222 /* : Bool */;
-short int var224 /* : Bool */;
+val* var166 /* : nullable MPropDef */;
+val* var168 /* : nullable MPropDef */;
+val* var169 /* : MProperty */;
+val* var171 /* : MProperty */;
+val* var172 /* : nullable MPropDef */;
+val* var174 /* : nullable MPropDef */;
+val* var175 /* : MProperty */;
+val* var177 /* : MProperty */;
+short int var179 /* : Bool */;
+int cltype180;
+int idtype181;
+val* var182 /* : nullable MMethodDef */;
+val* var184 /* : nullable MMethodDef */;
+val* var_mreadpropdef /* var mreadpropdef: nullable MMethodDef */;
+short int var185 /* : Bool */;
+short int var186 /* : Bool */;
+short int var187 /* : Bool */;
+short int var189 /* : Bool */;
+short int var191 /* : Bool */;
+short int var_192 /* var : Bool */;
+val* var193 /* : nullable MSignature */;
+val* var195 /* : nullable MSignature */;
+short int var196 /* : Bool */;
+short int var197 /* : Bool */;
+short int var199 /* : Bool */;
+short int var201 /* : Bool */;
+short int var202 /* : Bool */;
+short int var204 /* : Bool */;
+static val* varonce205;
+val* var206 /* : String */;
+char* var207 /* : NativeString */;
+val* var208 /* : FlatString */;
+val* var209 /* : nullable AAnnotation */;
+val* var_atlateinit /* var atlateinit: nullable AAnnotation */;
+short int var210 /* : Bool */;
+short int var211 /* : Bool */;
+val* var_other213 /* var other: nullable Object */;
+short int var214 /* : Bool */;
+short int var215 /* : Bool */;
+val* var216 /* : MProperty */;
+val* var218 /* : MProperty */;
+val* var219 /* : MProperty */;
+val* var221 /* : MProperty */;
+short int var223 /* : Bool */;
 short int var225 /* : Bool */;
-short int var227 /* : Bool */;
-static val* varonce228;
+val* var226 /* : MProperty */;
+val* var228 /* : MProperty */;
 val* var229 /* : String */;
-char* var230 /* : NativeString */;
-long var231 /* : Int */;
-val* var232 /* : FlatString */;
-val* var233 /* : nullable AAnnotation */;
-val* var_atautoinit /* var atautoinit: nullable AAnnotation */;
-val* var234 /* : null */;
-short int var235 /* : Bool */;
-short int var236 /* : Bool */;
-val* var_other238 /* var other: nullable Object */;
+val* var231 /* : String */;
+val* var_paramname /* var paramname: String */;
+val* var232 /* : nullable MSignature */;
+val* var234 /* : nullable MSignature */;
+val* var235 /* : nullable MType */;
+val* var237 /* : nullable MType */;
+val* var_ret_type238 /* var ret_type: nullable MType */;
 short int var239 /* : Bool */;
 short int var240 /* : Bool */;
-val* var241 /* : nullable MMethodDef */;
-val* var243 /* : nullable MMethodDef */;
-val* var244 /* : MProperty */;
-val* var246 /* : MProperty */;
-short int var247 /* : Bool */;
-short int var249 /* : Bool */;
-val* var250 /* : nullable MPropDef */;
-val* var252 /* : nullable MPropDef */;
-val* var253 /* : MProperty */;
-val* var255 /* : MProperty */;
-val* var256 /* : String */;
-val* var258 /* : String */;
-long var259 /* : Int */;
-val* var260 /* : Text */;
-val* var_paramname /* var paramname: String */;
-val* var261 /* : nullable MPropDef */;
-val* var263 /* : nullable MPropDef */;
-val* var264 /* : nullable MType */;
-val* var266 /* : nullable MType */;
-val* var_ret_type267 /* var ret_type: nullable MType */;
-val* var268 /* : null */;
-short int var269 /* : Bool */;
-short int var270 /* : Bool */;
-short int var272 /* : Bool */;
-short int var274 /* : Bool */;
-val* var275 /* : MParameter */;
-short int var276 /* : Bool */;
-val* var_mparameter277 /* var mparameter: MParameter */;
-val* var278 /* : nullable MMethodDef */;
-val* var280 /* : nullable MMethodDef */;
+short int var242 /* : Bool */;
+short int var244 /* : Bool */;
+val* var245 /* : MParameter */;
+short int var246 /* : Bool */;
+int cltype247;
+int idtype248;
+val* var_mparameter249 /* var mparameter: MParameter */;
+val* var250 /* : nullable MMethodDef */;
+val* var252 /* : nullable MMethodDef */;
 val* var_msetter /* var msetter: nullable MMethodDef */;
-val* var281 /* : null */;
-short int var282 /* : Bool */;
+short int var253 /* : Bool */;
+short int var254 /* : Bool */;
+short int var256 /* : Bool */;
+short int var258 /* : Bool */;
+val* var259 /* : nullable MPropDef */;
+val* var261 /* : nullable MPropDef */;
+val* var262 /* : MProperty */;
+val* var264 /* : MProperty */;
+val* var265 /* : nullable MPropDef */;
+val* var267 /* : nullable MPropDef */;
+val* var268 /* : MProperty */;
+val* var270 /* : MProperty */;
+val* var272 /* : MProperty */;
+val* var274 /* : MProperty */;
+val* var275 /* : MProperty */;
+val* var277 /* : MProperty */;
+val* var280 /* : nullable MMethod */;
+val* var282 /* : nullable MMethod */;
 short int var283 /* : Bool */;
-short int var285 /* : Bool */;
-short int var287 /* : Bool */;
-val* var288 /* : nullable MPropDef */;
-val* var290 /* : nullable MPropDef */;
-val* var291 /* : MProperty */;
-val* var293 /* : MProperty */;
-val* var294 /* : MProperty */;
-val* var296 /* : MProperty */;
-val* var299 /* : nullable MMethod */;
-val* var301 /* : nullable MMethod */;
-val* var302 /* : null */;
-short int var303 /* : Bool */;
-short int var304 /* : Bool */;
-short int var306 /* : Bool */;
-short int var308 /* : Bool */;
-val* var309 /* : nullable MMethod */;
-val* var311 /* : nullable MMethod */;
-val* var312 /* : MModule */;
-val* var314 /* : MModule */;
-val* var315 /* : MClassType */;
-val* var317 /* : MClassType */;
-val* var318 /* : Array[MPropDef] */;
+short int var284 /* : Bool */;
+short int var286 /* : Bool */;
+short int var288 /* : Bool */;
+val* var289 /* : nullable MMethod */;
+val* var291 /* : nullable MMethod */;
+val* var292 /* : MModule */;
+val* var294 /* : MModule */;
+val* var295 /* : MClassType */;
+val* var297 /* : MClassType */;
+val* var298 /* : Array[MPropDef] */;
 val* var_spropdefs /* var spropdefs: Array[MMethodDef] */;
-short int var319 /* : Bool */;
-val* var320 /* : ToolContext */;
-val* var322 /* : ToolContext */;
-val* var323 /* : Location */;
-val* var325 /* : Location */;
-static val* varonce326;
+short int var299 /* : Bool */;
+val* var300 /* : ToolContext */;
+val* var302 /* : ToolContext */;
+val* var303 /* : Location */;
+val* var305 /* : Location */;
+val* var307 /* : NativeArray[String] */;
+static val* varonce306;
+static val* varonce308;
+val* var309 /* : String */;
+char* var310 /* : NativeString */;
+val* var311 /* : FlatString */;
+static val* varonce312;
+val* var313 /* : String */;
+char* var314 /* : NativeString */;
+val* var315 /* : FlatString */;
+static val* varonce316;
+val* var317 /* : String */;
+char* var318 /* : NativeString */;
+val* var319 /* : FlatString */;
+val* var320 /* : String */;
+val* var321 /* : nullable MMethod */;
+val* var323 /* : nullable MMethod */;
+val* var324 /* : MClassDef */;
+val* var326 /* : MClassDef */;
 val* var327 /* : String */;
-char* var328 /* : NativeString */;
-long var329 /* : Int */;
-val* var330 /* : FlatString */;
-static val* varonce331;
-val* var332 /* : String */;
-char* var333 /* : NativeString */;
-long var334 /* : Int */;
-val* var335 /* : FlatString */;
-val* var336 /* : nullable MMethod */;
-val* var338 /* : nullable MMethod */;
-val* var339 /* : MClassDef */;
-val* var341 /* : MClassDef */;
-static val* varonce342;
-val* var343 /* : String */;
-char* var344 /* : NativeString */;
-long var345 /* : Int */;
-val* var346 /* : FlatString */;
-val* var347 /* : Array[Object] */;
-long var348 /* : Int */;
-val* var349 /* : NativeArray[Object] */;
-val* var350 /* : String */;
-val* var351 /* : nullable Object */;
-val* var_longest /* var longest: MMethodDef */;
-long var352 /* : Int */;
-long var354 /* : Int */;
-long var355 /* : Int */;
-short int var356 /* : Bool */;
-short int var358 /* : Bool */;
-int cltype359;
-int idtype360;
-const char* var_class_name;
-short int var361 /* : Bool */;
-val* var_362 /* var : Array[MMethodDef] */;
-val* var363 /* : ArrayIterator[nullable Object] */;
-val* var_364 /* var : ArrayIterator[MMethodDef] */;
-short int var365 /* : Bool */;
-val* var366 /* : nullable Object */;
-val* var_spd /* var spd: MMethodDef */;
-val* var367 /* : Array[MProperty] */;
-val* var369 /* : Array[MProperty] */;
-long var370 /* : Int */;
-long var372 /* : Int */;
-val* var373 /* : Array[MProperty] */;
-val* var375 /* : Array[MProperty] */;
-long var376 /* : Int */;
-long var378 /* : Int */;
-short int var379 /* : Bool */;
-short int var381 /* : Bool */;
-int cltype382;
-int idtype383;
-const char* var_class_name384;
-short int var385 /* : Bool */;
-val* var_388 /* var : Array[MMethodDef] */;
-val* var389 /* : ArrayIterator[nullable Object] */;
-val* var_390 /* var : ArrayIterator[MMethodDef] */;
+val* var328 /* : String */;
+val* var329 /* : Message */;
+static val* varonce330;
+val* var331 /* : String */;
+char* var332 /* : NativeString */;
+val* var333 /* : FlatString */;
+val* var334 /* : nullable AAnnotation */;
+val* var_autoinit /* var autoinit: nullable AAnnotation */;
+static val* varonce335;
+val* var336 /* : String */;
+char* var337 /* : NativeString */;
+val* var338 /* : FlatString */;
+val* var339 /* : nullable AAnnotation */;
+val* var_noautoinit /* var noautoinit: nullable AAnnotation */;
+short int var340 /* : Bool */;
+short int var341 /* : Bool */;
+short int var343 /* : Bool */;
+short int var344 /* : Bool */;
+short int var345 /* : Bool */;
+short int var346 /* : Bool */;
+short int var348 /* : Bool */;
+short int var349 /* : Bool */;
+static val* varonce350;
+val* var351 /* : String */;
+char* var352 /* : NativeString */;
+val* var353 /* : FlatString */;
+val* var354 /* : ANodes[AExpr] */;
+val* var356 /* : ANodes[AExpr] */;
+short int var357 /* : Bool */;
+static val* varonce358;
+val* var359 /* : String */;
+char* var360 /* : NativeString */;
+val* var361 /* : FlatString */;
+val* var362 /* : ANodes[AExpr] */;
+val* var364 /* : ANodes[AExpr] */;
+val* var_365 /* var : ANodes[AExpr] */;
+val* var366 /* : Iterator[ANode] */;
+val* var_367 /* var : Iterator[AExpr] */;
+short int var368 /* : Bool */;
+val* var369 /* : nullable Object */;
+val* var_narg /* var narg: AExpr */;
+val* var370 /* : nullable String */;
+val* var_id /* var id: nullable String */;
+short int var371 /* : Bool */;
+short int var372 /* : Bool */;
+static val* varonce373;
+val* var374 /* : String */;
+char* var375 /* : NativeString */;
+val* var376 /* : FlatString */;
+static val* varonce377;
+val* var378 /* : String */;
+char* var379 /* : NativeString */;
+val* var380 /* : FlatString */;
+val* var381 /* : String */;
+val* var382 /* : nullable MProperty */;
+val* var_p /* var p: nullable MProperty */;
+short int var383 /* : Bool */;
+short int var384 /* : Bool */;
+short int var386 /* : Bool */;
+short int var388 /* : Bool */;
+val* var389 /* : nullable MProperty */;
+short int var390 /* : Bool */;
 short int var391 /* : Bool */;
-val* var392 /* : nullable Object */;
-val* var_spd393 /* var spd: MMethodDef */;
-long var394 /* : Int */;
-long var_i /* var i: Int */;
-val* var395 /* : Array[MProperty] */;
-val* var397 /* : Array[MProperty] */;
-val* var_398 /* var : Array[MProperty] */;
-val* var399 /* : ArrayIterator[nullable Object] */;
-val* var_400 /* var : ArrayIterator[MProperty] */;
-short int var401 /* : Bool */;
-val* var402 /* : nullable Object */;
-val* var_p /* var p: MProperty */;
-val* var403 /* : Array[MProperty] */;
-val* var405 /* : Array[MProperty] */;
-val* var406 /* : nullable Object */;
+short int var393 /* : Bool */;
+short int var395 /* : Bool */;
+val* var397 /* : NativeArray[String] */;
+static val* varonce396;
+static val* varonce398;
+val* var399 /* : String */;
+char* var400 /* : NativeString */;
+val* var401 /* : FlatString */;
+static val* varonce402;
+val* var403 /* : String */;
+char* var404 /* : NativeString */;
+val* var405 /* : FlatString */;
+val* var406 /* : String */;
 short int var407 /* : Bool */;
 short int var409 /* : Bool */;
 short int var410 /* : Bool */;
+val* var412 /* : NativeArray[String] */;
 static val* varonce411;
-val* var412 /* : String */;
-char* var413 /* : NativeString */;
-long var414 /* : Int */;
-val* var415 /* : FlatString */;
-static val* varonce416;
-val* var417 /* : String */;
-char* var418 /* : NativeString */;
-long var419 /* : Int */;
+static val* varonce413;
+val* var414 /* : String */;
+char* var415 /* : NativeString */;
+val* var416 /* : FlatString */;
+static val* varonce417;
+val* var418 /* : String */;
+char* var419 /* : NativeString */;
 val* var420 /* : FlatString */;
-val* var421 /* : Array[MProperty] */;
-val* var423 /* : Array[MProperty] */;
-static val* varonce424;
-val* var425 /* : String */;
-char* var426 /* : NativeString */;
-long var427 /* : Int */;
-val* var428 /* : FlatString */;
-val* var429 /* : String */;
-static val* varonce430;
-val* var431 /* : String */;
-char* var432 /* : NativeString */;
-long var433 /* : Int */;
-val* var434 /* : FlatString */;
-static val* varonce435;
-val* var436 /* : String */;
-char* var437 /* : NativeString */;
-long var438 /* : Int */;
-val* var439 /* : FlatString */;
-val* var440 /* : Array[MProperty] */;
-val* var442 /* : Array[MProperty] */;
-static val* varonce443;
-val* var444 /* : String */;
-char* var445 /* : NativeString */;
-long var446 /* : Int */;
-val* var447 /* : FlatString */;
-val* var448 /* : String */;
-static val* varonce449;
-val* var450 /* : String */;
-char* var451 /* : NativeString */;
-long var452 /* : Int */;
-val* var453 /* : FlatString */;
-val* var454 /* : Array[Object] */;
-long var455 /* : Int */;
-val* var456 /* : NativeArray[Object] */;
-val* var457 /* : String */;
-long var458 /* : Int */;
-long var459 /* : Int */;
-short int var461 /* : Bool */;
-int cltype462;
-int idtype463;
-const char* var_class_name464;
-long var465 /* : Int */;
-short int var470 /* : Bool */;
-short int var471 /* : Bool */;
-long var472 /* : Int */;
-long var474 /* : Int */;
-long var475 /* : Int */;
+val* var421 /* : String */;
+val* var422 /* : String */;
+val* var423 /* : MPropDef */;
+val* var425 /* : MPropDef */;
+val* var_pd /* var pd: MPropDef */;
+short int var426 /* : Bool */;
+int cltype427;
+int idtype428;
+val* var429 /* : nullable MSignature */;
+val* var431 /* : nullable MSignature */;
+val* var432 /* : MClass */;
+val* var434 /* : MClass */;
+val* var435 /* : MClassType */;
+val* var437 /* : MClassType */;
+val* var438 /* : MClassType */;
+val* var440 /* : MClassType */;
+val* var441 /* : MModule */;
+val* var443 /* : MModule */;
+val* var444 /* : MSignature */;
+val* var_sig445 /* var sig: MSignature */;
+val* var446 /* : Array[MParameter] */;
+val* var448 /* : Array[MParameter] */;
+val* var_449 /* var : Array[MParameter] */;
+val* var450 /* : ArrayIterator[nullable Object] */;
+val* var_451 /* var : ArrayIterator[MParameter] */;
+short int var452 /* : Bool */;
+val* var453 /* : nullable Object */;
+val* var_param454 /* var param: MParameter */;
+short int var455 /* : Bool */;
+short int var456 /* : Bool */;
+short int var458 /* : Bool */;
+short int var459 /* : Bool */;
+short int var_460 /* var : Bool */;
+val* var461 /* : MType */;
+val* var463 /* : MType */;
+short int var464 /* : Bool */;
+int cltype465;
+int idtype466;
+val* var467 /* : MParameter */;
+val* var468 /* : String */;
+val* var470 /* : String */;
+val* var471 /* : MType */;
+val* var473 /* : MType */;
+short int var474 /* : Bool */;
 short int var476 /* : Bool */;
-short int var478 /* : Bool */;
-short int var_479 /* var : Bool */;
-short int var480 /* : Bool */;
-short int var_481 /* var : Bool */;
-val* var482 /* : null */;
+val* var479 /* : nullable Object */;
+val* var_longest /* var longest: MMethodDef */;
+long var480 /* : Int */;
+long var482 /* : Int */;
 short int var483 /* : Bool */;
-short int var484 /* : Bool */;
-short int var486 /* : Bool */;
+short int var485 /* : Bool */;
+int cltype486;
+int idtype487;
+const char* var_class_name;
 short int var488 /* : Bool */;
-val* var489 /* : ToolContext */;
-val* var491 /* : ToolContext */;
-static val* varonce492;
-val* var493 /* : String */;
-char* var494 /* : NativeString */;
-long var495 /* : Int */;
-val* var496 /* : FlatString */;
-val* var497 /* : Array[Object] */;
-long var498 /* : Int */;
-val* var499 /* : NativeArray[Object] */;
-val* var500 /* : String */;
-long var501 /* : Int */;
-val* var502 /* : MClass */;
-val* var504 /* : MClass */;
-val* var506 /* : Array[MProperty] */;
-val* var508 /* : Array[MProperty] */;
-long var509 /* : Int */;
-long var511 /* : Int */;
-long var512 /* : Int */;
-short int var513 /* : Bool */;
+val* var_489 /* var : Array[MMethodDef] */;
+val* var490 /* : ArrayIterator[nullable Object] */;
+val* var_491 /* var : ArrayIterator[MMethodDef] */;
+short int var492 /* : Bool */;
+val* var493 /* : nullable Object */;
+val* var_spd /* var spd: MMethodDef */;
+val* var494 /* : Array[MProperty] */;
+val* var496 /* : Array[MProperty] */;
+long var497 /* : Int */;
+long var499 /* : Int */;
+val* var500 /* : Array[MProperty] */;
+val* var502 /* : Array[MProperty] */;
+long var503 /* : Int */;
+long var505 /* : Int */;
+short int var506 /* : Bool */;
+short int var508 /* : Bool */;
+int cltype509;
+int idtype510;
+const char* var_class_name511;
+short int var512 /* : Bool */;
+short int var514 /* : Bool */;
 short int var515 /* : Bool */;
-int cltype516;
-int idtype517;
-const char* var_class_name518;
+short int var517 /* : Bool */;
 short int var519 /* : Bool */;
-val* var520 /* : nullable MSignature */;
-val* var522 /* : nullable MSignature */;
-val* var523 /* : Array[MParameter] */;
-val* var525 /* : Array[MParameter] */;
+val* var_520 /* var : Array[MMethodDef] */;
+val* var521 /* : ArrayIterator[nullable Object] */;
+val* var_522 /* var : ArrayIterator[MMethodDef] */;
+short int var523 /* : Bool */;
+val* var524 /* : nullable Object */;
+val* var_spd525 /* var spd: MMethodDef */;
+long var_i /* var i: Int */;
 val* var526 /* : Array[MProperty] */;
 val* var528 /* : Array[MProperty] */;
-val* var529 /* : null */;
-short int var530 /* : Bool */;
-short int var531 /* : Bool */;
-short int var533 /* : Bool */;
-short int var534 /* : Bool */;
+val* var_529 /* var : Array[MProperty] */;
+val* var530 /* : ArrayIterator[nullable Object] */;
+val* var_531 /* var : ArrayIterator[MProperty] */;
+short int var532 /* : Bool */;
+val* var533 /* : nullable Object */;
+val* var_p534 /* var p: MProperty */;
 val* var535 /* : Array[MProperty] */;
 val* var537 /* : Array[MProperty] */;
-val* var538 /* : MSignature */;
-val* var539 /* : null */;
-val* var_msignature540 /* var msignature: MSignature */;
-val* var542 /* : ToolContext */;
-val* var544 /* : ToolContext */;
+val* var538 /* : nullable Object */;
+short int var539 /* : Bool */;
+short int var541 /* : Bool */;
+short int var542 /* : Bool */;
+val* var544 /* : NativeArray[String] */;
+static val* varonce543;
 static val* varonce545;
 val* var546 /* : String */;
 char* var547 /* : NativeString */;
-long var548 /* : Int */;
-val* var549 /* : FlatString */;
-val* var550 /* : Array[Object] */;
-long var551 /* : Int */;
-val* var552 /* : NativeArray[Object] */;
-val* var553 /* : String */;
-long var554 /* : Int */;
-val* var555 /* : MClass */;
-val* var557 /* : MClass */;
-val* var559 /* : nullable MMethod */;
-val* var561 /* : nullable MMethod */;
-val* var_mprop562 /* var mprop: MMethod */;
-val* var563 /* : MMethodDef */;
-val* var564 /* : Location */;
-val* var566 /* : Location */;
-val* var_mpropdef567 /* var mpropdef: MMethodDef */;
-short int var568 /* : Bool */;
-val* var570 /* : Array[MProperty] */;
-val* var572 /* : Array[MProperty] */;
-val* var573 /* : MSignature */;
-val* var574 /* : null */;
-val* var_msignature575 /* var msignature: MSignature */;
-val* var577 /* : MSignature */;
-val* var578 /* : Array[MParameter] */;
-val* var579 /* : null */;
-val* var582 /* : ToolContext */;
-val* var584 /* : ToolContext */;
-static val* varonce585;
-val* var586 /* : String */;
-char* var587 /* : NativeString */;
-long var588 /* : Int */;
-val* var589 /* : FlatString */;
-val* var590 /* : Array[Object] */;
-long var591 /* : Int */;
-val* var592 /* : NativeArray[Object] */;
-val* var593 /* : String */;
-long var594 /* : Int */;
-val* var595 /* : MClass */;
-val* var597 /* : MClass */;
+val* var548 /* : FlatString */;
+static val* varonce549;
+val* var550 /* : String */;
+char* var551 /* : NativeString */;
+val* var552 /* : FlatString */;
+static val* varonce553;
+val* var554 /* : String */;
+char* var555 /* : NativeString */;
+val* var556 /* : FlatString */;
+static val* varonce557;
+val* var558 /* : String */;
+char* var559 /* : NativeString */;
+val* var560 /* : FlatString */;
+static val* varonce561;
+val* var562 /* : String */;
+char* var563 /* : NativeString */;
+val* var564 /* : FlatString */;
+val* var565 /* : String */;
+val* var566 /* : Array[MProperty] */;
+val* var568 /* : Array[MProperty] */;
+static val* varonce569;
+val* var570 /* : String */;
+char* var571 /* : NativeString */;
+val* var572 /* : FlatString */;
+val* var573 /* : String */;
+val* var574 /* : String */;
+val* var575 /* : Array[MProperty] */;
+val* var577 /* : Array[MProperty] */;
+static val* varonce578;
+val* var579 /* : String */;
+char* var580 /* : NativeString */;
+val* var581 /* : FlatString */;
+val* var582 /* : String */;
+val* var583 /* : String */;
+long var584 /* : Int */;
+short int var586 /* : Bool */;
+int cltype587;
+int idtype588;
+const char* var_class_name589;
+long var590 /* : Int */;
+short int var593 /* : Bool */;
+short int var594 /* : Bool */;
+short int var596 /* : Bool */;
+short int var597 /* : Bool */;
+short int var598 /* : Bool */;
+short int var599 /* : Bool */;
+short int var_600 /* var : Bool */;
+val* var601 /* : Array[MProperty] */;
+val* var603 /* : Array[MProperty] */;
+short int var604 /* : Bool */;
+static val* varonce605;
+val* var606 /* : String */;
+char* var607 /* : NativeString */;
+val* var608 /* : FlatString */;
+static val* varonce609;
+val* var610 /* : String */;
+char* var611 /* : NativeString */;
+val* var612 /* : FlatString */;
+short int var613 /* : Bool */;
+short int var614 /* : Bool */;
+long var615 /* : Int */;
+long var617 /* : Int */;
+short int var618 /* : Bool */;
+short int var620 /* : Bool */;
+short int var_621 /* var : Bool */;
+short int var622 /* : Bool */;
+short int var_623 /* var : Bool */;
+short int var624 /* : Bool */;
+short int var625 /* : Bool */;
+short int var627 /* : Bool */;
+short int var629 /* : Bool */;
+val* var630 /* : ToolContext */;
+val* var632 /* : ToolContext */;
+val* var634 /* : NativeArray[String] */;
+static val* varonce633;
+static val* varonce635;
+val* var636 /* : String */;
+char* var637 /* : NativeString */;
+val* var638 /* : FlatString */;
+val* var639 /* : String */;
+val* var640 /* : String */;
+val* var641 /* : String */;
+val* var642 /* : MClass */;
+val* var644 /* : MClass */;
+val* var646 /* : Array[MProperty] */;
+val* var648 /* : Array[MProperty] */;
+long var649 /* : Int */;
+long var651 /* : Int */;
+short int var652 /* : Bool */;
+short int var654 /* : Bool */;
+int cltype655;
+int idtype656;
+const char* var_class_name657;
+short int var658 /* : Bool */;
+val* var659 /* : nullable MSignature */;
+val* var661 /* : nullable MSignature */;
+val* var662 /* : Array[MParameter] */;
+val* var664 /* : Array[MParameter] */;
+val* var665 /* : Array[MProperty] */;
+val* var667 /* : Array[MProperty] */;
+short int var668 /* : Bool */;
+short int var669 /* : Bool */;
+short int var671 /* : Bool */;
+short int var672 /* : Bool */;
+val* var673 /* : Array[MProperty] */;
+val* var675 /* : Array[MProperty] */;
+val* var676 /* : MSignature */;
+val* var_msignature677 /* var msignature: MSignature */;
+val* var679 /* : ToolContext */;
+val* var681 /* : ToolContext */;
+val* var683 /* : NativeArray[String] */;
+static val* varonce682;
+static val* varonce684;
+val* var685 /* : String */;
+char* var686 /* : NativeString */;
+val* var687 /* : FlatString */;
+val* var688 /* : String */;
+val* var689 /* : String */;
+val* var690 /* : String */;
+val* var691 /* : String */;
+val* var692 /* : MClass */;
+val* var694 /* : MClass */;
+val* var696 /* : nullable MMethod */;
+val* var698 /* : nullable MMethod */;
+val* var_mprop699 /* var mprop: MMethod */;
+val* var700 /* : MMethodDef */;
+val* var701 /* : Location */;
+val* var703 /* : Location */;
+val* var_mpropdef704 /* var mpropdef: MMethodDef */;
+val* var706 /* : Array[MProperty] */;
+val* var708 /* : Array[MProperty] */;
+val* var709 /* : MSignature */;
+val* var_msignature710 /* var msignature: MSignature */;
+val* var712 /* : MSignature */;
+val* var713 /* : Array[MParameter] */;
+val* var716 /* : ToolContext */;
+val* var718 /* : ToolContext */;
+val* var720 /* : NativeArray[String] */;
+static val* varonce719;
+static val* varonce721;
+val* var722 /* : String */;
+char* var723 /* : NativeString */;
+val* var724 /* : FlatString */;
+val* var725 /* : String */;
+val* var726 /* : String */;
+val* var727 /* : String */;
+val* var728 /* : String */;
+val* var729 /* : MClass */;
+val* var731 /* : MClass */;
 var_nclassdef = p0;
 {
 { /* Inline modelize_class#AClassdef#mclassdef (var_nclassdef) on <var_nclassdef:AClassdef> */
@@ -1372,8 +1805,8 @@ RET_LABEL1:(void)0;
 }
 if (unlikely(var == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 120);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 139);
+fatal_exit(1);
 }
 var_mclassdef = var;
 {
@@ -1389,8 +1822,8 @@ goto RET_LABEL;
 var8 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -1401,8015 +1834,7914 @@ RET_LABEL7:(void)0;
 var11 = var6->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var6:MClass> */
 if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
+fatal_exit(1);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
 }
 }
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var12 = varonce;
 } else {
 var13 = "Object";
-var14 = 6;
-var15 = standard___standard__NativeString___to_s_with_length(var13, var14);
-var12 = var15;
+var14 = standard___standard__NativeString___to_s_with_length(var13, 6l);
+var12 = var14;
 varonce = var12;
 }
 {
-var16 = ((short int (*)(val* self, val* p0))(var9->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var9, var12) /* == on <var9:String>*/;
+var15 = ((short int(*)(val* self, val* p0))(var9->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var9, var12); /* == on <var9:String>*/
 }
-var_ = var16;
-if (var16){
+var_ = var15;
+if (var15){
 {
 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
-var19 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
-var17 = var19;
-RET_LABEL18:(void)0;
+var18 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
+var16 = var18;
+RET_LABEL17:(void)0;
 }
 }
-var20 = NULL;
-if (var17 == NULL) {
-var21 = 1; /* is null */
+if (var16 == NULL) {
+var19 = 1; /* is null */
 } else {
-var21 = 0; /* arg is null but recv is not */
+var19 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var17,var20) on <var17:nullable MMethod> */
-var_other = var20;
+{ /* Inline kernel#Object#== (var16,((val*)NULL)) on <var16:nullable MMethod> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var17,var_other) on <var17:nullable MMethod(MMethod)> */
-var26 = var17 == var_other;
-var24 = var26;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
-}
-}
+{ /* Inline kernel#Object#is_same_instance (var16,var_other) on <var16:nullable MMethod(MMethod)> */
+var24 = var16 == var_other;
 var22 = var24;
 goto RET_LABEL23;
 RET_LABEL23:(void)0;
 }
-var21 = var22;
 }
-var5 = var21;
+var20 = var22;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
+}
+var19 = var20;
+}
+var5 = var19;
 } else {
 var5 = var_;
 }
 if (var5){
-var27 = NEW_nit__MMethod(&type_nit__MMethod);
-if (varonce28) {
-var29 = varonce28;
+var25 = NEW_nit__MMethod(&type_nit__MMethod);
+if (likely(varonce26!=NULL)) {
+var27 = varonce26;
 } else {
-var30 = "init";
-var31 = 4;
-var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
-var29 = var32;
-varonce28 = var29;
+var28 = "init";
+var29 = standard___standard__NativeString___to_s_with_length(var28, 4l);
+var27 = var29;
+varonce26 = var27;
 }
 {
 { /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var35 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var35 == NULL)) {
+var32 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var32 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
-var33 = var35;
-RET_LABEL34:(void)0;
+var30 = var32;
+RET_LABEL31:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#visibility (var33) on <var33:MClass> */
-var38 = var33->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var33:MClass> */
-if (unlikely(var38 == NULL)) {
+{ /* Inline model#MClass#visibility (var30) on <var30:MClass> */
+var35 = var30->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var30:MClass> */
+if (unlikely(var35 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 403);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 440);
+fatal_exit(1);
 }
-var36 = var38;
-RET_LABEL37:(void)0;
+var33 = var35;
+RET_LABEL34:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(var27->class->vft[COLOR_nit__model__MProperty__intro_mclassdef_61d]))(var27, var_mclassdef) /* intro_mclassdef= on <var27:MMethod>*/;
+((void(*)(val* self, val* p0))(var25->class->vft[COLOR_nit__model__MProperty__intro_mclassdef_61d]))(var25, var_mclassdef); /* intro_mclassdef= on <var25:MMethod>*/
 }
 {
-((void (*)(val* self, val* p0))(var27->class->vft[COLOR_nit__model__MProperty__name_61d]))(var27, var29) /* name= on <var27:MMethod>*/;
+((void(*)(val* self, val* p0))(var25->class->vft[COLOR_nit__model__MProperty__name_61d]))(var25, var27); /* name= on <var25:MMethod>*/
 }
 {
-((void (*)(val* self, val* p0))(var27->class->vft[COLOR_nit__model__MProperty__visibility_61d]))(var27, var36) /* visibility= on <var27:MMethod>*/;
+((void(*)(val* self, val* p0))(var25->class->vft[COLOR_nit__model__MProperty__visibility_61d]))(var25, var33); /* visibility= on <var25:MMethod>*/
 }
 {
-((void (*)(val* self))(var27->class->vft[COLOR_standard__kernel__Object__init]))(var27) /* init on <var27:MMethod>*/;
+((void(*)(val* self))(var25->class->vft[COLOR_standard__kernel__Object__init]))(var25); /* init on <var25:MMethod>*/
 }
-var_mprop = var27;
-var39 = 1;
+var_mprop = var25;
 {
-{ /* Inline model#MMethod#is_root_init= (var_mprop,var39) on <var_mprop:MMethod> */
-var_mprop->attrs[COLOR_nit__model__MMethod___is_root_init].s = var39; /* _is_root_init on <var_mprop:MMethod> */
-RET_LABEL40:(void)0;
+{ /* Inline model#MMethod#is_root_init= (var_mprop,1) on <var_mprop:MMethod> */
+var_mprop->attrs[COLOR_nit__model__MMethod___is_root_init].s = 1; /* _is_root_init on <var_mprop:MMethod> */
+RET_LABEL36:(void)0;
 }
 }
-var41 = NEW_nit__MMethodDef(&type_nit__MMethodDef);
+var37 = NEW_nit__MMethodDef(&type_nit__MMethodDef);
 {
 { /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef> */
-var44 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef> */
-if (unlikely(var44 == NULL)) {
+var40 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef> */
+if (unlikely(var40 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
+fatal_exit(1);
 }
-var42 = var44;
-RET_LABEL43:(void)0;
+var38 = var40;
+RET_LABEL39:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(var41->class->vft[COLOR_nit__model__MPropDef__mclassdef_61d]))(var41, var_mclassdef) /* mclassdef= on <var41:MMethodDef>*/;
+((void(*)(val* self, val* p0))(var37->class->vft[COLOR_nit__model__MPropDef__mclassdef_61d]))(var37, var_mclassdef); /* mclassdef= on <var37:MMethodDef>*/
 }
 {
-((void (*)(val* self, val* p0))(var41->class->vft[COLOR_nit__model__MPropDef__mproperty_61d]))(var41, var_mprop) /* mproperty= on <var41:MMethodDef>*/;
+((void(*)(val* self, val* p0))(var37->class->vft[COLOR_nit__model__MPropDef__mproperty_61d]))(var37, var_mprop); /* mproperty= on <var37:MMethodDef>*/
 }
 {
-((void (*)(val* self, val* p0))(var41->class->vft[COLOR_nit__model__MPropDef__location_61d]))(var41, var42) /* location= on <var41:MMethodDef>*/;
+((void(*)(val* self, val* p0))(var37->class->vft[COLOR_nit__model__MPropDef__location_61d]))(var37, var38); /* location= on <var37:MMethodDef>*/
 }
 {
-((void (*)(val* self))(var41->class->vft[COLOR_standard__kernel__Object__init]))(var41) /* init on <var41:MMethodDef>*/;
+((void(*)(val* self))(var37->class->vft[COLOR_standard__kernel__Object__init]))(var37); /* init on <var37:MMethodDef>*/
 }
-var_mpropdef = var41;
-var45 = NEW_standard__Array(&type_standard__Array__nit__MParameter);
+var_mpropdef = var37;
+var41 = NEW_standard__Array(&type_standard__Array__nit__MParameter);
 {
-standard___standard__Array___standard__kernel__Object__init(var45); /* Direct call array#Array#init on <var45:Array[MParameter]>*/
+standard___standard__Array___standard__kernel__Object__init(var41); /* Direct call array#Array#init on <var41:Array[MParameter]>*/
 }
-var_mparameters = var45;
-var46 = NEW_nit__MSignature(&type_nit__MSignature);
-var47 = NULL;
+var_mparameters = var41;
+var42 = NEW_nit__MSignature(&type_nit__MSignature);
 {
-((void (*)(val* self, val* p0))(var46->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var46, var_mparameters) /* mparameters= on <var46:MSignature>*/;
+((void(*)(val* self, val* p0))(var42->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var42, var_mparameters); /* mparameters= on <var42:MSignature>*/
 }
 {
-((void (*)(val* self, val* p0))(var46->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var46, var47) /* return_mtype= on <var46:MSignature>*/;
+((void(*)(val* self, val* p0))(var42->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var42, ((val*)NULL)); /* return_mtype= on <var42:MSignature>*/
 }
 {
-((void (*)(val* self))(var46->class->vft[COLOR_standard__kernel__Object__init]))(var46) /* init on <var46:MSignature>*/;
+((void(*)(val* self))(var42->class->vft[COLOR_standard__kernel__Object__init]))(var42); /* init on <var42:MSignature>*/
 }
-var_msignature = var46;
+var_msignature = var42;
 {
 { /* Inline model#MMethodDef#msignature= (var_mpropdef,var_msignature) on <var_mpropdef:MMethodDef> */
 var_mpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val = var_msignature; /* _msignature on <var_mpropdef:MMethodDef> */
-RET_LABEL48:(void)0;
+RET_LABEL43:(void)0;
 }
 }
 {
 { /* Inline model#MMethodDef#new_msignature= (var_mpropdef,var_msignature) on <var_mpropdef:MMethodDef> */
 var_mpropdef->attrs[COLOR_nit__model__MMethodDef___new_msignature].val = var_msignature; /* _new_msignature on <var_mpropdef:MMethodDef> */
-RET_LABEL49:(void)0;
+RET_LABEL44:(void)0;
 }
 }
-var50 = 1;
 {
-{ /* Inline model#MMethod#is_init= (var_mprop,var50) on <var_mprop:MMethod> */
-var_mprop->attrs[COLOR_nit__model__MMethod___is_init].s = var50; /* _is_init on <var_mprop:MMethod> */
-RET_LABEL51:(void)0;
+{ /* Inline model#MMethod#is_init= (var_mprop,1) on <var_mprop:MMethod> */
+var_mprop->attrs[COLOR_nit__model__MMethod___is_init].s = 1; /* _is_init on <var_mprop:MMethod> */
+RET_LABEL45:(void)0;
 }
 }
 {
 { /* Inline modelize_property#AClassdef#mfree_init= (var_nclassdef,var_mpropdef) on <var_nclassdef:AClassdef> */
 var_nclassdef->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val = var_mpropdef; /* _mfree_init on <var_nclassdef:AClassdef> */
-RET_LABEL52:(void)0;
+RET_LABEL46:(void)0;
 }
 }
 {
 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
-var55 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
-if (unlikely(var55 == NULL)) {
+var49 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var49 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+fatal_exit(1);
 }
-var53 = var55;
-RET_LABEL54:(void)0;
+var47 = var49;
+RET_LABEL48:(void)0;
 }
 }
-if (varonce56) {
-var57 = varonce56;
+if (unlikely(varonce50==NULL)) {
+var51 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce52!=NULL)) {
+var53 = varonce52;
 } else {
-var58 = " gets a free empty constructor ";
-var59 = 31;
-var60 = standard___standard__NativeString___to_s_with_length(var58, var59);
-var57 = var60;
-varonce56 = var57;
-}
-var61 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var61 = array_instance Array[Object] */
-var62 = 4;
-var63 = NEW_standard__NativeArray(var62, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var63)->values[0] = (val*) var_mclassdef;
-((struct instance_standard__NativeArray*)var63)->values[1] = (val*) var57;
-((struct instance_standard__NativeArray*)var63)->values[2] = (val*) var_mpropdef;
-((struct instance_standard__NativeArray*)var63)->values[3] = (val*) var_msignature;
-{
-((void (*)(val* self, val* p0, long p1))(var61->class->vft[COLOR_standard__array__Array__with_native]))(var61, var63, var62) /* with_native on <var61:Array[Object]>*/;
+var54 = " gets a free empty constructor ";
+var55 = standard___standard__NativeString___to_s_with_length(var54, 31l);
+var53 = var55;
+varonce52 = var53;
 }
+((struct instance_standard__NativeArray*)var51)->values[1]=var53;
+} else {
+var51 = varonce50;
+varonce50 = NULL;
 }
 {
-var64 = ((val* (*)(val* self))(var61->class->vft[COLOR_standard__string__Object__to_s]))(var61) /* to_s on <var61:Array[Object]>*/;
+var56 = ((val*(*)(val* self))(var_mclassdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mclassdef); /* to_s on <var_mclassdef:MClassDef>*/
 }
-var65 = 3;
+((struct instance_standard__NativeArray*)var51)->values[0]=var56;
 {
-nit___nit__ToolContext___info(var53, var64, var65); /* Direct call toolcontext#ToolContext#info on <var53:ToolContext>*/
+var57 = ((val*(*)(val* self))(var_mpropdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mpropdef); /* to_s on <var_mpropdef:MMethodDef>*/
 }
+((struct instance_standard__NativeArray*)var51)->values[2]=var57;
 {
-{ /* Inline modelize_property#ModelBuilder#the_root_init_mmethod= (self,var_mprop) on <self:ModelBuilder> */
-self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val = var_mprop; /* _the_root_init_mmethod on <self:ModelBuilder> */
-RET_LABEL66:(void)0;
-}
-}
-goto RET_LABEL;
-} else {
+var58 = ((val*(*)(val* self))(var_msignature->class->vft[COLOR_standard__string__Object__to_s]))(var_msignature); /* to_s on <var_msignature:MSignature>*/
 }
+((struct instance_standard__NativeArray*)var51)->values[3]=var58;
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var69 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var69 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
-}
-var67 = var69;
-RET_LABEL68:(void)0;
-}
+var59 = ((val*(*)(val* self))(var51->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var51); /* native_to_s on <var51:NativeArray[String]>*/
 }
+varonce50 = var51;
 {
-{ /* Inline model#MClass#kind (var67) on <var67:MClass> */
-var72 = var67->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var67:MClass> */
-if (unlikely(var72 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
-show_backtrace(1);
-}
-var70 = var72;
-RET_LABEL71:(void)0;
-}
+nit___nit__ToolContext___info(var47, var59, 3l); /* Direct call toolcontext#ToolContext#info on <var47:ToolContext>*/
 }
 {
-{ /* Inline model#MClassKind#need_init (var70) on <var70:MClassKind> */
-var75 = var70->attrs[COLOR_nit__model__MClassKind___need_init].s; /* _need_init on <var70:MClassKind> */
-var73 = var75;
-RET_LABEL74:(void)0;
+{ /* Inline modelize_property#ModelBuilder#the_root_init_mmethod= (self,var_mprop) on <self:ModelBuilder> */
+self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val = var_mprop; /* _the_root_init_mmethod on <self:ModelBuilder> */
+RET_LABEL60:(void)0;
 }
 }
-var76 = !var73;
-if (var76){
 goto RET_LABEL;
 } else {
 }
-var77 = NULL;
-var_defined_init = var77;
+var_defined_init = ((val*)NULL);
 {
 { /* Inline model#MClassDef#mpropdefs (var_mclassdef) on <var_mclassdef:MClassDef> */
-var80 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mpropdefs].val; /* _mpropdefs on <var_mclassdef:MClassDef> */
-if (unlikely(var80 == NULL)) {
+var63 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mpropdefs].val; /* _mpropdefs on <var_mclassdef:MClassDef> */
+if (unlikely(var63 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 623);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 684);
+fatal_exit(1);
 }
-var78 = var80;
-RET_LABEL79:(void)0;
+var61 = var63;
+RET_LABEL62:(void)0;
 }
 }
-var_81 = var78;
+var_64 = var61;
 {
-var82 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_81);
+var65 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_64);
 }
-var_83 = var82;
+var_66 = var65;
 for(;;) {
 {
-var84 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_83);
+var67 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_66);
 }
-if (var84){
+if (var67){
 {
-var85 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_83);
+var68 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_66);
 }
-var_mpropdef86 = var85;
-/* <var_mpropdef86:MPropDef> isa MMethodDef */
+var_mpropdef69 = var68;
+/* <var_mpropdef69:MPropDef> isa MMethodDef */
 cltype = type_nit__MMethodDef.color;
 idtype = type_nit__MMethodDef.id;
-if(cltype >= var_mpropdef86->type->table_size) {
-var87 = 0;
+if(cltype >= var_mpropdef69->type->table_size) {
+var70 = 0;
 } else {
-var87 = var_mpropdef86->type->type_table[cltype] == idtype;
+var70 = var_mpropdef69->type->type_table[cltype] == idtype;
 }
-var88 = !var87;
-if (var88){
+var71 = !var70;
+if (var71){
 goto BREAK_label;
 } else {
 }
 {
-{ /* Inline model#MPropDef#mproperty (var_mpropdef86) on <var_mpropdef86:MPropDef(MMethodDef)> */
-var91 = var_mpropdef86->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef86:MPropDef(MMethodDef)> */
-if (unlikely(var91 == NULL)) {
+{ /* Inline model#MPropDef#mproperty (var_mpropdef69) on <var_mpropdef69:MPropDef(MMethodDef)> */
+var74 = var_mpropdef69->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef69:MPropDef(MMethodDef)> */
+if (unlikely(var74 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var89 = var91;
-RET_LABEL90:(void)0;
+var72 = var74;
+RET_LABEL73:(void)0;
 }
 }
 {
-{ /* Inline model#MMethod#is_init (var89) on <var89:MProperty(MMethod)> */
-var94 = var89->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var89:MProperty(MMethod)> */
-var92 = var94;
-RET_LABEL93:(void)0;
+{ /* Inline model#MMethod#is_init (var72) on <var72:MProperty(MMethod)> */
+var77 = var72->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var72:MProperty(MMethod)> */
+var75 = var77;
+RET_LABEL76:(void)0;
 }
 }
-var95 = !var92;
-if (var95){
+var78 = !var75;
+if (var78){
 goto BREAK_label;
 } else {
 }
 {
-{ /* Inline model#MPropDef#mproperty (var_mpropdef86) on <var_mpropdef86:MPropDef(MMethodDef)> */
-var98 = var_mpropdef86->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef86:MPropDef(MMethodDef)> */
-if (unlikely(var98 == NULL)) {
+{ /* Inline model#MPropDef#mproperty (var_mpropdef69) on <var_mpropdef69:MPropDef(MMethodDef)> */
+var81 = var_mpropdef69->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef69:MPropDef(MMethodDef)> */
+if (unlikely(var81 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var96 = var98;
-RET_LABEL97:(void)0;
+var79 = var81;
+RET_LABEL80:(void)0;
 }
 }
 {
-{ /* Inline model#MMethod#is_root_init (var96) on <var96:MProperty(MMethod)> */
-var101 = var96->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var96:MProperty(MMethod)> */
-var99 = var101;
-RET_LABEL100:(void)0;
+{ /* Inline model#MMethod#is_root_init (var79) on <var79:MProperty(MMethod)> */
+var84 = var79->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var79:MProperty(MMethod)> */
+var82 = var84;
+RET_LABEL83:(void)0;
 }
 }
-if (var99){
-var102 = NULL;
+if (var82){
 if (var_defined_init == NULL) {
-var103 = 1; /* is null */
+var85 = 1; /* is null */
 } else {
-var103 = 0; /* arg is null but recv is not */
+var85 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_defined_init,var102) on <var_defined_init:nullable MMethodDef> */
-var_other = var102;
+{ /* Inline kernel#Object#== (var_defined_init,((val*)NULL)) on <var_defined_init:nullable MMethodDef> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_defined_init,var_other) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
-var108 = var_defined_init == var_other;
-var106 = var108;
-goto RET_LABEL107;
-RET_LABEL107:(void)0;
+var90 = var_defined_init == var_other;
+var88 = var90;
+goto RET_LABEL89;
+RET_LABEL89:(void)0;
 }
 }
-var104 = var106;
-goto RET_LABEL105;
-RET_LABEL105:(void)0;
+var86 = var88;
+goto RET_LABEL87;
+RET_LABEL87:(void)0;
 }
-var103 = var104;
+var85 = var86;
 }
-if (unlikely(!var103)) {
+if (unlikely(!var85)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 151);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 167);
+fatal_exit(1);
 }
-var_defined_init = var_mpropdef86;
+var_defined_init = var_mpropdef69;
 } else {
 {
-{ /* Inline model#MPropDef#mproperty (var_mpropdef86) on <var_mpropdef86:MPropDef(MMethodDef)> */
-var111 = var_mpropdef86->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef86:MPropDef(MMethodDef)> */
-if (unlikely(var111 == NULL)) {
+{ /* Inline model#MPropDef#mproperty (var_mpropdef69) on <var_mpropdef69:MPropDef(MMethodDef)> */
+var93 = var_mpropdef69->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef69:MPropDef(MMethodDef)> */
+if (unlikely(var93 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var109 = var111;
-RET_LABEL110:(void)0;
+var91 = var93;
+RET_LABEL92:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#name (var109) on <var109:MProperty(MMethod)> */
-var114 = var109->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var109:MProperty(MMethod)> */
-if (unlikely(var114 == NULL)) {
+{ /* Inline model#MProperty#name (var91) on <var91:MProperty(MMethod)> */
+var96 = var91->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var91:MProperty(MMethod)> */
+if (unlikely(var96 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
 }
-var112 = var114;
-RET_LABEL113:(void)0;
+var94 = var96;
+RET_LABEL95:(void)0;
 }
 }
-if (varonce115) {
-var116 = varonce115;
+if (likely(varonce97!=NULL)) {
+var98 = varonce97;
 } else {
-var117 = "init";
-var118 = 4;
-var119 = standard___standard__NativeString___to_s_with_length(var117, var118);
-var116 = var119;
-varonce115 = var116;
+var99 = "init";
+var100 = standard___standard__NativeString___to_s_with_length(var99, 4l);
+var98 = var100;
+varonce97 = var98;
 }
 {
-var120 = ((short int (*)(val* self, val* p0))(var112->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var112, var116) /* == on <var112:String>*/;
+var101 = ((short int(*)(val* self, val* p0))(var94->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var94, var98); /* == on <var94:String>*/
 }
-if (var120){
+if (var101){
 goto RET_LABEL;
 } else {
 }
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_83); /* Direct call array#ArrayIterator#next on <var_83:ArrayIterator[MPropDef]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_66); /* Direct call array#ArrayIterator#next on <var_66:ArrayIterator[MPropDef]>*/
 }
 } else {
-goto BREAK_label121;
+goto BREAK_label102;
 }
 }
-BREAK_label121: (void)0;
+BREAK_label102: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_83) on <var_83:ArrayIterator[MPropDef]> */
-RET_LABEL122:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_66); /* Direct call array#ArrayIterator#finish on <var_66:ArrayIterator[MPropDef]>*/
 }
 /* <var_nclassdef:AClassdef> isa AStdClassdef */
-cltype124 = type_nit__AStdClassdef.color;
-idtype125 = type_nit__AStdClassdef.id;
-if(cltype124 >= var_nclassdef->type->table_size) {
-var123 = 0;
+cltype104 = type_nit__AStdClassdef.color;
+idtype105 = type_nit__AStdClassdef.id;
+if(cltype104 >= var_nclassdef->type->table_size) {
+var103 = 0;
 } else {
-var123 = var_nclassdef->type->type_table[cltype124] == idtype125;
+var103 = var_nclassdef->type->type_table[cltype104] == idtype105;
 }
-var126 = !var123;
-if (var126){
+var106 = !var103;
+if (var106){
 goto RET_LABEL;
 } else {
 }
-var127 = NEW_standard__Array(&type_standard__Array__nit__MParameter);
+var107 = NEW_standard__Array(&type_standard__Array__nit__MParameter);
 {
-standard___standard__Array___standard__kernel__Object__init(var127); /* Direct call array#Array#init on <var127:Array[MParameter]>*/
+standard___standard__Array___standard__kernel__Object__init(var107); /* Direct call array#Array#init on <var107:Array[MParameter]>*/
 }
-var_mparameters128 = var127;
-var129 = NEW_standard__Array(&type_standard__Array__nit__MProperty);
+var_mparameters108 = var107;
+var109 = NEW_standard__Array(&type_standard__Array__nit__MProperty);
 {
-standard___standard__Array___standard__kernel__Object__init(var129); /* Direct call array#Array#init on <var129:Array[MProperty]>*/
+standard___standard__Array___standard__kernel__Object__init(var109); /* Direct call array#Array#init on <var109:Array[MProperty]>*/
 }
-var_initializers = var129;
+var_initializers = var109;
 {
 { /* Inline parser_nodes#AClassdef#n_propdefs (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
-var132 = var_nclassdef->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef:AClassdef(AStdClassdef)> */
-if (unlikely(var132 == NULL)) {
+var112 = var_nclassdef->attrs[COLOR_nit__parser_nodes__AClassdef___n_propdefs].val; /* _n_propdefs on <var_nclassdef:AClassdef(AStdClassdef)> */
+if (unlikely(var112 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_propdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1012);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1189);
+fatal_exit(1);
 }
-var130 = var132;
-RET_LABEL131:(void)0;
+var110 = var112;
+RET_LABEL111:(void)0;
 }
 }
-var_133 = var130;
+var_113 = var110;
 {
-var134 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_133);
+var114 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_113);
 }
-var_135 = var134;
+var_115 = var114;
 for(;;) {
 {
-var136 = ((short int (*)(val* self))(var_135->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_135) /* is_ok on <var_135:Iterator[APropdef]>*/;
+var116 = ((short int(*)(val* self))((((long)var_115&3)?class_info[((long)var_115&3)]:var_115->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_115); /* is_ok on <var_115:Iterator[APropdef]>*/
 }
-if (var136){
+if (var116){
 {
-var137 = ((val* (*)(val* self))(var_135->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_135) /* item on <var_135:Iterator[APropdef]>*/;
+var117 = ((val*(*)(val* self))((((long)var_115&3)?class_info[((long)var_115&3)]:var_115->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_115); /* item on <var_115:Iterator[APropdef]>*/
 }
-var_npropdef = var137;
+var_npropdef = var117;
 /* <var_npropdef:APropdef> isa AMethPropdef */
-cltype139 = type_nit__AMethPropdef.color;
-idtype140 = type_nit__AMethPropdef.id;
-if(cltype139 >= var_npropdef->type->table_size) {
-var138 = 0;
+cltype119 = type_nit__AMethPropdef.color;
+idtype120 = type_nit__AMethPropdef.id;
+if(cltype119 >= var_npropdef->type->table_size) {
+var118 = 0;
 } else {
-var138 = var_npropdef->type->type_table[cltype139] == idtype140;
+var118 = var_npropdef->type->type_table[cltype119] == idtype120;
 }
-if (var138){
+if (var118){
 {
-{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
-var143 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
-var141 = var143;
-RET_LABEL142:(void)0;
+{ /* Inline modelize_property#AMethPropdef#is_autoinit (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
+var123 = var_npropdef->attrs[COLOR_nit__modelize_property__AMethPropdef___is_autoinit].s; /* _is_autoinit on <var_npropdef:APropdef(AMethPropdef)> */
+var121 = var123;
+RET_LABEL122:(void)0;
 }
 }
-var144 = NULL;
-if (var141 == NULL) {
-var145 = 1; /* is null */
+var124 = !var121;
+if (var124){
+goto BREAK_label125;
 } else {
-var145 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var141,var144) on <var141:nullable MPropDef(nullable MMethodDef)> */
-var_other = var144;
 {
-{ /* Inline kernel#Object#is_same_instance (var141,var_other) on <var141:nullable MMethodDef(MMethodDef)> */
-var150 = var141 == var_other;
-var148 = var150;
-goto RET_LABEL149;
-RET_LABEL149:(void)0;
-}
-}
-var146 = var148;
-goto RET_LABEL147;
-RET_LABEL147:(void)0;
-}
-var145 = var146;
-}
-if (var145){
-goto RET_LABEL;
-} else {
-}
-if (varonce151) {
-var152 = varonce151;
-} else {
-var153 = "autoinit";
-var154 = 8;
-var155 = standard___standard__NativeString___to_s_with_length(var153, var154);
-var152 = var155;
-varonce151 = var152;
+{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
+var128 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
+var126 = var128;
+RET_LABEL127:(void)0;
 }
-{
-var156 = nit__annotation___Prod___get_single_annotation(var_npropdef, var152, self);
 }
-var_at = var156;
-var157 = NULL;
-if (var_at == NULL) {
-var158 = 1; /* is null */
+if (var126 == NULL) {
+var129 = 1; /* is null */
 } else {
-var158 = 0; /* arg is null but recv is not */
+var129 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_at,var157) on <var_at:nullable AAnnotation> */
-var_other = var157;
+{ /* Inline kernel#Object#== (var126,((val*)NULL)) on <var126:nullable MPropDef(nullable MMethodDef)> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_at,var_other) on <var_at:nullable AAnnotation(AAnnotation)> */
-var163 = var_at == var_other;
-var161 = var163;
-goto RET_LABEL162;
-RET_LABEL162:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var126,var_other) on <var126:nullable MMethodDef(MMethodDef)> */
+var134 = var126 == var_other;
+var132 = var134;
+goto RET_LABEL133;
+RET_LABEL133:(void)0;
 }
 }
-var159 = var161;
-goto RET_LABEL160;
-RET_LABEL160:(void)0;
+var130 = var132;
+goto RET_LABEL131;
+RET_LABEL131:(void)0;
 }
-var158 = var159;
+var129 = var130;
 }
-if (var158){
-goto BREAK_label164;
+if (var129){
+goto RET_LABEL;
 } else {
 }
 {
 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
-var167 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
-var165 = var167;
-RET_LABEL166:(void)0;
+var137 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
+var135 = var137;
+RET_LABEL136:(void)0;
 }
 }
-if (var165 == NULL) {
+if (var135 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 170);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 184);
+fatal_exit(1);
 } else {
-{ /* Inline model#MMethodDef#msignature (var165) on <var165:nullable MPropDef(nullable MMethodDef)> */
-if (unlikely(var165 == NULL)) {
+{ /* Inline model#MMethodDef#msignature (var135) on <var135:nullable MPropDef(nullable MMethodDef)> */
+if (unlikely(var135 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2137);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2336);
+fatal_exit(1);
 }
-var170 = var165->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var165:nullable MPropDef(nullable MMethodDef)> */
-var168 = var170;
-RET_LABEL169:(void)0;
+var140 = var135->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var135:nullable MPropDef(nullable MMethodDef)> */
+var138 = var140;
+RET_LABEL139:(void)0;
 }
 }
-var_sig = var168;
-var171 = NULL;
+var_sig = var138;
 if (var_sig == NULL) {
-var172 = 1; /* is null */
+var141 = 1; /* is null */
 } else {
-var172 = 0; /* arg is null but recv is not */
+var141 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_sig,var171) on <var_sig:nullable MSignature> */
-var_other = var171;
+{ /* Inline kernel#Object#== (var_sig,((val*)NULL)) on <var_sig:nullable MSignature> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_sig,var_other) on <var_sig:nullable MSignature(MSignature)> */
-var177 = var_sig == var_other;
-var175 = var177;
-goto RET_LABEL176;
-RET_LABEL176:(void)0;
-}
-}
-var173 = var175;
-goto RET_LABEL174;
-RET_LABEL174:(void)0;
-}
-var172 = var173;
-}
-if (var172){
-goto BREAK_label164;
-} else {
-}
-{
-{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
-var180 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
-var178 = var180;
-RET_LABEL179:(void)0;
-}
+var146 = var_sig == var_other;
+var144 = var146;
+goto RET_LABEL145;
+RET_LABEL145:(void)0;
 }
-if (var178 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 173);
-show_backtrace(1);
-} else {
-var181 = nit___nit__MPropDef___is_intro(var178);
 }
-var182 = !var181;
-if (var182){
-if (varonce183) {
-var184 = varonce183;
-} else {
-var185 = "Error: `autoinit` cannot be set on redefinitions";
-var186 = 48;
-var187 = standard___standard__NativeString___to_s_with_length(var185, var186);
-var184 = var187;
-varonce183 = var184;
+var142 = var144;
+goto RET_LABEL143;
+RET_LABEL143:(void)0;
 }
-{
-nit___nit__ModelBuilder___error(self, var_at, var184); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+var141 = var142;
 }
-goto BREAK_label164;
+if (var141){
+goto BREAK_label125;
 } else {
 }
 {
 { /* Inline model#MSignature#mparameters (var_sig) on <var_sig:nullable MSignature(MSignature)> */
-var190 = var_sig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_sig:nullable MSignature(MSignature)> */
-if (unlikely(var190 == NULL)) {
+var149 = var_sig->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_sig:nullable MSignature(MSignature)> */
+if (unlikely(var149 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
-var188 = var190;
-RET_LABEL189:(void)0;
+var147 = var149;
+RET_LABEL148:(void)0;
 }
 }
-var_191 = var188;
+var_150 = var147;
 {
-var192 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_191);
+var151 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_150);
 }
-var_193 = var192;
+var_152 = var151;
 for(;;) {
 {
-var194 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_193);
+var153 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_152);
 }
-if (var194){
+if (var153){
 {
-var195 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_193);
+var154 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_152);
 }
-var_param = var195;
+var_param = var154;
 {
 { /* Inline model#MParameter#mtype (var_param) on <var_param:MParameter> */
-var198 = var_param->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_param:MParameter> */
-if (unlikely(var198 == NULL)) {
+var157 = var_param->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_param:MParameter> */
+if (unlikely(var157 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
-var196 = var198;
-RET_LABEL197:(void)0;
+var155 = var157;
+RET_LABEL156:(void)0;
 }
 }
-var_ret_type = var196;
-var199 = NEW_nit__MParameter(&type_nit__MParameter);
+var_ret_type = var155;
+var158 = NEW_nit__MParameter(&type_nit__MParameter);
 {
 { /* Inline model#MParameter#name (var_param) on <var_param:MParameter> */
-var202 = var_param->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <var_param:MParameter> */
-if (unlikely(var202 == NULL)) {
+var161 = var_param->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <var_param:MParameter> */
+if (unlikely(var161 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1687);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1876);
+fatal_exit(1);
+}
+var159 = var161;
+RET_LABEL160:(void)0;
 }
-var200 = var202;
-RET_LABEL201:(void)0;
 }
+/* <var_ret_type:MType> isa MNullableType */
+cltype163 = type_nit__MNullableType.color;
+idtype164 = type_nit__MNullableType.id;
+if(cltype163 >= var_ret_type->type->table_size) {
+var162 = 0;
+} else {
+var162 = var_ret_type->type->type_table[cltype163] == idtype164;
+}
+{
+((void(*)(val* self, val* p0))(var158->class->vft[COLOR_nit__model__MParameter__name_61d]))(var158, var159); /* name= on <var158:MParameter>*/
 }
-var203 = 0;
 {
-((void (*)(val* self, val* p0))(var199->class->vft[COLOR_nit__model__MParameter__name_61d]))(var199, var200) /* name= on <var199:MParameter>*/;
+((void(*)(val* self, val* p0))(var158->class->vft[COLOR_nit__model__MParameter__mtype_61d]))(var158, var_ret_type); /* mtype= on <var158:MParameter>*/
 }
 {
-((void (*)(val* self, val* p0))(var199->class->vft[COLOR_nit__model__MParameter__mtype_61d]))(var199, var_ret_type) /* mtype= on <var199:MParameter>*/;
+((void(*)(val* self, short int p0))(var158->class->vft[COLOR_nit__model__MParameter__is_vararg_61d]))(var158, 0); /* is_vararg= on <var158:MParameter>*/
 }
 {
-((void (*)(val* self, short int p0))(var199->class->vft[COLOR_nit__model__MParameter__is_vararg_61d]))(var199, var203) /* is_vararg= on <var199:MParameter>*/;
+((void(*)(val* self, short int p0))(var158->class->vft[COLOR_nit__model__MParameter__is_default_61d]))(var158, var162); /* is_default= on <var158:MParameter>*/
 }
 {
-((void (*)(val* self))(var199->class->vft[COLOR_standard__kernel__Object__init]))(var199) /* init on <var199:MParameter>*/;
+((void(*)(val* self))(var158->class->vft[COLOR_standard__kernel__Object__init]))(var158); /* init on <var158:MParameter>*/
 }
-var_mparameter = var199;
+var_mparameter = var158;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mparameters128, var_mparameter); /* Direct call array#Array#add on <var_mparameters128:Array[MParameter]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mparameters108, var_mparameter); /* Direct call array#Array#add on <var_mparameters108:Array[MParameter]>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_193); /* Direct call array#ArrayIterator#next on <var_193:ArrayIterator[MParameter]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_152); /* Direct call array#ArrayIterator#next on <var_152:ArrayIterator[MParameter]>*/
 }
 } else {
-goto BREAK_label204;
+goto BREAK_label165;
+}
 }
+BREAK_label165: (void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_152); /* Direct call array#ArrayIterator#finish on <var_152:ArrayIterator[MParameter]>*/
 }
-BREAK_label204: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_193) on <var_193:ArrayIterator[MParameter]> */
-RET_LABEL205:(void)0;
+{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
+var168 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
+var166 = var168;
+RET_LABEL167:(void)0;
+}
+}
+if (var166 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 192);
+fatal_exit(1);
+} else {
+{ /* Inline model#MPropDef#mproperty (var166) on <var166:nullable MPropDef(nullable MMethodDef)> */
+if (unlikely(var166 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var171 = var166->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var166:nullable MPropDef(nullable MMethodDef)> */
+if (unlikely(var171 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var169 = var171;
+RET_LABEL170:(void)0;
+}
 }
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var169); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
 }
 {
 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AMethPropdef)> */
-var208 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
-var206 = var208;
-RET_LABEL207:(void)0;
+var174 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AMethPropdef)> */
+var172 = var174;
+RET_LABEL173:(void)0;
 }
 }
-if (var206 == NULL) {
+if (var172 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 183);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 193);
+fatal_exit(1);
 } else {
-{ /* Inline model#MPropDef#mproperty (var206) on <var206:nullable MPropDef(nullable MMethodDef)> */
-if (unlikely(var206 == NULL)) {
+{ /* Inline model#MPropDef#mproperty (var172) on <var172:nullable MPropDef(nullable MMethodDef)> */
+if (unlikely(var172 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var211 = var206->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var206:nullable MPropDef(nullable MMethodDef)> */
-if (unlikely(var211 == NULL)) {
+var177 = var172->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var172:nullable MPropDef(nullable MMethodDef)> */
+if (unlikely(var177 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var209 = var211;
-RET_LABEL210:(void)0;
+var175 = var177;
+RET_LABEL176:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var209); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
+{ /* Inline model#MProperty#is_autoinit= (var175,1) on <var175:MProperty(MMethod)> */
+var175->attrs[COLOR_nit__model__MProperty___is_autoinit].s = 1; /* _is_autoinit on <var175:MProperty(MMethod)> */
+RET_LABEL178:(void)0;
+}
 }
 } else {
 }
 /* <var_npropdef:APropdef> isa AAttrPropdef */
-cltype213 = type_nit__AAttrPropdef.color;
-idtype214 = type_nit__AAttrPropdef.id;
-if(cltype213 >= var_npropdef->type->table_size) {
-var212 = 0;
+cltype180 = type_nit__AAttrPropdef.color;
+idtype181 = type_nit__AAttrPropdef.id;
+if(cltype180 >= var_npropdef->type->table_size) {
+var179 = 0;
 } else {
-var212 = var_npropdef->type->type_table[cltype213] == idtype214;
+var179 = var_npropdef->type->type_table[cltype180] == idtype181;
 }
-if (var212){
+if (var179){
 {
-{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var217 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
-var215 = var217;
-RET_LABEL216:(void)0;
+{ /* Inline modelize_property#AAttrPropdef#mreadpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
+var184 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___mreadpropdef].val; /* _mreadpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
+var182 = var184;
+RET_LABEL183:(void)0;
+}
+}
+var_mreadpropdef = var182;
+if (var_mreadpropdef == NULL) {
+var186 = 1; /* is null */
+} else {
+var186 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_mreadpropdef,((val*)NULL)) on <var_mreadpropdef:nullable MMethodDef> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_mreadpropdef,var_other) on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var191 = var_mreadpropdef == var_other;
+var189 = var191;
+goto RET_LABEL190;
+RET_LABEL190:(void)0;
+}
+}
+var187 = var189;
+goto RET_LABEL188;
+RET_LABEL188:(void)0;
+}
+var186 = var187;
+}
+var_192 = var186;
+if (var186){
+var185 = var_192;
+} else {
+{
+{ /* Inline model#MMethodDef#msignature (var_mreadpropdef) on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var195 = var_mreadpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var193 = var195;
+RET_LABEL194:(void)0;
 }
 }
-var218 = NULL;
-if (var215 == NULL) {
-var219 = 1; /* is null */
+if (var193 == NULL) {
+var196 = 1; /* is null */
 } else {
-var219 = 0; /* arg is null but recv is not */
+var196 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var215,var218) on <var215:nullable MPropDef(nullable MAttributeDef)> */
-var_other = var218;
+{ /* Inline kernel#Object#== (var193,((val*)NULL)) on <var193:nullable MSignature> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var215,var_other) on <var215:nullable MAttributeDef(MAttributeDef)> */
-var224 = var215 == var_other;
-var222 = var224;
-goto RET_LABEL223;
-RET_LABEL223:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var193,var_other) on <var193:nullable MSignature(MSignature)> */
+var201 = var193 == var_other;
+var199 = var201;
+goto RET_LABEL200;
+RET_LABEL200:(void)0;
+}
 }
+var197 = var199;
+goto RET_LABEL198;
+RET_LABEL198:(void)0;
 }
-var220 = var222;
-goto RET_LABEL221;
-RET_LABEL221:(void)0;
+var196 = var197;
 }
-var219 = var220;
+var185 = var196;
 }
-if (var219){
+if (var185){
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline modelize_property#AAttrPropdef#noinit (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var227 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___noinit].s; /* _noinit on <var_npropdef:APropdef(AAttrPropdef)> */
-var225 = var227;
-RET_LABEL226:(void)0;
+var204 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___noinit].s; /* _noinit on <var_npropdef:APropdef(AAttrPropdef)> */
+var202 = var204;
+RET_LABEL203:(void)0;
 }
 }
-if (var225){
-goto BREAK_label164;
+if (var202){
+goto BREAK_label125;
 } else {
 }
-if (varonce228) {
-var229 = varonce228;
+if (likely(varonce205!=NULL)) {
+var206 = varonce205;
 } else {
-var230 = "autoinit";
-var231 = 8;
-var232 = standard___standard__NativeString___to_s_with_length(var230, var231);
-var229 = var232;
-varonce228 = var229;
+var207 = "lateinit";
+var208 = standard___standard__NativeString___to_s_with_length(var207, 8l);
+var206 = var208;
+varonce205 = var206;
 }
 {
-var233 = nit__annotation___Prod___get_single_annotation(var_npropdef, var229, self);
+var209 = nit__annotation___Prod___get_single_annotation(var_npropdef, var206, self);
 }
-var_atautoinit = var233;
-var234 = NULL;
-if (var_atautoinit == NULL) {
-var235 = 0; /* is null */
+var_atlateinit = var209;
+if (var_atlateinit == NULL) {
+var210 = 0; /* is null */
 } else {
-var235 = 1; /* arg is null and recv is not */
+var210 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_atautoinit,var234) on <var_atautoinit:nullable AAnnotation> */
-var_other238 = var234;
+{ /* Inline kernel#Object#!= (var_atlateinit,((val*)NULL)) on <var_atlateinit:nullable AAnnotation> */
+var_other213 = ((val*)NULL);
 {
-var239 = ((short int (*)(val* self, val* p0))(var_atautoinit->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_atautoinit, var_other238) /* == on <var_atautoinit:nullable AAnnotation(AAnnotation)>*/;
+var214 = ((short int(*)(val* self, val* p0))(var_atlateinit->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_atlateinit, var_other213); /* == on <var_atlateinit:nullable AAnnotation(AAnnotation)>*/
 }
-var240 = !var239;
-var236 = var240;
-goto RET_LABEL237;
-RET_LABEL237:(void)0;
+var215 = !var214;
+var211 = var215;
+goto RET_LABEL212;
+RET_LABEL212:(void)0;
 }
-var235 = var236;
+var210 = var211;
 }
-if (var235){
+if (var210){
 {
-{ /* Inline modelize_property#AAttrPropdef#mreadpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var243 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___mreadpropdef].val; /* _mreadpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
-var241 = var243;
-RET_LABEL242:(void)0;
+{ /* Inline model#MPropDef#mproperty (var_mreadpropdef) on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var218 = var_mreadpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+if (unlikely(var218 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
+var216 = var218;
+RET_LABEL217:(void)0;
 }
-if (var241 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 192);
-show_backtrace(1);
-} else {
-{ /* Inline model#MPropDef#mproperty (var241) on <var241:nullable MMethodDef> */
-if (unlikely(var241 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
 }
-var246 = var241->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var241:nullable MMethodDef> */
-if (unlikely(var246 == NULL)) {
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var216); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_mreadpropdef) on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var221 = var_mreadpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+if (unlikely(var221 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var244 = var246;
-RET_LABEL245:(void)0;
+var219 = var221;
+RET_LABEL220:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var244); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
+{ /* Inline model#MProperty#is_autoinit= (var219,1) on <var219:MProperty(MMethod)> */
+var219->attrs[COLOR_nit__model__MProperty___is_autoinit].s = 1; /* _is_autoinit on <var219:MProperty(MMethod)> */
+RET_LABEL222:(void)0;
 }
-goto BREAK_label164;
+}
+goto BREAK_label125;
 } else {
 }
 {
 { /* Inline modelize_property#AAttrPropdef#has_value (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var249 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___has_value].s; /* _has_value on <var_npropdef:APropdef(AAttrPropdef)> */
-var247 = var249;
-RET_LABEL248:(void)0;
+var225 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___has_value].s; /* _has_value on <var_npropdef:APropdef(AAttrPropdef)> */
+var223 = var225;
+RET_LABEL224:(void)0;
 }
 }
-if (var247){
-goto BREAK_label164;
+if (var223){
+goto BREAK_label125;
 } else {
 }
 {
-{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var252 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
-var250 = var252;
-RET_LABEL251:(void)0;
-}
-}
-if (var250 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 196);
-show_backtrace(1);
-} else {
-{ /* Inline model#MPropDef#mproperty (var250) on <var250:nullable MPropDef(nullable MAttributeDef)> */
-if (unlikely(var250 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
-}
-var255 = var250->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var250:nullable MPropDef(nullable MAttributeDef)> */
-if (unlikely(var255 == NULL)) {
+{ /* Inline model#MPropDef#mproperty (var_mreadpropdef) on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var228 = var_mreadpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+if (unlikely(var228 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var253 = var255;
-RET_LABEL254:(void)0;
+var226 = var228;
+RET_LABEL227:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#name (var253) on <var253:MProperty(MAttribute)> */
-var258 = var253->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var253:MProperty(MAttribute)> */
-if (unlikely(var258 == NULL)) {
+{ /* Inline model#MProperty#name (var226) on <var226:MProperty(MMethod)> */
+var231 = var226->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var226:MProperty(MMethod)> */
+if (unlikely(var231 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
-show_backtrace(1);
-}
-var256 = var258;
-RET_LABEL257:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
 }
+var229 = var231;
+RET_LABEL230:(void)0;
 }
-var259 = 1;
-{
-var260 = standard___standard__Text___substring_from(var256, var259);
 }
-var_paramname = var260;
+var_paramname = var229;
 {
-{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var263 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
-var261 = var263;
-RET_LABEL262:(void)0;
+{ /* Inline model#MMethodDef#msignature (var_mreadpropdef) on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var234 = var_mreadpropdef->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_mreadpropdef:nullable MMethodDef(MMethodDef)> */
+var232 = var234;
+RET_LABEL233:(void)0;
 }
 }
-if (var261 == NULL) {
+if (var232 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 197);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 209);
+fatal_exit(1);
 } else {
-{ /* Inline model#MAttributeDef#static_mtype (var261) on <var261:nullable MPropDef(nullable MAttributeDef)> */
-if (unlikely(var261 == NULL)) {
+{ /* Inline model#MSignature#return_mtype (var232) on <var232:nullable MSignature> */
+if (unlikely(var232 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2180);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
+fatal_exit(1);
 }
-var266 = var261->attrs[COLOR_nit__model__MAttributeDef___static_mtype].val; /* _static_mtype on <var261:nullable MPropDef(nullable MAttributeDef)> */
-var264 = var266;
-RET_LABEL265:(void)0;
+var237 = var232->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <var232:nullable MSignature> */
+var235 = var237;
+RET_LABEL236:(void)0;
 }
 }
-var_ret_type267 = var264;
-var268 = NULL;
-if (var_ret_type267 == NULL) {
-var269 = 1; /* is null */
+var_ret_type238 = var235;
+if (var_ret_type238 == NULL) {
+var239 = 1; /* is null */
 } else {
-var269 = 0; /* arg is null but recv is not */
+var239 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_ret_type267,var268) on <var_ret_type267:nullable MType> */
-var_other = var268;
+{ /* Inline kernel#Object#== (var_ret_type238,((val*)NULL)) on <var_ret_type238:nullable MType> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_ret_type267,var_other) on <var_ret_type267:nullable MType(MType)> */
-var274 = var_ret_type267 == var_other;
-var272 = var274;
-goto RET_LABEL273;
-RET_LABEL273:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_ret_type238,var_other) on <var_ret_type238:nullable MType(MType)> */
+var244 = var_ret_type238 == var_other;
+var242 = var244;
+goto RET_LABEL243;
+RET_LABEL243:(void)0;
 }
 }
-var270 = var272;
-goto RET_LABEL271;
-RET_LABEL271:(void)0;
+var240 = var242;
+goto RET_LABEL241;
+RET_LABEL241:(void)0;
 }
-var269 = var270;
+var239 = var240;
 }
-if (var269){
+if (var239){
 goto RET_LABEL;
 } else {
 }
-var275 = NEW_nit__MParameter(&type_nit__MParameter);
-var276 = 0;
+var245 = NEW_nit__MParameter(&type_nit__MParameter);
+/* <var_ret_type238:nullable MType(MType)> isa MNullableType */
+cltype247 = type_nit__MNullableType.color;
+idtype248 = type_nit__MNullableType.id;
+if(cltype247 >= var_ret_type238->type->table_size) {
+var246 = 0;
+} else {
+var246 = var_ret_type238->type->type_table[cltype247] == idtype248;
+}
+{
+((void(*)(val* self, val* p0))(var245->class->vft[COLOR_nit__model__MParameter__name_61d]))(var245, var_paramname); /* name= on <var245:MParameter>*/
+}
 {
-((void (*)(val* self, val* p0))(var275->class->vft[COLOR_nit__model__MParameter__name_61d]))(var275, var_paramname) /* name= on <var275:MParameter>*/;
+((void(*)(val* self, val* p0))(var245->class->vft[COLOR_nit__model__MParameter__mtype_61d]))(var245, var_ret_type238); /* mtype= on <var245:MParameter>*/
 }
 {
-((void (*)(val* self, val* p0))(var275->class->vft[COLOR_nit__model__MParameter__mtype_61d]))(var275, var_ret_type267) /* mtype= on <var275:MParameter>*/;
+((void(*)(val* self, short int p0))(var245->class->vft[COLOR_nit__model__MParameter__is_vararg_61d]))(var245, 0); /* is_vararg= on <var245:MParameter>*/
 }
 {
-((void (*)(val* self, short int p0))(var275->class->vft[COLOR_nit__model__MParameter__is_vararg_61d]))(var275, var276) /* is_vararg= on <var275:MParameter>*/;
+((void(*)(val* self, short int p0))(var245->class->vft[COLOR_nit__model__MParameter__is_default_61d]))(var245, var246); /* is_default= on <var245:MParameter>*/
 }
 {
-((void (*)(val* self))(var275->class->vft[COLOR_standard__kernel__Object__init]))(var275) /* init on <var275:MParameter>*/;
+((void(*)(val* self))(var245->class->vft[COLOR_standard__kernel__Object__init]))(var245); /* init on <var245:MParameter>*/
 }
-var_mparameter277 = var275;
+var_mparameter249 = var245;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mparameters128, var_mparameter277); /* Direct call array#Array#add on <var_mparameters128:Array[MParameter]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mparameters108, var_mparameter249); /* Direct call array#Array#add on <var_mparameters108:Array[MParameter]>*/
 }
 {
 { /* Inline modelize_property#AAttrPropdef#mwritepropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var280 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___mwritepropdef].val; /* _mwritepropdef on <var_npropdef:APropdef(AAttrPropdef)> */
-var278 = var280;
-RET_LABEL279:(void)0;
+var252 = var_npropdef->attrs[COLOR_nit__modelize_property__AAttrPropdef___mwritepropdef].val; /* _mwritepropdef on <var_npropdef:APropdef(AAttrPropdef)> */
+var250 = var252;
+RET_LABEL251:(void)0;
 }
 }
-var_msetter = var278;
-var281 = NULL;
+var_msetter = var250;
 if (var_msetter == NULL) {
-var282 = 1; /* is null */
+var253 = 1; /* is null */
 } else {
-var282 = 0; /* arg is null but recv is not */
+var253 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_msetter,var281) on <var_msetter:nullable MMethodDef> */
-var_other = var281;
+{ /* Inline kernel#Object#== (var_msetter,((val*)NULL)) on <var_msetter:nullable MMethodDef> */
+var_other = ((val*)NULL);
 {
 { /* Inline kernel#Object#is_same_instance (var_msetter,var_other) on <var_msetter:nullable MMethodDef(MMethodDef)> */
-var287 = var_msetter == var_other;
-var285 = var287;
-goto RET_LABEL286;
-RET_LABEL286:(void)0;
+var258 = var_msetter == var_other;
+var256 = var258;
+goto RET_LABEL257;
+RET_LABEL257:(void)0;
 }
 }
-var283 = var285;
-goto RET_LABEL284;
-RET_LABEL284:(void)0;
+var254 = var256;
+goto RET_LABEL255;
+RET_LABEL255:(void)0;
 }
-var282 = var283;
+var253 = var254;
 }
-if (var282){
+if (var253){
 {
 { /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
-var290 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
-var288 = var290;
-RET_LABEL289:(void)0;
+var261 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
+var259 = var261;
+RET_LABEL260:(void)0;
 }
 }
-if (var288 == NULL) {
+if (var259 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 204);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 216);
+fatal_exit(1);
 } else {
-{ /* Inline model#MPropDef#mproperty (var288) on <var288:nullable MPropDef(nullable MAttributeDef)> */
-if (unlikely(var288 == NULL)) {
+{ /* Inline model#MPropDef#mproperty (var259) on <var259:nullable MPropDef(nullable MAttributeDef)> */
+if (unlikely(var259 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var293 = var288->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var288:nullable MPropDef(nullable MAttributeDef)> */
-if (unlikely(var293 == NULL)) {
+var264 = var259->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var259:nullable MPropDef(nullable MAttributeDef)> */
+if (unlikely(var264 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var291 = var293;
-RET_LABEL292:(void)0;
+var262 = var264;
+RET_LABEL263:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var291); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var262); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
 }
-} else {
 {
-{ /* Inline model#MPropDef#mproperty (var_msetter) on <var_msetter:nullable MMethodDef(MMethodDef)> */
-var296 = var_msetter->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_msetter:nullable MMethodDef(MMethodDef)> */
-if (unlikely(var296 == NULL)) {
+{ /* Inline modelize_property#APropdef#mpropdef (var_npropdef) on <var_npropdef:APropdef(AAttrPropdef)> */
+var267 = var_npropdef->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <var_npropdef:APropdef(AAttrPropdef)> */
+var265 = var267;
+RET_LABEL266:(void)0;
+}
+}
+if (var265 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 217);
+fatal_exit(1);
+} else {
+{ /* Inline model#MPropDef#mproperty (var265) on <var265:nullable MPropDef(nullable MAttributeDef)> */
+if (unlikely(var265 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var270 = var265->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var265:nullable MPropDef(nullable MAttributeDef)> */
+if (unlikely(var270 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
-var294 = var296;
-RET_LABEL295:(void)0;
+var268 = var270;
+RET_LABEL269:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var294); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
+{ /* Inline model#MProperty#is_autoinit= (var268,1) on <var268:MProperty(MAttribute)> */
+var268->attrs[COLOR_nit__model__MProperty___is_autoinit].s = 1; /* _is_autoinit on <var268:MProperty(MAttribute)> */
+RET_LABEL271:(void)0;
 }
 }
 } else {
-}
-BREAK_label164: (void)0;
 {
-((void (*)(val* self))(var_135->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_135) /* next on <var_135:Iterator[APropdef]>*/;
+{ /* Inline model#MPropDef#mproperty (var_msetter) on <var_msetter:nullable MMethodDef(MMethodDef)> */
+var274 = var_msetter->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_msetter:nullable MMethodDef(MMethodDef)> */
+if (unlikely(var274 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var272 = var274;
+RET_LABEL273:(void)0;
+}
+}
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var272); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_msetter) on <var_msetter:nullable MMethodDef(MMethodDef)> */
+var277 = var_msetter->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_msetter:nullable MMethodDef(MMethodDef)> */
+if (unlikely(var277 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var275 = var277;
+RET_LABEL276:(void)0;
+}
+}
+{
+{ /* Inline model#MProperty#is_autoinit= (var275,1) on <var275:MProperty(MMethod)> */
+var275->attrs[COLOR_nit__model__MProperty___is_autoinit].s = 1; /* _is_autoinit on <var275:MProperty(MMethod)> */
+RET_LABEL278:(void)0;
+}
 }
-} else {
-goto BREAK_label297;
 }
+} else {
 }
-BREAK_label297: (void)0;
+BREAK_label125: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_135) on <var_135:Iterator[APropdef]> */
-RET_LABEL298:(void)0;
+((void(*)(val* self))((((long)var_115&3)?class_info[((long)var_115&3)]:var_115->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_115); /* next on <var_115:Iterator[APropdef]>*/
+}
+} else {
+goto BREAK_label279;
+}
 }
+BREAK_label279: (void)0;
+{
+((void(*)(val* self))((((long)var_115&3)?class_info[((long)var_115&3)]:var_115->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_115); /* finish on <var_115:Iterator[APropdef]>*/
 }
 {
 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
-var301 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
-var299 = var301;
-RET_LABEL300:(void)0;
+var282 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
+var280 = var282;
+RET_LABEL281:(void)0;
 }
 }
-var302 = NULL;
-if (var299 == NULL) {
-var303 = 1; /* is null */
+if (var280 == NULL) {
+var283 = 1; /* is null */
 } else {
-var303 = 0; /* arg is null but recv is not */
+var283 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var299,var302) on <var299:nullable MMethod> */
-var_other = var302;
+{ /* Inline kernel#Object#== (var280,((val*)NULL)) on <var280:nullable MMethod> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var299,var_other) on <var299:nullable MMethod(MMethod)> */
-var308 = var299 == var_other;
-var306 = var308;
-goto RET_LABEL307;
-RET_LABEL307:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var280,var_other) on <var280:nullable MMethod(MMethod)> */
+var288 = var280 == var_other;
+var286 = var288;
+goto RET_LABEL287;
+RET_LABEL287:(void)0;
 }
 }
-var304 = var306;
-goto RET_LABEL305;
-RET_LABEL305:(void)0;
+var284 = var286;
+goto RET_LABEL285;
+RET_LABEL285:(void)0;
 }
-var303 = var304;
+var283 = var284;
 }
-if (var303){
+if (var283){
 goto RET_LABEL;
 } else {
 }
 {
 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
-var311 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
-var309 = var311;
-RET_LABEL310:(void)0;
+var291 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
+var289 = var291;
+RET_LABEL290:(void)0;
 }
 }
 {
 { /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
-var314 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
-if (unlikely(var314 == NULL)) {
+var294 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
+if (unlikely(var294 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
-var312 = var314;
-RET_LABEL313:(void)0;
+var292 = var294;
+RET_LABEL293:(void)0;
 }
 }
 {
 { /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
-var317 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
-if (unlikely(var317 == NULL)) {
+var297 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
+if (unlikely(var297 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 495);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
-var315 = var317;
-RET_LABEL316:(void)0;
+var295 = var297;
+RET_LABEL296:(void)0;
 }
 }
-if (var309 == NULL) {
+if (var289 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 215);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 229);
+fatal_exit(1);
 } else {
-var318 = nit___nit__MProperty___lookup_super_definitions(var309, var312, var315);
+var298 = nit___nit__MProperty___lookup_super_definitions(var289, var292, var295);
 }
-var_spropdefs = var318;
+var_spropdefs = var298;
 {
-var319 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_spropdefs);
+var299 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_spropdefs);
 }
-if (var319){
+if (var299){
 {
 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
-var322 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
-if (unlikely(var322 == NULL)) {
+var302 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var302 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+fatal_exit(1);
 }
-var320 = var322;
-RET_LABEL321:(void)0;
+var300 = var302;
+RET_LABEL301:(void)0;
 }
 }
 {
 { /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
-var325 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef(AStdClassdef)> */
-if (unlikely(var325 == NULL)) {
+var305 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef(AStdClassdef)> */
+if (unlikely(var305 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
+fatal_exit(1);
+}
+var303 = var305;
+RET_LABEL304:(void)0;
+}
 }
-var323 = var325;
-RET_LABEL324:(void)0;
+if (unlikely(varonce306==NULL)) {
+var307 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce308!=NULL)) {
+var309 = varonce308;
+} else {
+var310 = "Error: `";
+var311 = standard___standard__NativeString___to_s_with_length(var310, 8l);
+var309 = var311;
+varonce308 = var309;
 }
+((struct instance_standard__NativeArray*)var307)->values[0]=var309;
+if (likely(varonce312!=NULL)) {
+var313 = varonce312;
+} else {
+var314 = "` does not specialize `";
+var315 = standard___standard__NativeString___to_s_with_length(var314, 23l);
+var313 = var315;
+varonce312 = var313;
 }
-if (varonce326) {
-var327 = varonce326;
+((struct instance_standard__NativeArray*)var307)->values[2]=var313;
+if (likely(varonce316!=NULL)) {
+var317 = varonce316;
 } else {
-var328 = "Error: ";
-var329 = 7;
-var330 = standard___standard__NativeString___to_s_with_length(var328, var329);
-var327 = var330;
-varonce326 = var327;
+var318 = "`. Possible duplication of the root class `Object`?";
+var319 = standard___standard__NativeString___to_s_with_length(var318, 51l);
+var317 = var319;
+varonce316 = var317;
 }
-if (varonce331) {
-var332 = varonce331;
+((struct instance_standard__NativeArray*)var307)->values[4]=var317;
 } else {
-var333 = " does not specialize ";
-var334 = 21;
-var335 = standard___standard__NativeString___to_s_with_length(var333, var334);
-var332 = var335;
-varonce331 = var332;
+var307 = varonce306;
+varonce306 = NULL;
+}
+{
+var320 = ((val*(*)(val* self))(var_mclassdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mclassdef); /* to_s on <var_mclassdef:MClassDef>*/
 }
+((struct instance_standard__NativeArray*)var307)->values[1]=var320;
 {
 { /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
-var338 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
-var336 = var338;
-RET_LABEL337:(void)0;
+var323 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
+var321 = var323;
+RET_LABEL322:(void)0;
 }
 }
-if (var336 == NULL) {
+if (var321 == NULL) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 217);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 231);
+fatal_exit(1);
 } else {
-{ /* Inline model#MProperty#intro_mclassdef (var336) on <var336:nullable MMethod> */
-if (unlikely(var336 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var321) on <var321:nullable MMethod> */
+if (unlikely(var321 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var341 = var336->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var336:nullable MMethod> */
-if (unlikely(var341 == NULL)) {
+var326 = var321->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var321:nullable MMethod> */
+if (unlikely(var326 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
-}
-var339 = var341;
-RET_LABEL340:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
+var324 = var326;
+RET_LABEL325:(void)0;
 }
-if (varonce342) {
-var343 = varonce342;
-} else {
-var344 = ". Possible duplication of the root class `Object`?";
-var345 = 50;
-var346 = standard___standard__NativeString___to_s_with_length(var344, var345);
-var343 = var346;
-varonce342 = var343;
 }
-var347 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var347 = array_instance Array[Object] */
-var348 = 5;
-var349 = NEW_standard__NativeArray(var348, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var349)->values[0] = (val*) var327;
-((struct instance_standard__NativeArray*)var349)->values[1] = (val*) var_mclassdef;
-((struct instance_standard__NativeArray*)var349)->values[2] = (val*) var332;
-((struct instance_standard__NativeArray*)var349)->values[3] = (val*) var339;
-((struct instance_standard__NativeArray*)var349)->values[4] = (val*) var343;
 {
-((void (*)(val* self, val* p0, long p1))(var347->class->vft[COLOR_standard__array__Array__with_native]))(var347, var349, var348) /* with_native on <var347:Array[Object]>*/;
-}
+var327 = ((val*(*)(val* self))(var324->class->vft[COLOR_standard__string__Object__to_s]))(var324); /* to_s on <var324:MClassDef>*/
 }
+((struct instance_standard__NativeArray*)var307)->values[3]=var327;
 {
-var350 = ((val* (*)(val* self))(var347->class->vft[COLOR_standard__string__Object__to_s]))(var347) /* to_s on <var347:Array[Object]>*/;
+var328 = ((val*(*)(val* self))(var307->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var307); /* native_to_s on <var307:NativeArray[String]>*/
 }
+varonce306 = var307;
 {
-nit___nit__ToolContext___error(var320, var323, var350); /* Direct call toolcontext#ToolContext#error on <var320:ToolContext>*/
+var329 = nit___nit__ToolContext___error(var300, var303, var328);
 }
 goto RET_LABEL;
 } else {
 }
-{
-var351 = standard___standard__SequenceRead___Collection__first(var_spropdefs);
+if (likely(varonce330!=NULL)) {
+var331 = varonce330;
+} else {
+var332 = "autoinit";
+var333 = standard___standard__NativeString___to_s_with_length(var332, 8l);
+var331 = var333;
+varonce330 = var331;
 }
-var_longest = var351;
 {
-{ /* Inline array#AbstractArrayRead#length (var_spropdefs) on <var_spropdefs:Array[MMethodDef]> */
-var354 = var_spropdefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_spropdefs:Array[MMethodDef]> */
-var352 = var354;
-RET_LABEL353:(void)0;
+var334 = nit__annotation___Prod___get_single_annotation(var_nclassdef, var331, self);
 }
+var_autoinit = var334;
+if (likely(varonce335!=NULL)) {
+var336 = varonce335;
+} else {
+var337 = "noautoinit";
+var338 = standard___standard__NativeString___to_s_with_length(var337, 10l);
+var336 = var338;
+varonce335 = var336;
 }
-var355 = 1;
 {
-{ /* Inline kernel#Int#> (var352,var355) on <var352:Int> */
-/* Covariant cast for argument 0 (i) <var355:Int> isa OTHER */
-/* <var355:Int> isa OTHER */
-var358 = 1; /* easy <var355:Int> isa OTHER*/
-if (unlikely(!var358)) {
-var_class_name = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
-}
-var361 = var352 > var355;
-var356 = var361;
-goto RET_LABEL357;
-RET_LABEL357:(void)0;
+var339 = nit__annotation___Prod___get_single_annotation(var_nclassdef, var336, self);
 }
+var_noautoinit = var339;
+if (var_autoinit == NULL) {
+var340 = 0; /* is null */
+} else {
+var340 = 1; /* arg is null and recv is not */
 }
-if (var356){
-var_362 = var_spropdefs;
+if (0) {
+{ /* Inline kernel#Object#!= (var_autoinit,((val*)NULL)) on <var_autoinit:nullable AAnnotation> */
+var_other213 = ((val*)NULL);
 {
-var363 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_362);
+var343 = ((short int(*)(val* self, val* p0))(var_autoinit->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_autoinit, var_other213); /* == on <var_autoinit:nullable AAnnotation(AAnnotation)>*/
 }
-var_364 = var363;
-for(;;) {
-{
-var365 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_364);
+var344 = !var343;
+var341 = var344;
+goto RET_LABEL342;
+RET_LABEL342:(void)0;
 }
-if (var365){
-{
-var366 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_364);
+var340 = var341;
 }
-var_spd = var366;
+if (var340){
 {
-{ /* Inline model#MMethodDef#initializers (var_spd) on <var_spd:MMethodDef> */
-var369 = var_spd->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_spd:MMethodDef> */
-if (unlikely(var369 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
-}
-var367 = var369;
-RET_LABEL368:(void)0;
-}
+standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var_mparameters108); /* Direct call array#AbstractArray#clear on <var_mparameters108:Array[MParameter]>*/
 }
 {
-{ /* Inline array#AbstractArrayRead#length (var367) on <var367:Array[MProperty]> */
-var372 = var367->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var367:Array[MProperty]> */
-var370 = var372;
-RET_LABEL371:(void)0;
+standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var_initializers); /* Direct call array#AbstractArray#clear on <var_initializers:Array[MProperty]>*/
 }
+if (var_noautoinit == NULL) {
+var345 = 0; /* is null */
+} else {
+var345 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_noautoinit,((val*)NULL)) on <var_noautoinit:nullable AAnnotation> */
+var_other213 = ((val*)NULL);
 {
-{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
-var375 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
-if (unlikely(var375 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
-}
-var373 = var375;
-RET_LABEL374:(void)0;
+var348 = ((short int(*)(val* self, val* p0))(var_noautoinit->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_noautoinit, var_other213); /* == on <var_noautoinit:nullable AAnnotation(AAnnotation)>*/
 }
+var349 = !var348;
+var346 = var349;
+goto RET_LABEL347;
+RET_LABEL347:(void)0;
 }
-{
-{ /* Inline array#AbstractArrayRead#length (var373) on <var373:Array[MProperty]> */
-var378 = var373->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var373:Array[MProperty]> */
-var376 = var378;
-RET_LABEL377:(void)0;
+var345 = var346;
 }
+if (var345){
+if (likely(varonce350!=NULL)) {
+var351 = varonce350;
+} else {
+var352 = "Error: `autoinit` and `noautoinit` are incompatible.";
+var353 = standard___standard__NativeString___to_s_with_length(var352, 52l);
+var351 = var353;
+varonce350 = var351;
 }
 {
-{ /* Inline kernel#Int#> (var370,var376) on <var370:Int> */
-/* Covariant cast for argument 0 (i) <var376:Int> isa OTHER */
-/* <var376:Int> isa OTHER */
-var381 = 1; /* easy <var376:Int> isa OTHER*/
-if (unlikely(!var381)) {
-var_class_name384 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name384);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
-}
-var385 = var370 > var376;
-var379 = var385;
-goto RET_LABEL380;
-RET_LABEL380:(void)0;
-}
+nit___nit__ModelBuilder___error(self, var_autoinit, var351); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
-if (var379){
-var_longest = var_spd;
 } else {
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_364); /* Direct call array#ArrayIterator#next on <var_364:ArrayIterator[MMethodDef]>*/
+{ /* Inline parser_nodes#AAnnotation#n_args (var_autoinit) on <var_autoinit:nullable AAnnotation(AAnnotation)> */
+var356 = var_autoinit->attrs[COLOR_nit__parser_nodes__AAnnotation___n_args].val; /* _n_args on <var_autoinit:nullable AAnnotation(AAnnotation)> */
+if (unlikely(var356 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2988);
+fatal_exit(1);
 }
-} else {
-goto BREAK_label386;
+var354 = var356;
+RET_LABEL355:(void)0;
 }
 }
-BREAK_label386: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_364) on <var_364:ArrayIterator[MMethodDef]> */
-RET_LABEL387:(void)0;
-}
+var357 = nit___nit__ANodes___standard__abstract_collection__Collection__is_empty(var354);
 }
-var_388 = var_spropdefs;
-{
-var389 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_388);
+if (var357){
+if (likely(varonce358!=NULL)) {
+var359 = varonce358;
+} else {
+var360 = "Syntax Error: `autoinit` expects method identifiers, use `noautoinit` to clear all autoinits.";
+var361 = standard___standard__NativeString___to_s_with_length(var360, 93l);
+var359 = var361;
+varonce358 = var359;
 }
-var_390 = var389;
-for(;;) {
 {
-var391 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_390);
+nit___nit__ModelBuilder___error(self, var_autoinit, var359); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
-if (var391){
-{
-var392 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_390);
+} else {
 }
-var_spd393 = var392;
-var394 = 0;
-var_i = var394;
 {
-{ /* Inline model#MMethodDef#initializers (var_spd393) on <var_spd393:MMethodDef> */
-var397 = var_spd393->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_spd393:MMethodDef> */
-if (unlikely(var397 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+{ /* Inline parser_nodes#AAnnotation#n_args (var_autoinit) on <var_autoinit:nullable AAnnotation(AAnnotation)> */
+var364 = var_autoinit->attrs[COLOR_nit__parser_nodes__AAnnotation___n_args].val; /* _n_args on <var_autoinit:nullable AAnnotation(AAnnotation)> */
+if (unlikely(var364 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_args");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 2988);
+fatal_exit(1);
 }
-var395 = var397;
-RET_LABEL396:(void)0;
+var362 = var364;
+RET_LABEL363:(void)0;
 }
 }
-var_398 = var395;
+var_365 = var362;
 {
-var399 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_398);
+var366 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_365);
 }
-var_400 = var399;
+var_367 = var366;
 for(;;) {
 {
-var401 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_400);
+var368 = ((short int(*)(val* self))((((long)var_367&3)?class_info[((long)var_367&3)]:var_367->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_367); /* is_ok on <var_367:Iterator[AExpr]>*/
 }
-if (var401){
+if (var368){
 {
-var402 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_400);
+var369 = ((val*(*)(val* self))((((long)var_367&3)?class_info[((long)var_367&3)]:var_367->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_367); /* item on <var_367:Iterator[AExpr]>*/
 }
-var_p = var402;
+var_narg = var369;
 {
-{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
-var405 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
-if (unlikely(var405 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+var370 = nit__literal___AExpr___as_id(var_narg);
 }
-var403 = var405;
-RET_LABEL404:(void)0;
+var_id = var370;
+if (var_id == NULL) {
+var371 = 1; /* is null */
+} else {
+var371 = 0; /* arg is null but recv is not */
 }
+if (0) {
+var372 = ((short int(*)(val* self, val* p0))(var_id->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_id, ((val*)NULL)); /* == on <var_id:nullable String>*/
+var371 = var372;
 }
-{
-var406 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var403, var_i);
+if (var371){
+if (likely(varonce373!=NULL)) {
+var374 = varonce373;
+} else {
+var375 = "Syntax Error: `autoinit` expects method identifiers.";
+var376 = standard___standard__NativeString___to_s_with_length(var375, 52l);
+var374 = var376;
+varonce373 = var374;
 }
 {
-{ /* Inline kernel#Object#!= (var_p,var406) on <var_p:MProperty> */
-var_other238 = var406;
-{
-var409 = ((short int (*)(val* self, val* p0))(var_p->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_p, var_other238) /* == on <var_p:MProperty>*/;
-}
-var410 = !var409;
-var407 = var410;
-goto RET_LABEL408;
-RET_LABEL408:(void)0;
+nit___nit__ModelBuilder___error(self, var_narg, var374); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
+goto RET_LABEL;
+} else {
 }
-if (var407){
-if (varonce411) {
-var412 = varonce411;
+if (likely(varonce377!=NULL)) {
+var378 = varonce377;
 } else {
-var413 = "Error: conflict for inherited inits ";
-var414 = 36;
-var415 = standard___standard__NativeString___to_s_with_length(var413, var414);
-var412 = var415;
-varonce411 = var412;
+var379 = "=";
+var380 = standard___standard__NativeString___to_s_with_length(var379, 1l);
+var378 = var380;
+varonce377 = var378;
 }
-if (varonce416) {
-var417 = varonce416;
+{
+var381 = ((val*(*)(val* self, val* p0))(var_id->class->vft[COLOR_standard__string__String___43d]))(var_id, var378); /* + on <var_id:nullable String(String)>*/
+}
+{
+var382 = nit___nit__ModelBuilder___try_get_mproperty_by_name(self, var_narg, var_mclassdef, var381);
+}
+var_p = var382;
+if (var_p == NULL) {
+var383 = 1; /* is null */
 } else {
-var418 = "(";
-var419 = 1;
-var420 = standard___standard__NativeString___to_s_with_length(var418, var419);
-var417 = var420;
-varonce416 = var417;
+var383 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_p,((val*)NULL)) on <var_p:nullable MProperty> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MMethodDef#initializers (var_spd393) on <var_spd393:MMethodDef> */
-var423 = var_spd393->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_spd393:MMethodDef> */
-if (unlikely(var423 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+{ /* Inline kernel#Object#is_same_instance (var_p,var_other) on <var_p:nullable MProperty(MProperty)> */
+var388 = var_p == var_other;
+var386 = var388;
+goto RET_LABEL387;
+RET_LABEL387:(void)0;
 }
-var421 = var423;
-RET_LABEL422:(void)0;
 }
+var384 = var386;
+goto RET_LABEL385;
+RET_LABEL385:(void)0;
 }
-if (varonce424) {
-var425 = varonce424;
-} else {
-var426 = ", ";
-var427 = 2;
-var428 = standard___standard__NativeString___to_s_with_length(var426, var427);
-var425 = var428;
-varonce424 = var425;
+var383 = var384;
 }
+if (var383){
 {
-var429 = standard__string___Collection___join(var421, var425);
+var389 = nit___nit__ModelBuilder___try_get_mproperty_by_name(self, var_narg, var_mclassdef, var_id);
 }
-if (varonce430) {
-var431 = varonce430;
+var_p = var389;
 } else {
-var432 = ") and ";
-var433 = 6;
-var434 = standard___standard__NativeString___to_s_with_length(var432, var433);
-var431 = var434;
-varonce430 = var431;
 }
-if (varonce435) {
-var436 = varonce435;
+if (var_p == NULL) {
+var390 = 1; /* is null */
 } else {
-var437 = "(";
-var438 = 1;
-var439 = standard___standard__NativeString___to_s_with_length(var437, var438);
-var436 = var439;
-varonce435 = var436;
+var390 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_p,((val*)NULL)) on <var_p:nullable MProperty> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
-var442 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
-if (unlikely(var442 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
-}
-var440 = var442;
-RET_LABEL441:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_p,var_other) on <var_p:nullable MProperty(MProperty)> */
+var395 = var_p == var_other;
+var393 = var395;
+goto RET_LABEL394;
+RET_LABEL394:(void)0;
 }
 }
-if (varonce443) {
-var444 = varonce443;
-} else {
-var445 = ", ";
-var446 = 2;
-var447 = standard___standard__NativeString___to_s_with_length(var445, var446);
-var444 = var447;
-varonce443 = var444;
+var391 = var393;
+goto RET_LABEL392;
+RET_LABEL392:(void)0;
 }
-{
-var448 = standard__string___Collection___join(var440, var444);
+var390 = var391;
 }
-if (varonce449) {
-var450 = varonce449;
+if (var390){
+if (unlikely(varonce396==NULL)) {
+var397 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce398!=NULL)) {
+var399 = varonce398;
 } else {
-var451 = ")";
-var452 = 1;
-var453 = standard___standard__NativeString___to_s_with_length(var451, var452);
-var450 = var453;
-varonce449 = var450;
+var400 = "Error: unknown method `";
+var401 = standard___standard__NativeString___to_s_with_length(var400, 23l);
+var399 = var401;
+varonce398 = var399;
 }
-var454 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var454 = array_instance Array[Object] */
-var455 = 9;
-var456 = NEW_standard__NativeArray(var455, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var456)->values[0] = (val*) var412;
-((struct instance_standard__NativeArray*)var456)->values[1] = (val*) var_spd393;
-((struct instance_standard__NativeArray*)var456)->values[2] = (val*) var417;
-((struct instance_standard__NativeArray*)var456)->values[3] = (val*) var429;
-((struct instance_standard__NativeArray*)var456)->values[4] = (val*) var431;
-((struct instance_standard__NativeArray*)var456)->values[5] = (val*) var_longest;
-((struct instance_standard__NativeArray*)var456)->values[6] = (val*) var436;
-((struct instance_standard__NativeArray*)var456)->values[7] = (val*) var448;
-((struct instance_standard__NativeArray*)var456)->values[8] = (val*) var450;
-{
-((void (*)(val* self, val* p0, long p1))(var454->class->vft[COLOR_standard__array__Array__with_native]))(var454, var456, var455) /* with_native on <var454:Array[Object]>*/;
+((struct instance_standard__NativeArray*)var397)->values[0]=var399;
+if (likely(varonce402!=NULL)) {
+var403 = varonce402;
+} else {
+var404 = "`";
+var405 = standard___standard__NativeString___to_s_with_length(var404, 1l);
+var403 = var405;
+varonce402 = var403;
 }
+((struct instance_standard__NativeArray*)var397)->values[2]=var403;
+} else {
+var397 = varonce396;
+varonce396 = NULL;
 }
+((struct instance_standard__NativeArray*)var397)->values[1]=var_id;
 {
-var457 = ((val* (*)(val* self))(var454->class->vft[COLOR_standard__string__Object__to_s]))(var454) /* to_s on <var454:Array[Object]>*/;
+var406 = ((val*(*)(val* self))(var397->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var397); /* native_to_s on <var397:NativeArray[String]>*/
 }
+varonce396 = var397;
 {
-nit___nit__ModelBuilder___error(self, var_nclassdef, var457); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+nit___nit__ModelBuilder___error(self, var_narg, var406); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
 goto RET_LABEL;
 } else {
 }
-var458 = 1;
 {
-{ /* Inline kernel#Int#+ (var_i,var458) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var458:Int> isa OTHER */
-/* <var458:Int> isa OTHER */
-var461 = 1; /* easy <var458:Int> isa OTHER*/
-if (unlikely(!var461)) {
-var_class_name464 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name464);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
-}
-var465 = var_i + var458;
-var459 = var465;
-goto RET_LABEL460;
-RET_LABEL460:(void)0;
+{ /* Inline model#MProperty#is_autoinit (var_p) on <var_p:nullable MProperty(MProperty)> */
+var409 = var_p->attrs[COLOR_nit__model__MProperty___is_autoinit].s; /* _is_autoinit on <var_p:nullable MProperty(MProperty)> */
+var407 = var409;
+RET_LABEL408:(void)0;
 }
 }
-var_i = var459;
-{
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_400); /* Direct call array#ArrayIterator#next on <var_400:ArrayIterator[MProperty]>*/
+var410 = !var407;
+if (var410){
+if (unlikely(varonce411==NULL)) {
+var412 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce413!=NULL)) {
+var414 = varonce413;
+} else {
+var415 = "Error: `";
+var416 = standard___standard__NativeString___to_s_with_length(var415, 8l);
+var414 = var416;
+varonce413 = var414;
 }
+((struct instance_standard__NativeArray*)var412)->values[0]=var414;
+if (likely(varonce417!=NULL)) {
+var418 = varonce417;
 } else {
-goto BREAK_label466;
+var419 = "` is not an autoinit method";
+var420 = standard___standard__NativeString___to_s_with_length(var419, 27l);
+var418 = var420;
+varonce417 = var418;
 }
+((struct instance_standard__NativeArray*)var412)->values[2]=var418;
+} else {
+var412 = varonce411;
+varonce411 = NULL;
 }
-BREAK_label466: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_400) on <var_400:ArrayIterator[MProperty]> */
-RET_LABEL467:(void)0;
+var421 = ((val*(*)(val* self))(var_p->class->vft[COLOR_standard__string__Object__to_s]))(var_p); /* to_s on <var_p:nullable MProperty(MProperty)>*/
 }
+((struct instance_standard__NativeArray*)var412)->values[1]=var421;
+{
+var422 = ((val*(*)(val* self))(var412->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var412); /* native_to_s on <var412:NativeArray[String]>*/
 }
+varonce411 = var412;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_390); /* Direct call array#ArrayIterator#next on <var_390:ArrayIterator[MMethodDef]>*/
+nit___nit__ModelBuilder___error(self, var_narg, var422); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
+goto RET_LABEL;
 } else {
-goto BREAK_label468;
 }
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_initializers, var_p); /* Direct call array#Array#add on <var_initializers:Array[MProperty]>*/
 }
-BREAK_label468: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_390) on <var_390:ArrayIterator[MMethodDef]> */
-RET_LABEL469:(void)0;
+{ /* Inline model#MProperty#intro (var_p) on <var_p:nullable MProperty(MProperty)> */
+var425 = var_p->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_p:nullable MProperty(MProperty)> */
+if (unlikely(var425 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
+var423 = var425;
+RET_LABEL424:(void)0;
 }
+}
+var_pd = var423;
+/* <var_pd:MPropDef> isa MMethodDef */
+cltype427 = type_nit__MMethodDef.color;
+idtype428 = type_nit__MMethodDef.id;
+if(cltype427 >= var_pd->type->table_size) {
+var426 = 0;
 } else {
+var426 = var_pd->type->type_table[cltype427] == idtype428;
 }
+if (var426){
 {
-{ /* Inline array#AbstractArrayRead#length (var_spropdefs) on <var_spropdefs:Array[MMethodDef]> */
-var474 = var_spropdefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_spropdefs:Array[MMethodDef]> */
-var472 = var474;
-RET_LABEL473:(void)0;
+{ /* Inline model#MMethodDef#msignature (var_pd) on <var_pd:MPropDef(MMethodDef)> */
+var431 = var_pd->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_pd:MPropDef(MMethodDef)> */
+var429 = var431;
+RET_LABEL430:(void)0;
 }
 }
-var475 = 1;
 {
-{ /* Inline kernel#Int#== (var472,var475) on <var472:Int> */
-var478 = var472 == var475;
-var476 = var478;
-goto RET_LABEL477;
-RET_LABEL477:(void)0;
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var434 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var434 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
+}
+var432 = var434;
+RET_LABEL433:(void)0;
 }
 }
-var_479 = var476;
-if (var476){
 {
-var480 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_mparameters128);
+{ /* Inline model#MClass#mclass_type (var432) on <var432:MClass> */
+var437 = var432->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var432:MClass> */
+if (unlikely(var437 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
 }
-var471 = var480;
-} else {
-var471 = var_479;
+var435 = var437;
+RET_LABEL436:(void)0;
 }
-var_481 = var471;
-if (var471){
-var482 = NULL;
-if (var_defined_init == NULL) {
-var483 = 1; /* is null */
-} else {
-var483 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var_defined_init,var482) on <var_defined_init:nullable MMethodDef> */
-var_other = var482;
 {
-{ /* Inline kernel#Object#is_same_instance (var_defined_init,var_other) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
-var488 = var_defined_init == var_other;
-var486 = var488;
-goto RET_LABEL487;
-RET_LABEL487:(void)0;
-}
-}
-var484 = var486;
-goto RET_LABEL485;
-RET_LABEL485:(void)0;
+{ /* Inline model#MClassDef#bound_mtype (var_mclassdef) on <var_mclassdef:MClassDef> */
+var440 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_mclassdef:MClassDef> */
+if (unlikely(var440 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
+fatal_exit(1);
 }
-var483 = var484;
+var438 = var440;
+RET_LABEL439:(void)0;
 }
-var470 = var483;
-} else {
-var470 = var_481;
 }
-if (var470){
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
-var491 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
-if (unlikely(var491 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+{ /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
+var443 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
+if (unlikely(var443 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
-var489 = var491;
-RET_LABEL490:(void)0;
+var441 = var443;
+RET_LABEL442:(void)0;
 }
 }
-if (varonce492) {
-var493 = varonce492;
+if (var429 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 279);
+fatal_exit(1);
 } else {
-var494 = " inherits the basic constructor ";
-var495 = 32;
-var496 = standard___standard__NativeString___to_s_with_length(var494, var495);
-var493 = var496;
-varonce492 = var493;
+var444 = nit___nit__MSignature___MType__resolve_for(var429, var435, var438, var441, 0);
 }
-var497 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var497 = array_instance Array[Object] */
-var498 = 3;
-var499 = NEW_standard__NativeArray(var498, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var499)->values[0] = (val*) var_mclassdef;
-((struct instance_standard__NativeArray*)var499)->values[1] = (val*) var493;
-((struct instance_standard__NativeArray*)var499)->values[2] = (val*) var_longest;
+var_sig445 = var444;
 {
-((void (*)(val* self, val* p0, long p1))(var497->class->vft[COLOR_standard__array__Array__with_native]))(var497, var499, var498) /* with_native on <var497:Array[Object]>*/;
+{ /* Inline model#MSignature#mparameters (var_sig445) on <var_sig445:MSignature> */
+var448 = var_sig445->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_sig445:MSignature> */
+if (unlikely(var448 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
+var446 = var448;
+RET_LABEL447:(void)0;
 }
-{
-var500 = ((val* (*)(val* self))(var497->class->vft[COLOR_standard__string__Object__to_s]))(var497) /* to_s on <var497:Array[Object]>*/;
 }
-var501 = 3;
+var_449 = var446;
 {
-nit___nit__ToolContext___info(var489, var500, var501); /* Direct call toolcontext#ToolContext#info on <var489:ToolContext>*/
+var450 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_449);
 }
+var_451 = var450;
+for(;;) {
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var504 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var504 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
-}
-var502 = var504;
-RET_LABEL503:(void)0;
-}
+var452 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_451);
 }
+if (var452){
 {
-{ /* Inline modelize_property#MClass#root_init= (var502,var_longest) on <var502:MClass> */
-var502->attrs[COLOR_nit__modelize_property__MClass___root_init].val = var_longest; /* _root_init on <var502:MClass> */
-RET_LABEL505:(void)0;
+var453 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_451);
 }
+var_param454 = var453;
+{
+{ /* Inline model#MParameter#is_default (var_param454) on <var_param454:MParameter> */
+var458 = var_param454->attrs[COLOR_nit__model__MParameter___is_default].s; /* _is_default on <var_param454:MParameter> */
+var456 = var458;
+RET_LABEL457:(void)0;
 }
-goto RET_LABEL;
-} else {
 }
+var459 = !var456;
+var_460 = var459;
+if (var459){
 {
-{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
-var508 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
-if (unlikely(var508 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+{ /* Inline model#MParameter#mtype (var_param454) on <var_param454:MParameter> */
+var463 = var_param454->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_param454:MParameter> */
+if (unlikely(var463 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
-var506 = var508;
-RET_LABEL507:(void)0;
+var461 = var463;
+RET_LABEL462:(void)0;
 }
 }
-{
-{ /* Inline array#AbstractArrayRead#length (var506) on <var506:Array[MProperty]> */
-var511 = var506->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var506:Array[MProperty]> */
-var509 = var511;
-RET_LABEL510:(void)0;
+/* <var461:MType> isa MNullableType */
+cltype465 = type_nit__MNullableType.color;
+idtype466 = type_nit__MNullableType.id;
+if(cltype465 >= var461->type->table_size) {
+var464 = 0;
+} else {
+var464 = var461->type->type_table[cltype465] == idtype466;
 }
+var455 = var464;
+} else {
+var455 = var_460;
 }
-var512 = 0;
+if (var455){
+var467 = NEW_nit__MParameter(&type_nit__MParameter);
 {
-{ /* Inline kernel#Int#> (var509,var512) on <var509:Int> */
-/* Covariant cast for argument 0 (i) <var512:Int> isa OTHER */
-/* <var512:Int> isa OTHER */
-var515 = 1; /* easy <var512:Int> isa OTHER*/
-if (unlikely(!var515)) {
-var_class_name518 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name518);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+{ /* Inline model#MParameter#name (var_param454) on <var_param454:MParameter> */
+var470 = var_param454->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <var_param454:MParameter> */
+if (unlikely(var470 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1876);
+fatal_exit(1);
 }
-var519 = var509 > var512;
-var513 = var519;
-goto RET_LABEL514;
-RET_LABEL514:(void)0;
+var468 = var470;
+RET_LABEL469:(void)0;
 }
 }
-if (var513){
 {
-{ /* Inline model#MMethodDef#new_msignature (var_longest) on <var_longest:MMethodDef> */
-var522 = var_longest->attrs[COLOR_nit__model__MMethodDef___new_msignature].val; /* _new_msignature on <var_longest:MMethodDef> */
-var520 = var522;
-RET_LABEL521:(void)0;
-}
+{ /* Inline model#MParameter#mtype (var_param454) on <var_param454:MParameter> */
+var473 = var_param454->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_param454:MParameter> */
+if (unlikely(var473 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
-if (var520 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 252);
-show_backtrace(1);
-} else {
-{ /* Inline model#MSignature#mparameters (var520) on <var520:nullable MSignature> */
-if (unlikely(var520 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
+var471 = var473;
+RET_LABEL472:(void)0;
 }
-var525 = var520->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var520:nullable MSignature> */
-if (unlikely(var525 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
 }
-var523 = var525;
-RET_LABEL524:(void)0;
+{
+{ /* Inline model#MParameter#is_vararg (var_param454) on <var_param454:MParameter> */
+var476 = var_param454->attrs[COLOR_nit__model__MParameter___is_vararg].s; /* _is_vararg on <var_param454:MParameter> */
+var474 = var476;
+RET_LABEL475:(void)0;
 }
 }
 {
-standard___standard__Sequence___prepend(var_mparameters128, var523); /* Direct call abstract_collection#Sequence#prepend on <var_mparameters128:Array[MParameter]>*/
+((void(*)(val* self, val* p0))(var467->class->vft[COLOR_nit__model__MParameter__name_61d]))(var467, var468); /* name= on <var467:MParameter>*/
 }
 {
-{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
-var528 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
-if (unlikely(var528 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+((void(*)(val* self, val* p0))(var467->class->vft[COLOR_nit__model__MParameter__mtype_61d]))(var467, var471); /* mtype= on <var467:MParameter>*/
 }
-var526 = var528;
-RET_LABEL527:(void)0;
+{
+((void(*)(val* self, short int p0))(var467->class->vft[COLOR_nit__model__MParameter__is_vararg_61d]))(var467, var474); /* is_vararg= on <var467:MParameter>*/
 }
+{
+((void(*)(val* self, short int p0))(var467->class->vft[COLOR_nit__model__MParameter__is_default_61d]))(var467, 1); /* is_default= on <var467:MParameter>*/
 }
 {
-standard___standard__Sequence___prepend(var_initializers, var526); /* Direct call abstract_collection#Sequence#prepend on <var_initializers:Array[MProperty]>*/
+((void(*)(val* self))(var467->class->vft[COLOR_standard__kernel__Object__init]))(var467); /* init on <var467:MParameter>*/
 }
+var_param454 = var467;
 } else {
 }
-var529 = NULL;
-if (var_defined_init == NULL) {
-var530 = 0; /* is null */
-} else {
-var530 = 1; /* arg is null and recv is not */
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mparameters108, var_param454); /* Direct call array#Array#add on <var_mparameters108:Array[MParameter]>*/
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_defined_init,var529) on <var_defined_init:nullable MMethodDef> */
-var_other238 = var529;
 {
-var533 = ((short int (*)(val* self, val* p0))(var_defined_init->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_defined_init, var_other238) /* == on <var_defined_init:nullable MMethodDef(MMethodDef)>*/;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_451); /* Direct call array#ArrayIterator#next on <var_451:ArrayIterator[MParameter]>*/
 }
-var534 = !var533;
-var531 = var534;
-goto RET_LABEL532;
-RET_LABEL532:(void)0;
+} else {
+goto BREAK_label477;
 }
-var530 = var531;
 }
-if (var530){
+BREAK_label477: (void)0;
 {
-{ /* Inline model#MMethodDef#initializers (var_defined_init) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
-var537 = var_defined_init->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_defined_init:nullable MMethodDef(MMethodDef)> */
-if (unlikely(var537 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
-}
-var535 = var537;
-RET_LABEL536:(void)0;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_451); /* Direct call array#ArrayIterator#finish on <var_451:ArrayIterator[MParameter]>*/
 }
+} else {
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 289);
+fatal_exit(1);
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var535, var_initializers); /* Direct call array#Array#add_all on <var535:Array[MProperty]>*/
+((void(*)(val* self))((((long)var_367&3)?class_info[((long)var_367&3)]:var_367->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_367); /* next on <var_367:Iterator[AExpr]>*/
+}
+} else {
+goto BREAK_label478;
 }
-var538 = NEW_nit__MSignature(&type_nit__MSignature);
-var539 = NULL;
-{
-((void (*)(val* self, val* p0))(var538->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var538, var_mparameters128) /* mparameters= on <var538:MSignature>*/;
 }
+BREAK_label478: (void)0;
 {
-((void (*)(val* self, val* p0))(var538->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var538, var539) /* return_mtype= on <var538:MSignature>*/;
+((void(*)(val* self))((((long)var_367&3)?class_info[((long)var_367&3)]:var_367->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_367); /* finish on <var_367:Iterator[AExpr]>*/
 }
+} else {
 {
-((void (*)(val* self))(var538->class->vft[COLOR_standard__kernel__Object__init]))(var538) /* init on <var538:MSignature>*/;
+var479 = standard___standard__SequenceRead___Collection__first(var_spropdefs);
 }
-var_msignature540 = var538;
+var_longest = var479;
 {
-{ /* Inline model#MMethodDef#new_msignature= (var_defined_init,var_msignature540) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
-var_defined_init->attrs[COLOR_nit__model__MMethodDef___new_msignature].val = var_msignature540; /* _new_msignature on <var_defined_init:nullable MMethodDef(MMethodDef)> */
-RET_LABEL541:(void)0;
+{ /* Inline array#AbstractArrayRead#length (var_spropdefs) on <var_spropdefs:Array[MMethodDef]> */
+var482 = var_spropdefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_spropdefs:Array[MMethodDef]> */
+var480 = var482;
+RET_LABEL481:(void)0;
 }
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
-var544 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
-if (unlikely(var544 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
-}
-var542 = var544;
-RET_LABEL543:(void)0;
+{ /* Inline kernel#Int#> (var480,1l) on <var480:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var485 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var485)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
 }
+var488 = var480 > 1l;
+var483 = var488;
+goto RET_LABEL484;
+RET_LABEL484:(void)0;
 }
-if (varonce545) {
-var546 = varonce545;
-} else {
-var547 = " extends its basic constructor signature to ";
-var548 = 44;
-var549 = standard___standard__NativeString___to_s_with_length(var547, var548);
-var546 = var549;
-varonce545 = var546;
 }
-var550 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var550 = array_instance Array[Object] */
-var551 = 4;
-var552 = NEW_standard__NativeArray(var551, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var552)->values[0] = (val*) var_mclassdef;
-((struct instance_standard__NativeArray*)var552)->values[1] = (val*) var546;
-((struct instance_standard__NativeArray*)var552)->values[2] = (val*) var_defined_init;
-((struct instance_standard__NativeArray*)var552)->values[3] = (val*) var_msignature540;
+if (var483){
+var_489 = var_spropdefs;
 {
-((void (*)(val* self, val* p0, long p1))(var550->class->vft[COLOR_standard__array__Array__with_native]))(var550, var552, var551) /* with_native on <var550:Array[Object]>*/;
-}
+var490 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_489);
 }
+var_491 = var490;
+for(;;) {
 {
-var553 = ((val* (*)(val* self))(var550->class->vft[COLOR_standard__string__Object__to_s]))(var550) /* to_s on <var550:Array[Object]>*/;
+var492 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_491);
 }
-var554 = 3;
+if (var492){
 {
-nit___nit__ToolContext___info(var542, var553, var554); /* Direct call toolcontext#ToolContext#info on <var542:ToolContext>*/
+var493 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_491);
 }
+var_spd = var493;
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var557 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var557 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+{ /* Inline model#MMethodDef#initializers (var_spd) on <var_spd:MMethodDef> */
+var496 = var_spd->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_spd:MMethodDef> */
+if (unlikely(var496 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
-var555 = var557;
-RET_LABEL556:(void)0;
+var494 = var496;
+RET_LABEL495:(void)0;
 }
 }
 {
-{ /* Inline modelize_property#MClass#root_init= (var555,var_defined_init) on <var555:MClass> */
-var555->attrs[COLOR_nit__modelize_property__MClass___root_init].val = var_defined_init; /* _root_init on <var555:MClass> */
-RET_LABEL558:(void)0;
-}
+{ /* Inline array#AbstractArrayRead#length (var494) on <var494:Array[MProperty]> */
+var499 = var494->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var494:Array[MProperty]> */
+var497 = var499;
+RET_LABEL498:(void)0;
 }
-goto RET_LABEL;
-} else {
 }
 {
-{ /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
-var561 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
-var559 = var561;
-RET_LABEL560:(void)0;
+{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
+var502 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
+if (unlikely(var502 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
+var500 = var502;
+RET_LABEL501:(void)0;
 }
-if (unlikely(var559 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Cast failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 267);
-show_backtrace(1);
 }
-var_mprop562 = var559;
-var563 = NEW_nit__MMethodDef(&type_nit__MMethodDef);
 {
-{ /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
-var566 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef(AStdClassdef)> */
-if (unlikely(var566 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23);
-show_backtrace(1);
-}
-var564 = var566;
-RET_LABEL565:(void)0;
+{ /* Inline array#AbstractArrayRead#length (var500) on <var500:Array[MProperty]> */
+var505 = var500->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var500:Array[MProperty]> */
+var503 = var505;
+RET_LABEL504:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(var563->class->vft[COLOR_nit__model__MPropDef__mclassdef_61d]))(var563, var_mclassdef) /* mclassdef= on <var563:MMethodDef>*/;
+{ /* Inline kernel#Int#> (var497,var503) on <var497:Int> */
+/* Covariant cast for argument 0 (i) <var503:Int> isa OTHER */
+/* <var503:Int> isa OTHER */
+var508 = 1; /* easy <var503:Int> isa OTHER*/
+if (unlikely(!var508)) {
+var_class_name511 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name511);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
 }
-{
-((void (*)(val* self, val* p0))(var563->class->vft[COLOR_nit__model__MPropDef__mproperty_61d]))(var563, var_mprop562) /* mproperty= on <var563:MMethodDef>*/;
+var512 = var497 > var503;
+var506 = var512;
+goto RET_LABEL507;
+RET_LABEL507:(void)0;
 }
-{
-((void (*)(val* self, val* p0))(var563->class->vft[COLOR_nit__model__MPropDef__location_61d]))(var563, var564) /* location= on <var563:MMethodDef>*/;
+}
+if (var506){
+var_longest = var_spd;
+} else {
 }
 {
-((void (*)(val* self))(var563->class->vft[COLOR_standard__kernel__Object__init]))(var563) /* init on <var563:MMethodDef>*/;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_491); /* Direct call array#ArrayIterator#next on <var_491:ArrayIterator[MMethodDef]>*/
+}
+} else {
+goto BREAK_label513;
+}
 }
-var_mpropdef567 = var563;
-var568 = 1;
+BREAK_label513: (void)0;
 {
-{ /* Inline modelize_property#MPropDef#has_supercall= (var_mpropdef567,var568) on <var_mpropdef567:MMethodDef> */
-var_mpropdef567->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s = var568; /* _has_supercall on <var_mpropdef567:MMethodDef> */
-RET_LABEL569:(void)0;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_491); /* Direct call array#ArrayIterator#finish on <var_491:ArrayIterator[MMethodDef]>*/
 }
+if (var_noautoinit == NULL) {
+var514 = 1; /* is null */
+} else {
+var514 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_noautoinit,((val*)NULL)) on <var_noautoinit:nullable AAnnotation> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MMethodDef#initializers (var_mpropdef567) on <var_mpropdef567:MMethodDef> */
-var572 = var_mpropdef567->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_mpropdef567:MMethodDef> */
-if (unlikely(var572 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+{ /* Inline kernel#Object#is_same_instance (var_noautoinit,var_other) on <var_noautoinit:nullable AAnnotation(AAnnotation)> */
+var519 = var_noautoinit == var_other;
+var517 = var519;
+goto RET_LABEL518;
+RET_LABEL518:(void)0;
 }
-var570 = var572;
-RET_LABEL571:(void)0;
 }
+var515 = var517;
+goto RET_LABEL516;
+RET_LABEL516:(void)0;
 }
-{
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var570, var_initializers); /* Direct call array#Array#add_all on <var570:Array[MProperty]>*/
+var514 = var515;
 }
-var573 = NEW_nit__MSignature(&type_nit__MSignature);
-var574 = NULL;
+if (var514){
+var_520 = var_spropdefs;
 {
-((void (*)(val* self, val* p0))(var573->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var573, var_mparameters128) /* mparameters= on <var573:MSignature>*/;
+var521 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_520);
 }
+var_522 = var521;
+for(;;) {
 {
-((void (*)(val* self, val* p0))(var573->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var573, var574) /* return_mtype= on <var573:MSignature>*/;
+var523 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_522);
 }
+if (var523){
 {
-((void (*)(val* self))(var573->class->vft[COLOR_standard__kernel__Object__init]))(var573) /* init on <var573:MSignature>*/;
+var524 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_522);
 }
-var_msignature575 = var573;
+var_spd525 = var524;
+var_i = 0l;
 {
-{ /* Inline model#MMethodDef#new_msignature= (var_mpropdef567,var_msignature575) on <var_mpropdef567:MMethodDef> */
-var_mpropdef567->attrs[COLOR_nit__model__MMethodDef___new_msignature].val = var_msignature575; /* _new_msignature on <var_mpropdef567:MMethodDef> */
-RET_LABEL576:(void)0;
+{ /* Inline model#MMethodDef#initializers (var_spd525) on <var_spd525:MMethodDef> */
+var528 = var_spd525->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_spd525:MMethodDef> */
+if (unlikely(var528 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
+var526 = var528;
+RET_LABEL527:(void)0;
 }
-var577 = NEW_nit__MSignature(&type_nit__MSignature);
-var578 = NEW_standard__Array(&type_standard__Array__nit__MParameter);
-{
-standard___standard__Array___standard__kernel__Object__init(var578); /* Direct call array#Array#init on <var578:Array[MParameter]>*/
 }
-var579 = NULL;
+var_529 = var526;
 {
-((void (*)(val* self, val* p0))(var577->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var577, var578) /* mparameters= on <var577:MSignature>*/;
+var530 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_529);
 }
+var_531 = var530;
+for(;;) {
 {
-((void (*)(val* self, val* p0))(var577->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var577, var579) /* return_mtype= on <var577:MSignature>*/;
+var532 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_531);
 }
+if (var532){
 {
-((void (*)(val* self))(var577->class->vft[COLOR_standard__kernel__Object__init]))(var577) /* init on <var577:MSignature>*/;
+var533 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_531);
 }
+var_p534 = var533;
 {
-{ /* Inline model#MMethodDef#msignature= (var_mpropdef567,var577) on <var_mpropdef567:MMethodDef> */
-var_mpropdef567->attrs[COLOR_nit__model__MMethodDef___msignature].val = var577; /* _msignature on <var_mpropdef567:MMethodDef> */
-RET_LABEL580:(void)0;
+{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
+var537 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
+if (unlikely(var537 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
+}
+var535 = var537;
+RET_LABEL536:(void)0;
 }
 }
 {
-{ /* Inline modelize_property#AClassdef#mfree_init= (var_nclassdef,var_mpropdef567) on <var_nclassdef:AClassdef(AStdClassdef)> */
-var_nclassdef->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val = var_mpropdef567; /* _mfree_init on <var_nclassdef:AClassdef(AStdClassdef)> */
-RET_LABEL581:(void)0;
-}
+var538 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var535, var_i);
 }
 {
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
-var584 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
-if (unlikely(var584 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+{ /* Inline kernel#Object#!= (var_p534,var538) on <var_p534:MProperty> */
+var_other213 = var538;
+{
+var541 = ((short int(*)(val* self, val* p0))(var_p534->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_p534, var_other213); /* == on <var_p534:MProperty>*/
 }
-var582 = var584;
-RET_LABEL583:(void)0;
+var542 = !var541;
+var539 = var542;
+goto RET_LABEL540;
+RET_LABEL540:(void)0;
 }
 }
-if (varonce585) {
-var586 = varonce585;
+if (var539){
+if (unlikely(varonce543==NULL)) {
+var544 = NEW_standard__NativeArray(9l, &type_standard__NativeArray__standard__String);
+if (likely(varonce545!=NULL)) {
+var546 = varonce545;
 } else {
-var587 = " gets a free constructor for attributes ";
-var588 = 40;
-var589 = standard___standard__NativeString___to_s_with_length(var587, var588);
-var586 = var589;
-varonce585 = var586;
+var547 = "Error: conflict for inherited inits ";
+var548 = standard___standard__NativeString___to_s_with_length(var547, 36l);
+var546 = var548;
+varonce545 = var546;
 }
-var590 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var590 = array_instance Array[Object] */
-var591 = 4;
-var592 = NEW_standard__NativeArray(var591, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var592)->values[0] = (val*) var_mclassdef;
-((struct instance_standard__NativeArray*)var592)->values[1] = (val*) var586;
-((struct instance_standard__NativeArray*)var592)->values[2] = (val*) var_mpropdef567;
-((struct instance_standard__NativeArray*)var592)->values[3] = (val*) var_msignature575;
-{
-((void (*)(val* self, val* p0, long p1))(var590->class->vft[COLOR_standard__array__Array__with_native]))(var590, var592, var591) /* with_native on <var590:Array[Object]>*/;
+((struct instance_standard__NativeArray*)var544)->values[0]=var546;
+if (likely(varonce549!=NULL)) {
+var550 = varonce549;
+} else {
+var551 = "(";
+var552 = standard___standard__NativeString___to_s_with_length(var551, 1l);
+var550 = var552;
+varonce549 = var550;
 }
+((struct instance_standard__NativeArray*)var544)->values[2]=var550;
+if (likely(varonce553!=NULL)) {
+var554 = varonce553;
+} else {
+var555 = ") and ";
+var556 = standard___standard__NativeString___to_s_with_length(var555, 6l);
+var554 = var556;
+varonce553 = var554;
 }
-{
-var593 = ((val* (*)(val* self))(var590->class->vft[COLOR_standard__string__Object__to_s]))(var590) /* to_s on <var590:Array[Object]>*/;
+((struct instance_standard__NativeArray*)var544)->values[4]=var554;
+if (likely(varonce557!=NULL)) {
+var558 = varonce557;
+} else {
+var559 = "(";
+var560 = standard___standard__NativeString___to_s_with_length(var559, 1l);
+var558 = var560;
+varonce557 = var558;
+}
+((struct instance_standard__NativeArray*)var544)->values[6]=var558;
+if (likely(varonce561!=NULL)) {
+var562 = varonce561;
+} else {
+var563 = ")";
+var564 = standard___standard__NativeString___to_s_with_length(var563, 1l);
+var562 = var564;
+varonce561 = var562;
+}
+((struct instance_standard__NativeArray*)var544)->values[8]=var562;
+} else {
+var544 = varonce543;
+varonce543 = NULL;
 }
-var594 = 3;
 {
-nit___nit__ToolContext___info(var582, var593, var594); /* Direct call toolcontext#ToolContext#info on <var582:ToolContext>*/
+var565 = ((val*(*)(val* self))(var_spd525->class->vft[COLOR_standard__string__Object__to_s]))(var_spd525); /* to_s on <var_spd525:MMethodDef>*/
 }
+((struct instance_standard__NativeArray*)var544)->values[1]=var565;
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var597 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var597 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+{ /* Inline model#MMethodDef#initializers (var_spd525) on <var_spd525:MMethodDef> */
+var568 = var_spd525->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_spd525:MMethodDef> */
+if (unlikely(var568 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
-var595 = var597;
-RET_LABEL596:(void)0;
+var566 = var568;
+RET_LABEL567:(void)0;
 }
 }
-{
-{ /* Inline modelize_property#MClass#root_init= (var595,var_mpropdef567) on <var595:MClass> */
-var595->attrs[COLOR_nit__modelize_property__MClass___root_init].val = var_mpropdef567; /* _root_init on <var595:MClass> */
-RET_LABEL598:(void)0;
+if (likely(varonce569!=NULL)) {
+var570 = varonce569;
+} else {
+var571 = ", ";
+var572 = standard___standard__NativeString___to_s_with_length(var571, 2l);
+var570 = var572;
+varonce569 = var570;
 }
+{
+var573 = standard__string___Collection___join(var566, var570);
 }
-RET_LABEL:;
+((struct instance_standard__NativeArray*)var544)->values[3]=var573;
+{
+var574 = ((val*(*)(val* self))(var_longest->class->vft[COLOR_standard__string__Object__to_s]))(var_longest); /* to_s on <var_longest:MMethodDef>*/
 }
-/* method modelize_property#ModelBuilder#check_visibility for (self: ModelBuilder, ANode, MType, MPropDef) */
-void nit__modelize_property___ModelBuilder___check_visibility(val* self, val* p0, val* p1, val* p2) {
-val* var_node /* var node: ANode */;
-val* var_mtype /* var mtype: MType */;
-val* var_mpropdef /* var mpropdef: MPropDef */;
-val* var /* : MClassDef */;
-val* var2 /* : MClassDef */;
-val* var3 /* : MModule */;
-val* var5 /* : MModule */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var6 /* : MProperty */;
-val* var8 /* : MProperty */;
-val* var_mproperty /* var mproperty: MProperty */;
-val* var9 /* : null */;
-val* var_vis_type /* var vis_type: nullable MVisibility */;
-val* var10 /* : null */;
-val* var_mmodule_type /* var mmodule_type: nullable MModule */;
-val* var11 /* : MType */;
-short int var12 /* : Bool */;
-int cltype;
-int idtype;
-val* var13 /* : MClass */;
-val* var15 /* : MClass */;
-val* var16 /* : MVisibility */;
-val* var18 /* : MVisibility */;
-val* var19 /* : MClass */;
-val* var21 /* : MClass */;
-val* var22 /* : MClassDef */;
-val* var24 /* : MClassDef */;
-val* var25 /* : MModule */;
-val* var27 /* : MModule */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-val* var31 /* : MVirtualTypeProp */;
-val* var33 /* : MVirtualTypeProp */;
-val* var34 /* : MVisibility */;
-val* var36 /* : MVisibility */;
-val* var37 /* : MVirtualTypeProp */;
-val* var39 /* : MVirtualTypeProp */;
-val* var40 /* : MClassDef */;
-val* var42 /* : MClassDef */;
-val* var43 /* : MModule */;
-val* var45 /* : MModule */;
-short int var46 /* : Bool */;
-int cltype47;
-int idtype48;
-static val* varonce;
-val* var49 /* : String */;
-char* var50 /* : NativeString */;
-long var51 /* : Int */;
-val* var52 /* : FlatString */;
-val* var53 /* : Array[Object] */;
-long var54 /* : Int */;
-val* var55 /* : NativeArray[Object] */;
-val* var56 /* : String */;
-val* var57 /* : null */;
-short int var58 /* : Bool */;
-short int var59 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var61 /* : Bool */;
-short int var62 /* : Bool */;
-val* var63 /* : null */;
-short int var64 /* : Bool */;
-short int var65 /* : Bool */;
-short int var67 /* : Bool */;
-short int var68 /* : Bool */;
-val* var69 /* : MVisibility */;
-val* var_vis_module_type /* var vis_module_type: MVisibility */;
-val* var70 /* : MVisibility */;
-val* var72 /* : MVisibility */;
-short int var73 /* : Bool */;
-static val* varonce74;
-val* var75 /* : String */;
-char* var76 /* : NativeString */;
-long var77 /* : Int */;
-val* var78 /* : FlatString */;
-val* var79 /* : MVisibility */;
-val* var81 /* : MVisibility */;
-static val* varonce82;
-val* var83 /* : String */;
-char* var84 /* : NativeString */;
-long var85 /* : Int */;
-val* var86 /* : FlatString */;
-static val* varonce87;
-val* var88 /* : String */;
-char* var89 /* : NativeString */;
-long var90 /* : Int */;
-val* var91 /* : FlatString */;
-static val* varonce92;
-val* var93 /* : String */;
-char* var94 /* : NativeString */;
-long var95 /* : Int */;
-val* var96 /* : FlatString */;
-static val* varonce97;
-val* var98 /* : String */;
-char* var99 /* : NativeString */;
-long var100 /* : Int */;
-val* var101 /* : FlatString */;
-val* var102 /* : Array[Object] */;
-long var103 /* : Int */;
-val* var104 /* : NativeArray[Object] */;
-val* var105 /* : String */;
-val* var106 /* : MVisibility */;
-val* var108 /* : MVisibility */;
-short int var109 /* : Bool */;
-static val* varonce110;
-val* var111 /* : String */;
-char* var112 /* : NativeString */;
-long var113 /* : Int */;
-val* var114 /* : FlatString */;
-val* var115 /* : MVisibility */;
-val* var117 /* : MVisibility */;
-static val* varonce118;
-val* var119 /* : String */;
-char* var120 /* : NativeString */;
-long var121 /* : Int */;
-val* var122 /* : FlatString */;
-static val* varonce123;
-val* var124 /* : String */;
-char* var125 /* : NativeString */;
-long var126 /* : Int */;
-val* var127 /* : FlatString */;
-static val* varonce128;
-val* var129 /* : String */;
-char* var130 /* : NativeString */;
-long var131 /* : Int */;
-val* var132 /* : FlatString */;
-static val* varonce133;
-val* var134 /* : String */;
-char* var135 /* : NativeString */;
-long var136 /* : Int */;
-val* var137 /* : FlatString */;
-static val* varonce138;
-val* var139 /* : String */;
-char* var140 /* : NativeString */;
-long var141 /* : Int */;
-val* var142 /* : FlatString */;
-val* var143 /* : Array[Object] */;
-long var144 /* : Int */;
-val* var145 /* : NativeArray[Object] */;
-val* var146 /* : String */;
-short int var147 /* : Bool */;
-int cltype148;
-int idtype149;
-val* var150 /* : ANodes[AType] */;
-val* var152 /* : ANodes[AType] */;
-val* var_ /* var : ANodes[AType] */;
-val* var153 /* : Iterator[ANode] */;
-val* var_154 /* var : Iterator[AType] */;
-short int var155 /* : Bool */;
-val* var156 /* : nullable Object */;
-val* var_a /* var a: AType */;
-val* var157 /* : nullable MType */;
-val* var159 /* : nullable MType */;
-val* var_t /* var t: nullable MType */;
-val* var160 /* : null */;
-short int var161 /* : Bool */;
-short int var162 /* : Bool */;
-val* var_other164 /* var other: nullable Object */;
-short int var165 /* : Bool */;
-short int var167 /* : Bool */;
-short int var170 /* : Bool */;
-int cltype171;
-int idtype172;
-val* var173 /* : Array[MType] */;
-val* var175 /* : Array[MType] */;
-val* var_176 /* var : Array[MType] */;
-val* var177 /* : ArrayIterator[nullable Object] */;
-val* var_178 /* var : ArrayIterator[MType] */;
-short int var179 /* : Bool */;
-val* var180 /* : nullable Object */;
-val* var_t181 /* var t: MType */;
-var_node = p0;
-var_mtype = p1;
-var_mpropdef = p2;
+((struct instance_standard__NativeArray*)var544)->values[5]=var574;
 {
-{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
-var2 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var2 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
-show_backtrace(1);
+{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
+var577 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
+if (unlikely(var577 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
+}
+var575 = var577;
+RET_LABEL576:(void)0;
 }
-var = var2;
-RET_LABEL1:(void)0;
 }
+if (likely(varonce578!=NULL)) {
+var579 = varonce578;
+} else {
+var580 = ", ";
+var581 = standard___standard__NativeString___to_s_with_length(var580, 2l);
+var579 = var581;
+varonce578 = var579;
 }
 {
-{ /* Inline model#MClassDef#mmodule (var) on <var:MClassDef> */
-var5 = var->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var:MClassDef> */
-if (unlikely(var5 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
+var582 = standard__string___Collection___join(var575, var579);
 }
-var3 = var5;
-RET_LABEL4:(void)0;
+((struct instance_standard__NativeArray*)var544)->values[7]=var582;
+{
+var583 = ((val*(*)(val* self))(var544->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var544); /* native_to_s on <var544:NativeArray[String]>*/
 }
+varonce543 = var544;
+{
+nit___nit__ModelBuilder___error(self, var_nclassdef, var583); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+} else {
 }
-var_mmodule = var3;
 {
-{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
-var8 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
-if (unlikely(var8 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var586 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var586)) {
+var_class_name589 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name589);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var6 = var8;
-RET_LABEL7:(void)0;
+var590 = var_i + 1l;
+var584 = var590;
+goto RET_LABEL585;
+RET_LABEL585:(void)0;
 }
 }
-var_mproperty = var6;
-var9 = NULL;
-var_vis_type = var9;
-var10 = NULL;
-var_mmodule_type = var10;
+var_i = var584;
 {
-var11 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_531); /* Direct call array#ArrayIterator#next on <var_531:ArrayIterator[MProperty]>*/
 }
-var_mtype = var11;
-/* <var_mtype:MType> isa MClassType */
-cltype = type_nit__MClassType.color;
-idtype = type_nit__MClassType.id;
-if(cltype >= var_mtype->type->table_size) {
-var12 = 0;
 } else {
-var12 = var_mtype->type->type_table[cltype] == idtype;
+goto BREAK_label591;
 }
-if (var12){
+}
+BREAK_label591: (void)0;
 {
-{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
-var15 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
-if (unlikely(var15 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_531); /* Direct call array#ArrayIterator#finish on <var_531:ArrayIterator[MProperty]>*/
 }
-var13 = var15;
-RET_LABEL14:(void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_522); /* Direct call array#ArrayIterator#next on <var_522:ArrayIterator[MMethodDef]>*/
+}
+} else {
+goto BREAK_label592;
 }
 }
+BREAK_label592: (void)0;
 {
-{ /* Inline model#MClass#visibility (var13) on <var13:MClass> */
-var18 = var13->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var13:MClass> */
-if (unlikely(var18 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 403);
-show_backtrace(1);
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_522); /* Direct call array#ArrayIterator#finish on <var_522:ArrayIterator[MMethodDef]>*/
 }
-var16 = var18;
-RET_LABEL17:(void)0;
+} else {
 }
+} else {
+}
+if (var_noautoinit == NULL) {
+var593 = 0; /* is null */
+} else {
+var593 = 1; /* arg is null and recv is not */
 }
-var_vis_type = var16;
+if (0) {
+{ /* Inline kernel#Object#!= (var_noautoinit,((val*)NULL)) on <var_noautoinit:nullable AAnnotation> */
+var_other213 = ((val*)NULL);
 {
-{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
-var21 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
-if (unlikely(var21 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+var596 = ((short int(*)(val* self, val* p0))(var_noautoinit->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_noautoinit, var_other213); /* == on <var_noautoinit:nullable AAnnotation(AAnnotation)>*/
 }
-var19 = var21;
-RET_LABEL20:(void)0;
+var597 = !var596;
+var594 = var597;
+goto RET_LABEL595;
+RET_LABEL595:(void)0;
 }
+var593 = var594;
 }
+if (var593){
 {
-{ /* Inline model#MClass#intro (var19) on <var19:MClass> */
-var24 = var19->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var19:MClass> */
-if (unlikely(var24 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+var599 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_initializers);
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+var_600 = var599;
+if (var599){
+{
+{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
+var603 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
+if (unlikely(var603 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
+var601 = var603;
+RET_LABEL602:(void)0;
 }
-{
-{ /* Inline model#MClassDef#mmodule (var22) on <var22:MClassDef> */
-var27 = var22->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var22:MClassDef> */
-if (unlikely(var27 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
 }
-var25 = var27;
-RET_LABEL26:(void)0;
+{
+var604 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var601);
 }
+var598 = var604;
+} else {
+var598 = var_600;
 }
-var_mmodule_type = var25;
+if (var598){
+if (likely(varonce605!=NULL)) {
+var606 = varonce605;
 } else {
-/* <var_mtype:MType> isa MVirtualType */
-cltype29 = type_nit__MVirtualType.color;
-idtype30 = type_nit__MVirtualType.id;
-if(cltype29 >= var_mtype->type->table_size) {
-var28 = 0;
+var607 = "useless-noautoinit";
+var608 = standard___standard__NativeString___to_s_with_length(var607, 18l);
+var606 = var608;
+varonce605 = var606;
+}
+if (likely(varonce609!=NULL)) {
+var610 = varonce609;
 } else {
-var28 = var_mtype->type->type_table[cltype29] == idtype30;
+var611 = "Warning: the list of autoinit is already empty.";
+var612 = standard___standard__NativeString___to_s_with_length(var611, 47l);
+var610 = var612;
+varonce609 = var610;
 }
-if (var28){
 {
-{ /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
-var33 = var_mtype->attrs[COLOR_nit__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
-if (unlikely(var33 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1254);
-show_backtrace(1);
+nit___nit__ModelBuilder___warning(self, var_noautoinit, var606, var610); /* Direct call modelbuilder_base#ModelBuilder#warning on <self:ModelBuilder>*/
 }
-var31 = var33;
-RET_LABEL32:(void)0;
+} else {
 }
+{
+standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var_mparameters108); /* Direct call array#AbstractArray#clear on <var_mparameters108:Array[MParameter]>*/
 }
 {
-{ /* Inline model#MProperty#visibility (var31) on <var31:MVirtualTypeProp> */
-var36 = var31->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var31:MVirtualTypeProp> */
-if (unlikely(var36 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+standard___standard__AbstractArray___standard__abstract_collection__RemovableCollection__clear(var_initializers); /* Direct call array#AbstractArray#clear on <var_initializers:Array[MProperty]>*/
 }
-var34 = var36;
-RET_LABEL35:(void)0;
+} else {
+{
+{ /* Inline array#AbstractArrayRead#length (var_spropdefs) on <var_spropdefs:Array[MMethodDef]> */
+var617 = var_spropdefs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_spropdefs:Array[MMethodDef]> */
+var615 = var617;
+RET_LABEL616:(void)0;
 }
 }
-var_vis_type = var34;
 {
-{ /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
-var39 = var_mtype->attrs[COLOR_nit__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
-if (unlikely(var39 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1254);
-show_backtrace(1);
-}
-var37 = var39;
-RET_LABEL38:(void)0;
+{ /* Inline kernel#Int#== (var615,1l) on <var615:Int> */
+var620 = var615 == 1l;
+var618 = var620;
+goto RET_LABEL619;
+RET_LABEL619:(void)0;
 }
 }
+var_621 = var618;
+if (var618){
 {
-{ /* Inline model#MProperty#intro_mclassdef (var37) on <var37:MVirtualTypeProp> */
-var42 = var37->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var37:MVirtualTypeProp> */
-if (unlikely(var42 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+var622 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_mparameters108);
 }
-var40 = var42;
-RET_LABEL41:(void)0;
+var614 = var622;
+} else {
+var614 = var_621;
 }
+var_623 = var614;
+if (var614){
+if (var_defined_init == NULL) {
+var624 = 1; /* is null */
+} else {
+var624 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_defined_init,((val*)NULL)) on <var_defined_init:nullable MMethodDef> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MClassDef#mmodule (var40) on <var40:MClassDef> */
-var45 = var40->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var40:MClassDef> */
-if (unlikely(var45 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
+{ /* Inline kernel#Object#is_same_instance (var_defined_init,var_other) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
+var629 = var_defined_init == var_other;
+var627 = var629;
+goto RET_LABEL628;
+RET_LABEL628:(void)0;
 }
-var43 = var45;
-RET_LABEL44:(void)0;
 }
+var625 = var627;
+goto RET_LABEL626;
+RET_LABEL626:(void)0;
 }
-var_mmodule_type = var43;
-} else {
-/* <var_mtype:MType> isa MParameterType */
-cltype47 = type_nit__MParameterType.color;
-idtype48 = type_nit__MParameterType.id;
-if(cltype47 >= var_mtype->type->table_size) {
-var46 = 0;
+var624 = var625;
+}
+var613 = var624;
 } else {
-var46 = var_mtype->type->type_table[cltype47] == idtype48;
+var613 = var_623;
 }
-if (var46){
+if (var613){
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var632 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var632 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var630 = var632;
+RET_LABEL631:(void)0;
+}
+}
+if (unlikely(varonce633==NULL)) {
+var634 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce635!=NULL)) {
+var636 = varonce635;
 } else {
-if (varonce) {
-var49 = varonce;
+var637 = " inherits the basic constructor ";
+var638 = standard___standard__NativeString___to_s_with_length(var637, 32l);
+var636 = var638;
+varonce635 = var636;
+}
+((struct instance_standard__NativeArray*)var634)->values[1]=var636;
 } else {
-var50 = "Unexpected type ";
-var51 = 16;
-var52 = standard___standard__NativeString___to_s_with_length(var50, var51);
-var49 = var52;
-varonce = var49;
+var634 = varonce633;
+varonce633 = NULL;
 }
-var53 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var53 = array_instance Array[Object] */
-var54 = 2;
-var55 = NEW_standard__NativeArray(var54, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var55)->values[0] = (val*) var49;
-((struct instance_standard__NativeArray*)var55)->values[1] = (val*) var_mtype;
 {
-((void (*)(val* self, val* p0, long p1))(var53->class->vft[COLOR_standard__array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
-}
+var639 = ((val*(*)(val* self))(var_mclassdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mclassdef); /* to_s on <var_mclassdef:MClassDef>*/
 }
+((struct instance_standard__NativeArray*)var634)->values[0]=var639;
 {
-var56 = ((val* (*)(val* self))(var53->class->vft[COLOR_standard__string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
+var640 = ((val*(*)(val* self))(var_longest->class->vft[COLOR_standard__string__Object__to_s]))(var_longest); /* to_s on <var_longest:MMethodDef>*/
 }
+((struct instance_standard__NativeArray*)var634)->values[2]=var640;
 {
-nit___nit__ANode___debug(var_node, var56); /* Direct call parser_nodes#ANode#debug on <var_node:ANode>*/
+var641 = ((val*(*)(val* self))(var634->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var634); /* native_to_s on <var634:NativeArray[String]>*/
 }
-PRINT_ERROR("Runtime error: %s", "Aborted");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 300);
-show_backtrace(1);
+varonce633 = var634;
+{
+nit___nit__ToolContext___info(var630, var641, 3l); /* Direct call toolcontext#ToolContext#info on <var630:ToolContext>*/
 }
+{
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var644 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var644 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
+var642 = var644;
+RET_LABEL643:(void)0;
 }
-var57 = NULL;
-if (var_vis_type == NULL) {
-var58 = 0; /* is null */
-} else {
-var58 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_vis_type,var57) on <var_vis_type:nullable MVisibility> */
-var_other = var57;
 {
-var61 = ((short int (*)(val* self, val* p0))(var_vis_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_vis_type, var_other) /* == on <var_vis_type:nullable MVisibility(MVisibility)>*/;
-}
-var62 = !var61;
-var59 = var62;
-goto RET_LABEL60;
-RET_LABEL60:(void)0;
+{ /* Inline modelize_property#MClass#root_init= (var642,var_longest) on <var642:MClass> */
+var642->attrs[COLOR_nit__modelize_property__MClass___root_init].val = var_longest; /* _root_init on <var642:MClass> */
+RET_LABEL645:(void)0;
 }
-var58 = var59;
 }
-if (var58){
-var63 = NULL;
-if (var_mmodule_type == NULL) {
-var64 = 0; /* is null */
+goto RET_LABEL;
 } else {
-var64 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_mmodule_type,var63) on <var_mmodule_type:nullable MModule> */
-var_other = var63;
 {
-var67 = ((short int (*)(val* self, val* p0))(var_mmodule_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mmodule_type, var_other) /* == on <var_mmodule_type:nullable MModule(MModule)>*/;
-}
-var68 = !var67;
-var65 = var68;
-goto RET_LABEL66;
-RET_LABEL66:(void)0;
+{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
+var648 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
+if (unlikely(var648 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
-var64 = var65;
+var646 = var648;
+RET_LABEL647:(void)0;
 }
-if (unlikely(!var64)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 304);
-show_backtrace(1);
 }
 {
-var69 = nit___nit__MModule___visibility_for(var_mmodule, var_mmodule_type);
+{ /* Inline array#AbstractArrayRead#length (var646) on <var646:Array[MProperty]> */
+var651 = var646->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var646:Array[MProperty]> */
+var649 = var651;
+RET_LABEL650:(void)0;
+}
 }
-var_vis_module_type = var69;
 {
-{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
-var72 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
-if (unlikely(var72 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+{ /* Inline kernel#Int#> (var649,0l) on <var649:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var654 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var654)) {
+var_class_name657 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name657);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
 }
-var70 = var72;
-RET_LABEL71:(void)0;
+var658 = var649 > 0l;
+var652 = var658;
+goto RET_LABEL653;
+RET_LABEL653:(void)0;
 }
 }
+if (var652){
 {
-var73 = standard___standard__Comparable____62d(var70, var_vis_type);
+{ /* Inline model#MMethodDef#new_msignature (var_longest) on <var_longest:MMethodDef> */
+var661 = var_longest->attrs[COLOR_nit__model__MMethodDef___new_msignature].val; /* _new_msignature on <var_longest:MMethodDef> */
+var659 = var661;
+RET_LABEL660:(void)0;
 }
-if (var73){
-if (varonce74) {
-var75 = varonce74;
+}
+if (var659 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 335);
+fatal_exit(1);
 } else {
-var76 = "Error: The ";
-var77 = 11;
-var78 = standard___standard__NativeString___to_s_with_length(var76, var77);
-var75 = var78;
-varonce74 = var75;
+{ /* Inline model#MSignature#mparameters (var659) on <var659:nullable MSignature> */
+if (unlikely(var659 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
-{
-{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
-var81 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
-if (unlikely(var81 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+var664 = var659->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var659:nullable MSignature> */
+if (unlikely(var664 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
 }
-var79 = var81;
-RET_LABEL80:(void)0;
-}
-}
-if (varonce82) {
-var83 = varonce82;
-} else {
-var84 = " property `";
-var85 = 11;
-var86 = standard___standard__NativeString___to_s_with_length(var84, var85);
-var83 = var86;
-varonce82 = var83;
-}
-if (varonce87) {
-var88 = varonce87;
-} else {
-var89 = "` cannot contain the ";
-var90 = 21;
-var91 = standard___standard__NativeString___to_s_with_length(var89, var90);
-var88 = var91;
-varonce87 = var88;
+var662 = var664;
+RET_LABEL663:(void)0;
 }
-if (varonce92) {
-var93 = varonce92;
-} else {
-var94 = " type `";
-var95 = 7;
-var96 = standard___standard__NativeString___to_s_with_length(var94, var95);
-var93 = var96;
-varonce92 = var93;
 }
-if (varonce97) {
-var98 = varonce97;
-} else {
-var99 = "`";
-var100 = 1;
-var101 = standard___standard__NativeString___to_s_with_length(var99, var100);
-var98 = var101;
-varonce97 = var98;
+{
+standard___standard__Sequence___prepend(var_mparameters108, var662); /* Direct call abstract_collection#Sequence#prepend on <var_mparameters108:Array[MParameter]>*/
 }
-var102 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var102 = array_instance Array[Object] */
-var103 = 9;
-var104 = NEW_standard__NativeArray(var103, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var104)->values[0] = (val*) var75;
-((struct instance_standard__NativeArray*)var104)->values[1] = (val*) var79;
-((struct instance_standard__NativeArray*)var104)->values[2] = (val*) var83;
-((struct instance_standard__NativeArray*)var104)->values[3] = (val*) var_mproperty;
-((struct instance_standard__NativeArray*)var104)->values[4] = (val*) var88;
-((struct instance_standard__NativeArray*)var104)->values[5] = (val*) var_vis_type;
-((struct instance_standard__NativeArray*)var104)->values[6] = (val*) var93;
-((struct instance_standard__NativeArray*)var104)->values[7] = (val*) var_mtype;
-((struct instance_standard__NativeArray*)var104)->values[8] = (val*) var98;
 {
-((void (*)(val* self, val* p0, long p1))(var102->class->vft[COLOR_standard__array__Array__with_native]))(var102, var104, var103) /* with_native on <var102:Array[Object]>*/;
+{ /* Inline model#MMethodDef#initializers (var_longest) on <var_longest:MMethodDef> */
+var667 = var_longest->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_longest:MMethodDef> */
+if (unlikely(var667 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
+var665 = var667;
+RET_LABEL666:(void)0;
 }
-{
-var105 = ((val* (*)(val* self))(var102->class->vft[COLOR_standard__string__Object__to_s]))(var102) /* to_s on <var102:Array[Object]>*/;
 }
 {
-nit___nit__ModelBuilder___error(self, var_node, var105); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+standard___standard__Sequence___prepend(var_initializers, var665); /* Direct call abstract_collection#Sequence#prepend on <var_initializers:Array[MProperty]>*/
 }
-goto RET_LABEL;
 } else {
-{
-{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
-var108 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
-if (unlikely(var108 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
-}
-var106 = var108;
-RET_LABEL107:(void)0;
 }
 }
-{
-var109 = standard___standard__Comparable____62d(var106, var_vis_module_type);
 }
-if (var109){
-if (varonce110) {
-var111 = varonce110;
+if (var_defined_init == NULL) {
+var668 = 0; /* is null */
 } else {
-var112 = "Error: The ";
-var113 = 11;
-var114 = standard___standard__NativeString___to_s_with_length(var112, var113);
-var111 = var114;
-varonce110 = var111;
+var668 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_defined_init,((val*)NULL)) on <var_defined_init:nullable MMethodDef> */
+var_other213 = ((val*)NULL);
 {
-{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
-var117 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
-if (unlikely(var117 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+var671 = ((short int(*)(val* self, val* p0))(var_defined_init->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_defined_init, var_other213); /* == on <var_defined_init:nullable MMethodDef(MMethodDef)>*/
 }
-var115 = var117;
-RET_LABEL116:(void)0;
+var672 = !var671;
+var669 = var672;
+goto RET_LABEL670;
+RET_LABEL670:(void)0;
 }
+var668 = var669;
 }
-if (varonce118) {
-var119 = varonce118;
-} else {
-var120 = " property `";
-var121 = 11;
-var122 = standard___standard__NativeString___to_s_with_length(var120, var121);
-var119 = var122;
-varonce118 = var119;
+if (var668){
+{
+{ /* Inline model#MMethodDef#initializers (var_defined_init) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
+var675 = var_defined_init->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_defined_init:nullable MMethodDef(MMethodDef)> */
+if (unlikely(var675 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
-if (varonce123) {
-var124 = varonce123;
-} else {
-var125 = "` cannot contain the type `";
-var126 = 27;
-var127 = standard___standard__NativeString___to_s_with_length(var125, var126);
-var124 = var127;
-varonce123 = var124;
+var673 = var675;
+RET_LABEL674:(void)0;
 }
-if (varonce128) {
-var129 = varonce128;
-} else {
-var130 = "` from the ";
-var131 = 11;
-var132 = standard___standard__NativeString___to_s_with_length(var130, var131);
-var129 = var132;
-varonce128 = var129;
 }
-if (varonce133) {
-var134 = varonce133;
-} else {
-var135 = " module `";
-var136 = 9;
-var137 = standard___standard__NativeString___to_s_with_length(var135, var136);
-var134 = var137;
-varonce133 = var134;
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var673, var_initializers); /* Direct call array#Array#add_all on <var673:Array[MProperty]>*/
 }
-if (varonce138) {
-var139 = varonce138;
-} else {
-var140 = "`";
-var141 = 1;
-var142 = standard___standard__NativeString___to_s_with_length(var140, var141);
-var139 = var142;
-varonce138 = var139;
+var676 = NEW_nit__MSignature(&type_nit__MSignature);
+{
+((void(*)(val* self, val* p0))(var676->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var676, var_mparameters108); /* mparameters= on <var676:MSignature>*/
 }
-var143 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var143 = array_instance Array[Object] */
-var144 = 11;
-var145 = NEW_standard__NativeArray(var144, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var145)->values[0] = (val*) var111;
-((struct instance_standard__NativeArray*)var145)->values[1] = (val*) var115;
-((struct instance_standard__NativeArray*)var145)->values[2] = (val*) var119;
-((struct instance_standard__NativeArray*)var145)->values[3] = (val*) var_mproperty;
-((struct instance_standard__NativeArray*)var145)->values[4] = (val*) var124;
-((struct instance_standard__NativeArray*)var145)->values[5] = (val*) var_mtype;
-((struct instance_standard__NativeArray*)var145)->values[6] = (val*) var129;
-((struct instance_standard__NativeArray*)var145)->values[7] = (val*) var_vis_module_type;
-((struct instance_standard__NativeArray*)var145)->values[8] = (val*) var134;
-((struct instance_standard__NativeArray*)var145)->values[9] = (val*) var_mmodule_type;
-((struct instance_standard__NativeArray*)var145)->values[10] = (val*) var139;
 {
-((void (*)(val* self, val* p0, long p1))(var143->class->vft[COLOR_standard__array__Array__with_native]))(var143, var145, var144) /* with_native on <var143:Array[Object]>*/;
+((void(*)(val* self, val* p0))(var676->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var676, ((val*)NULL)); /* return_mtype= on <var676:MSignature>*/
 }
+{
+((void(*)(val* self))(var676->class->vft[COLOR_standard__kernel__Object__init]))(var676); /* init on <var676:MSignature>*/
 }
+var_msignature677 = var676;
 {
-var146 = ((val* (*)(val* self))(var143->class->vft[COLOR_standard__string__Object__to_s]))(var143) /* to_s on <var143:Array[Object]>*/;
+{ /* Inline model#MMethodDef#new_msignature= (var_defined_init,var_msignature677) on <var_defined_init:nullable MMethodDef(MMethodDef)> */
+var_defined_init->attrs[COLOR_nit__model__MMethodDef___new_msignature].val = var_msignature677; /* _new_msignature on <var_defined_init:nullable MMethodDef(MMethodDef)> */
+RET_LABEL678:(void)0;
+}
 }
 {
-nit___nit__ModelBuilder___error(self, var_node, var146); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var681 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var681 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
+fatal_exit(1);
 }
-goto RET_LABEL;
-} else {
+var679 = var681;
+RET_LABEL680:(void)0;
 }
 }
+if (unlikely(varonce682==NULL)) {
+var683 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce684!=NULL)) {
+var685 = varonce684;
 } else {
+var686 = " extends its basic constructor signature to ";
+var687 = standard___standard__NativeString___to_s_with_length(var686, 44l);
+var685 = var687;
+varonce684 = var685;
 }
-/* <var_node:ANode> isa AType */
-cltype148 = type_nit__AType.color;
-idtype149 = type_nit__AType.id;
-if(cltype148 >= var_node->type->table_size) {
-var147 = 0;
+((struct instance_standard__NativeArray*)var683)->values[1]=var685;
 } else {
-var147 = var_node->type->type_table[cltype148] == idtype149;
+var683 = varonce682;
+varonce682 = NULL;
 }
-if (var147){
 {
-{ /* Inline parser_nodes#AType#n_types (var_node) on <var_node:ANode(AType)> */
-var152 = var_node->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_node:ANode(AType)> */
-if (unlikely(var152 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1539);
-show_backtrace(1);
+var688 = ((val*(*)(val* self))(var_mclassdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mclassdef); /* to_s on <var_mclassdef:MClassDef>*/
 }
-var150 = var152;
-RET_LABEL151:(void)0;
+((struct instance_standard__NativeArray*)var683)->values[0]=var688;
+{
+var689 = ((val*(*)(val* self))(var_defined_init->class->vft[COLOR_standard__string__Object__to_s]))(var_defined_init); /* to_s on <var_defined_init:nullable MMethodDef(MMethodDef)>*/
 }
+((struct instance_standard__NativeArray*)var683)->values[2]=var689;
+{
+var690 = ((val*(*)(val* self))(var_msignature677->class->vft[COLOR_standard__string__Object__to_s]))(var_msignature677); /* to_s on <var_msignature677:MSignature>*/
 }
-var_ = var150;
+((struct instance_standard__NativeArray*)var683)->values[3]=var690;
 {
-var153 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
+var691 = ((val*(*)(val* self))(var683->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var683); /* native_to_s on <var683:NativeArray[String]>*/
 }
-var_154 = var153;
-for(;;) {
+varonce682 = var683;
 {
-var155 = ((short int (*)(val* self))(var_154->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_154) /* is_ok on <var_154:Iterator[AType]>*/;
+nit___nit__ToolContext___info(var679, var691, 3l); /* Direct call toolcontext#ToolContext#info on <var679:ToolContext>*/
 }
-if (var155){
 {
-var156 = ((val* (*)(val* self))(var_154->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_154) /* item on <var_154:Iterator[AType]>*/;
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var694 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var694 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
+}
+var692 = var694;
+RET_LABEL693:(void)0;
+}
 }
-var_a = var156;
 {
-{ /* Inline modelize_class#AType#mtype (var_a) on <var_a:AType> */
-var159 = var_a->attrs[COLOR_nit__modelize_class__AType___mtype].val; /* _mtype on <var_a:AType> */
-var157 = var159;
-RET_LABEL158:(void)0;
+{ /* Inline modelize_property#MClass#root_init= (var692,var_defined_init) on <var692:MClass> */
+var692->attrs[COLOR_nit__modelize_property__MClass___root_init].val = var_defined_init; /* _root_init on <var692:MClass> */
+RET_LABEL695:(void)0;
 }
 }
-var_t = var157;
-var160 = NULL;
-if (var_t == NULL) {
-var161 = 1; /* is null */
+goto RET_LABEL;
 } else {
-var161 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var_t,var160) on <var_t:nullable MType> */
-var_other164 = var160;
 {
-{ /* Inline kernel#Object#is_same_instance (var_t,var_other164) on <var_t:nullable MType(MType)> */
-var167 = var_t == var_other164;
-var165 = var167;
-goto RET_LABEL166;
-RET_LABEL166:(void)0;
+{ /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (self) on <self:ModelBuilder> */
+var698 = self->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <self:ModelBuilder> */
+var696 = var698;
+RET_LABEL697:(void)0;
 }
 }
-var162 = var165;
-goto RET_LABEL163;
-RET_LABEL163:(void)0;
+if (unlikely(var696 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 352);
+fatal_exit(1);
 }
-var161 = var162;
+var_mprop699 = var696;
+var700 = NEW_nit__MMethodDef(&type_nit__MMethodDef);
+{
+{ /* Inline parser_nodes#ANode#location (var_nclassdef) on <var_nclassdef:AClassdef(AStdClassdef)> */
+var703 = var_nclassdef->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var_nclassdef:AClassdef(AStdClassdef)> */
+if (unlikely(var703 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
+fatal_exit(1);
 }
-if (var161){
-goto BREAK_label;
-} else {
+var701 = var703;
+RET_LABEL702:(void)0;
 }
-{
-nit__modelize_property___ModelBuilder___check_visibility(self, var_a, var_t, var_mpropdef); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:ModelBuilder>*/
 }
-BREAK_label: (void)0;
 {
-((void (*)(val* self))(var_154->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_154) /* next on <var_154:Iterator[AType]>*/;
+((void(*)(val* self, val* p0))(var700->class->vft[COLOR_nit__model__MPropDef__mclassdef_61d]))(var700, var_mclassdef); /* mclassdef= on <var700:MMethodDef>*/
 }
-} else {
-goto BREAK_label168;
+{
+((void(*)(val* self, val* p0))(var700->class->vft[COLOR_nit__model__MPropDef__mproperty_61d]))(var700, var_mprop699); /* mproperty= on <var700:MMethodDef>*/
 }
+{
+((void(*)(val* self, val* p0))(var700->class->vft[COLOR_nit__model__MPropDef__location_61d]))(var700, var701); /* location= on <var700:MMethodDef>*/
 }
-BREAK_label168: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_154) on <var_154:Iterator[AType]> */
-RET_LABEL169:(void)0;
+((void(*)(val* self))(var700->class->vft[COLOR_standard__kernel__Object__init]))(var700); /* init on <var700:MMethodDef>*/
 }
+var_mpropdef704 = var700;
+{
+{ /* Inline modelize_property#MPropDef#has_supercall= (var_mpropdef704,1) on <var_mpropdef704:MMethodDef> */
+var_mpropdef704->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s = 1; /* _has_supercall on <var_mpropdef704:MMethodDef> */
+RET_LABEL705:(void)0;
 }
-} else {
-/* <var_mtype:MType> isa MGenericType */
-cltype171 = type_nit__MGenericType.color;
-idtype172 = type_nit__MGenericType.id;
-if(cltype171 >= var_mtype->type->table_size) {
-var170 = 0;
-} else {
-var170 = var_mtype->type->type_table[cltype171] == idtype172;
 }
-if (var170){
 {
-{ /* Inline model#MGenericType#arguments (var_mtype) on <var_mtype:MType(MGenericType)> */
-var175 = var_mtype->attrs[COLOR_nit__model__MGenericType___arguments].val; /* _arguments on <var_mtype:MType(MGenericType)> */
-if (unlikely(var175 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1164);
-show_backtrace(1);
+{ /* Inline model#MMethodDef#initializers (var_mpropdef704) on <var_mpropdef704:MMethodDef> */
+var708 = var_mpropdef704->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <var_mpropdef704:MMethodDef> */
+if (unlikely(var708 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
-var173 = var175;
-RET_LABEL174:(void)0;
+var706 = var708;
+RET_LABEL707:(void)0;
 }
 }
-var_176 = var173;
 {
-var177 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_176);
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var706, var_initializers); /* Direct call array#Array#add_all on <var706:Array[MProperty]>*/
 }
-var_178 = var177;
-for(;;) {
+var709 = NEW_nit__MSignature(&type_nit__MSignature);
 {
-var179 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_178);
+((void(*)(val* self, val* p0))(var709->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var709, var_mparameters108); /* mparameters= on <var709:MSignature>*/
 }
-if (var179){
 {
-var180 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_178);
+((void(*)(val* self, val* p0))(var709->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var709, ((val*)NULL)); /* return_mtype= on <var709:MSignature>*/
 }
-var_t181 = var180;
 {
-nit__modelize_property___ModelBuilder___check_visibility(self, var_node, var_t181, var_mpropdef); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:ModelBuilder>*/
+((void(*)(val* self))(var709->class->vft[COLOR_standard__kernel__Object__init]))(var709); /* init on <var709:MSignature>*/
 }
+var_msignature710 = var709;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_178); /* Direct call array#ArrayIterator#next on <var_178:ArrayIterator[MType]>*/
-}
-} else {
-goto BREAK_label182;
+{ /* Inline model#MMethodDef#new_msignature= (var_mpropdef704,var_msignature710) on <var_mpropdef704:MMethodDef> */
+var_mpropdef704->attrs[COLOR_nit__model__MMethodDef___new_msignature].val = var_msignature710; /* _new_msignature on <var_mpropdef704:MMethodDef> */
+RET_LABEL711:(void)0;
 }
 }
-BREAK_label182: (void)0;
+var712 = NEW_nit__MSignature(&type_nit__MSignature);
+var713 = NEW_standard__Array(&type_standard__Array__nit__MParameter);
 {
-{ /* Inline abstract_collection#Iterator#finish (var_178) on <var_178:ArrayIterator[MType]> */
-RET_LABEL183:(void)0;
-}
-}
-} else {
+standard___standard__Array___standard__kernel__Object__init(var713); /* Direct call array#Array#init on <var713:Array[MParameter]>*/
 }
+{
+((void(*)(val* self, val* p0))(var712->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var712, var713); /* mparameters= on <var712:MSignature>*/
 }
-RET_LABEL:;
+{
+((void(*)(val* self, val* p0))(var712->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var712, ((val*)NULL)); /* return_mtype= on <var712:MSignature>*/
 }
-/* method modelize_property#MPropDef#has_supercall for (self: MPropDef): Bool */
-short int nit__modelize_property___MPropDef___has_supercall(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <self:MPropDef> */
-var = var1;
-RET_LABEL:;
-return var;
+{
+((void(*)(val* self))(var712->class->vft[COLOR_standard__kernel__Object__init]))(var712); /* init on <var712:MSignature>*/
 }
-/* method modelize_property#MPropDef#has_supercall= for (self: MPropDef, Bool) */
-void nit__modelize_property___MPropDef___has_supercall_61d(val* self, short int p0) {
-self->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s = p0; /* _has_supercall on <self:MPropDef> */
-RET_LABEL:;
+{
+{ /* Inline model#MMethodDef#msignature= (var_mpropdef704,var712) on <var_mpropdef704:MMethodDef> */
+var_mpropdef704->attrs[COLOR_nit__model__MMethodDef___msignature].val = var712; /* _msignature on <var_mpropdef704:MMethodDef> */
+RET_LABEL714:(void)0;
 }
-/* method modelize_property#AClassdef#build_properties_is_done for (self: AClassdef): Bool */
-short int nit__modelize_property___AClassdef___build_properties_is_done(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_nit__modelize_property__AClassdef___build_properties_is_done].s; /* _build_properties_is_done on <self:AClassdef> */
-var = var1;
-RET_LABEL:;
-return var;
 }
-/* method modelize_property#AClassdef#build_properties_is_done= for (self: AClassdef, Bool) */
-void nit__modelize_property___AClassdef___build_properties_is_done_61d(val* self, short int p0) {
-self->attrs[COLOR_nit__modelize_property__AClassdef___build_properties_is_done].s = p0; /* _build_properties_is_done on <self:AClassdef> */
-RET_LABEL:;
+{
+{ /* Inline modelize_property#AClassdef#mfree_init= (var_nclassdef,var_mpropdef704) on <var_nclassdef:AClassdef(AStdClassdef)> */
+var_nclassdef->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val = var_mpropdef704; /* _mfree_init on <var_nclassdef:AClassdef(AStdClassdef)> */
+RET_LABEL715:(void)0;
 }
-/* method modelize_property#AClassdef#mfree_init for (self: AClassdef): nullable MMethodDef */
-val* nit__modelize_property___AClassdef___mfree_init(val* self) {
-val* var /* : nullable MMethodDef */;
-val* var1 /* : nullable MMethodDef */;
-var1 = self->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <self:AClassdef> */
-var = var1;
-RET_LABEL:;
-return var;
 }
-/* method modelize_property#AClassdef#mfree_init= for (self: AClassdef, nullable MMethodDef) */
-void nit__modelize_property___AClassdef___mfree_init_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val = p0; /* _mfree_init on <self:AClassdef> */
-RET_LABEL:;
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var718 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var718 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
+fatal_exit(1);
 }
-/* method modelize_property#MClass#root_init for (self: MClass): nullable MMethodDef */
-val* nit__modelize_property___MClass___root_init(val* self) {
-val* var /* : nullable MMethodDef */;
-val* var1 /* : nullable MMethodDef */;
-var1 = self->attrs[COLOR_nit__modelize_property__MClass___root_init].val; /* _root_init on <self:MClass> */
-var = var1;
-RET_LABEL:;
-return var;
+var716 = var718;
+RET_LABEL717:(void)0;
 }
-/* method modelize_property#MClass#root_init= for (self: MClass, nullable MMethodDef) */
-void nit__modelize_property___MClass___root_init_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__modelize_property__MClass___root_init].val = p0; /* _root_init on <self:MClass> */
-RET_LABEL:;
 }
-/* method modelize_property#MClassDef#mprop2npropdef for (self: MClassDef): Map[MProperty, APropdef] */
-val* nit__modelize_property___MClassDef___mprop2npropdef(val* self) {
-val* var /* : Map[MProperty, APropdef] */;
-val* var1 /* : Map[MProperty, APropdef] */;
-var1 = self->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <self:MClassDef> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 352);
-show_backtrace(1);
+if (unlikely(varonce719==NULL)) {
+var720 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce721!=NULL)) {
+var722 = varonce721;
+} else {
+var723 = " gets a free constructor for attributes ";
+var724 = standard___standard__NativeString___to_s_with_length(var723, 40l);
+var722 = var724;
+varonce721 = var722;
 }
-var = var1;
-RET_LABEL:;
-return var;
+((struct instance_standard__NativeArray*)var720)->values[1]=var722;
+} else {
+var720 = varonce719;
+varonce719 = NULL;
 }
-/* method modelize_property#MClassDef#build_self_type for (self: MClassDef, ModelBuilder, AClassdef) */
-void nit__modelize_property___MClassDef___build_self_type(val* self, val* p0, val* p1) {
-val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
-val* var_nclassdef /* var nclassdef: AClassdef */;
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-static val* varonce;
-val* var2 /* : String */;
-char* var3 /* : NativeString */;
-long var4 /* : Int */;
-val* var5 /* : FlatString */;
-val* var_name /* var name: String */;
-val* var6 /* : nullable MProperty */;
-val* var_mprop /* var mprop: nullable MProperty */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var11 /* : Bool */;
-short int var13 /* : Bool */;
-short int var14 /* : Bool */;
-int cltype;
-int idtype;
-short int var15 /* : Bool */;
-val* var16 /* : MPropDef */;
-val* var18 /* : MPropDef */;
-val* var_intro /* var intro: MVirtualTypeDef */;
-val* var19 /* : MClassDef */;
-val* var21 /* : MClassDef */;
-val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
-short int var22 /* : Bool */;
-short int var24 /* : Bool */;
-short int var26 /* : Bool */;
-val* var27 /* : HashMap[MPropDef, APropdef] */;
-val* var29 /* : HashMap[MPropDef, APropdef] */;
-val* var30 /* : nullable Object */;
-val* var_nintro /* var nintro: APropdef */;
-val* var31 /* : MClass */;
-val* var33 /* : MClass */;
-val* var34 /* : String */;
-val* var36 /* : String */;
-static val* varonce37;
-val* var38 /* : String */;
-char* var39 /* : NativeString */;
-long var40 /* : Int */;
-val* var41 /* : FlatString */;
-short int var42 /* : Bool */;
-val* var_other44 /* var other: nullable Object */;
-short int var45 /* : Bool */;
-short int var46 /* : Bool */;
-static val* varonce47;
-val* var48 /* : String */;
-char* var49 /* : NativeString */;
-long var50 /* : Int */;
-val* var51 /* : FlatString */;
-val* var52 /* : MVisibility */;
-val* var54 /* : MVisibility */;
-val* var55 /* : MVisibility */;
-short int var56 /* : Bool */;
-short int var58 /* : Bool */;
-short int var59 /* : Bool */;
-static val* varonce60;
-val* var61 /* : String */;
-char* var62 /* : NativeString */;
-long var63 /* : Int */;
-val* var64 /* : FlatString */;
-short int var65 /* : Bool */;
-short int var67 /* : Bool */;
-static val* varonce68;
-val* var69 /* : String */;
-char* var70 /* : NativeString */;
-long var71 /* : Int */;
-val* var72 /* : FlatString */;
-val* var73 /* : MVirtualTypeDef */;
-val* var74 /* : Location */;
-val* var76 /* : Location */;
-val* var_mpropdef /* var mpropdef: MVirtualTypeDef */;
-val* var77 /* : MClass */;
-val* var79 /* : MClass */;
-val* var80 /* : MClassType */;
-val* var82 /* : MClassType */;
-var_modelbuilder = p0;
-var_nclassdef = p1;
 {
-var = nit___nit__MClassDef___is_intro(self);
+var725 = ((val*(*)(val* self))(var_mclassdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mclassdef); /* to_s on <var_mclassdef:MClassDef>*/
 }
-var1 = !var;
-if (var1){
-goto RET_LABEL;
-} else {
+((struct instance_standard__NativeArray*)var720)->values[0]=var725;
+{
+var726 = ((val*(*)(val* self))(var_mpropdef704->class->vft[COLOR_standard__string__Object__to_s]))(var_mpropdef704); /* to_s on <var_mpropdef704:MMethodDef>*/
 }
-if (varonce) {
-var2 = varonce;
-} else {
-var3 = "SELF";
-var4 = 4;
-var5 = standard___standard__NativeString___to_s_with_length(var3, var4);
-var2 = var5;
-varonce = var2;
+((struct instance_standard__NativeArray*)var720)->values[2]=var726;
+{
+var727 = ((val*(*)(val* self))(var_msignature710->class->vft[COLOR_standard__string__Object__to_s]))(var_msignature710); /* to_s on <var_msignature710:MSignature>*/
 }
-var_name = var2;
+((struct instance_standard__NativeArray*)var720)->values[3]=var727;
 {
-var6 = nit___nit__ModelBuilder___try_get_mproperty_by_name(var_modelbuilder, var_nclassdef, self, var_name);
+var728 = ((val*(*)(val* self))(var720->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var720); /* native_to_s on <var720:NativeArray[String]>*/
 }
-var_mprop = var6;
-var7 = NULL;
-if (var_mprop == NULL) {
-var8 = 1; /* is null */
-} else {
-var8 = 0; /* arg is null but recv is not */
+varonce719 = var720;
+{
+nit___nit__ToolContext___info(var716, var728, 3l); /* Direct call toolcontext#ToolContext#info on <var716:ToolContext>*/
 }
-if (0) {
-{ /* Inline kernel#Object#== (var_mprop,var7) on <var_mprop:nullable MProperty> */
-var_other = var7;
 {
-{ /* Inline kernel#Object#is_same_instance (var_mprop,var_other) on <var_mprop:nullable MProperty(MProperty)> */
-var13 = var_mprop == var_other;
-var11 = var13;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var731 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var731 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
+var729 = var731;
+RET_LABEL730:(void)0;
 }
-var9 = var11;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
 }
-var8 = var9;
+{
+{ /* Inline modelize_property#MClass#root_init= (var729,var_mpropdef704) on <var729:MClass> */
+var729->attrs[COLOR_nit__modelize_property__MClass___root_init].val = var_mpropdef704; /* _root_init on <var729:MClass> */
+RET_LABEL732:(void)0;
 }
-if (var8){
-goto RET_LABEL;
-} else {
 }
-/* <var_mprop:nullable MProperty(MProperty)> isa MVirtualTypeProp */
-cltype = type_nit__MVirtualTypeProp.color;
-idtype = type_nit__MVirtualTypeProp.id;
-if(cltype >= var_mprop->type->table_size) {
-var14 = 0;
-} else {
-var14 = var_mprop->type->type_table[cltype] == idtype;
-}
-var15 = !var14;
-if (var15){
-goto RET_LABEL;
-} else {
+RET_LABEL:;
 }
+/* method modelize_property#ModelBuilder#check_visibility for (self: ModelBuilder, ANode, MType, MPropDef) */
+void nit__modelize_property___ModelBuilder___check_visibility(val* self, val* p0, val* p1, val* p2) {
+val* var_node /* var node: ANode */;
+val* var_mtype /* var mtype: MType */;
+val* var_mpropdef /* var mpropdef: MPropDef */;
+val* var /* : MClassDef */;
+val* var2 /* : MClassDef */;
+val* var3 /* : MModule */;
+val* var5 /* : MModule */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var6 /* : MProperty */;
+val* var8 /* : MProperty */;
+val* var_mproperty /* var mproperty: MProperty */;
+val* var_vis_type /* var vis_type: nullable MVisibility */;
+val* var_mmodule_type /* var mmodule_type: nullable MModule */;
+val* var9 /* : MType */;
+short int var10 /* : Bool */;
+int cltype;
+int idtype;
+val* var11 /* : MClass */;
+val* var13 /* : MClass */;
+val* var14 /* : MVisibility */;
+val* var16 /* : MVisibility */;
+val* var17 /* : MClass */;
+val* var19 /* : MClass */;
+val* var20 /* : MClassDef */;
+val* var22 /* : MClassDef */;
+val* var23 /* : MModule */;
+val* var25 /* : MModule */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : MVirtualTypeProp */;
+val* var31 /* : MVirtualTypeProp */;
+val* var32 /* : MVisibility */;
+val* var34 /* : MVisibility */;
+val* var35 /* : MVirtualTypeProp */;
+val* var37 /* : MVirtualTypeProp */;
+val* var38 /* : MClassDef */;
+val* var40 /* : MClassDef */;
+val* var41 /* : MModule */;
+val* var43 /* : MModule */;
+short int var44 /* : Bool */;
+int cltype45;
+int idtype46;
+short int var47 /* : Bool */;
+int cltype48;
+int idtype49;
+val* var50 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce51;
+val* var52 /* : String */;
+char* var53 /* : NativeString */;
+val* var54 /* : FlatString */;
+val* var55 /* : String */;
+val* var56 /* : String */;
+short int var57 /* : Bool */;
+short int var58 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var60 /* : Bool */;
+short int var61 /* : Bool */;
+short int var62 /* : Bool */;
+short int var63 /* : Bool */;
+short int var65 /* : Bool */;
+short int var66 /* : Bool */;
+val* var67 /* : MVisibility */;
+val* var_vis_module_type /* var vis_module_type: MVisibility */;
+val* var68 /* : MVisibility */;
+val* var70 /* : MVisibility */;
+short int var71 /* : Bool */;
+val* var73 /* : NativeArray[String] */;
+static val* varonce72;
+static val* varonce74;
+val* var75 /* : String */;
+char* var76 /* : NativeString */;
+val* var77 /* : FlatString */;
+static val* varonce78;
+val* var79 /* : String */;
+char* var80 /* : NativeString */;
+val* var81 /* : FlatString */;
+static val* varonce82;
+val* var83 /* : String */;
+char* var84 /* : NativeString */;
+val* var85 /* : FlatString */;
+static val* varonce86;
+val* var87 /* : String */;
+char* var88 /* : NativeString */;
+val* var89 /* : FlatString */;
+static val* varonce90;
+val* var91 /* : String */;
+char* var92 /* : NativeString */;
+val* var93 /* : FlatString */;
+val* var94 /* : MVisibility */;
+val* var96 /* : MVisibility */;
+val* var97 /* : String */;
+val* var98 /* : String */;
+val* var99 /* : String */;
+val* var100 /* : String */;
+val* var101 /* : String */;
+val* var102 /* : MVisibility */;
+val* var104 /* : MVisibility */;
+short int var105 /* : Bool */;
+val* var107 /* : NativeArray[String] */;
+static val* varonce106;
+static val* varonce108;
+val* var109 /* : String */;
+char* var110 /* : NativeString */;
+val* var111 /* : FlatString */;
+static val* varonce112;
+val* var113 /* : String */;
+char* var114 /* : NativeString */;
+val* var115 /* : FlatString */;
+static val* varonce116;
+val* var117 /* : String */;
+char* var118 /* : NativeString */;
+val* var119 /* : FlatString */;
+static val* varonce120;
+val* var121 /* : String */;
+char* var122 /* : NativeString */;
+val* var123 /* : FlatString */;
+static val* varonce124;
+val* var125 /* : String */;
+char* var126 /* : NativeString */;
+val* var127 /* : FlatString */;
+static val* varonce128;
+val* var129 /* : String */;
+char* var130 /* : NativeString */;
+val* var131 /* : FlatString */;
+val* var132 /* : MVisibility */;
+val* var134 /* : MVisibility */;
+val* var135 /* : String */;
+val* var136 /* : String */;
+val* var137 /* : String */;
+val* var138 /* : String */;
+val* var139 /* : String */;
+val* var140 /* : String */;
+short int var141 /* : Bool */;
+int cltype142;
+int idtype143;
+val* var144 /* : ANodes[AType] */;
+val* var146 /* : ANodes[AType] */;
+val* var_ /* var : ANodes[AType] */;
+val* var147 /* : Iterator[ANode] */;
+val* var_148 /* var : Iterator[AType] */;
+short int var149 /* : Bool */;
+val* var150 /* : nullable Object */;
+val* var_a /* var a: AType */;
+val* var151 /* : nullable MType */;
+val* var153 /* : nullable MType */;
+val* var_t /* var t: nullable MType */;
+short int var154 /* : Bool */;
+short int var155 /* : Bool */;
+val* var_other157 /* var other: nullable Object */;
+short int var158 /* : Bool */;
+short int var160 /* : Bool */;
+short int var162 /* : Bool */;
+int cltype163;
+int idtype164;
+val* var165 /* : Array[MType] */;
+val* var167 /* : Array[MType] */;
+val* var_168 /* var : Array[MType] */;
+val* var169 /* : ArrayIterator[nullable Object] */;
+val* var_170 /* var : ArrayIterator[MType] */;
+short int var171 /* : Bool */;
+val* var172 /* : nullable Object */;
+val* var_t173 /* var t: MType */;
+var_node = p0;
+var_mtype = p1;
+var_mpropdef = p2;
 {
-{ /* Inline model#MProperty#intro (var_mprop) on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
-var18 = var_mprop->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
-if (unlikely(var18 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
-show_backtrace(1);
+{ /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
+var2 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
+fatal_exit(1);
 }
-var16 = var18;
-RET_LABEL17:(void)0;
+var = var2;
+RET_LABEL1:(void)0;
 }
 }
-var_intro = var16;
 {
-{ /* Inline model#MPropDef#mclassdef (var_intro) on <var_intro:MVirtualTypeDef> */
-var21 = var_intro->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_intro:MVirtualTypeDef> */
-if (unlikely(var21 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2010);
-show_backtrace(1);
+{ /* Inline model#MClassDef#mmodule (var) on <var:MClassDef> */
+var5 = var->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var:MClassDef> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
-var19 = var21;
-RET_LABEL20:(void)0;
+var3 = var5;
+RET_LABEL4:(void)0;
 }
 }
-var_intro_mclassdef = var19;
-{
-{ /* Inline kernel#Object#== (var_intro_mclassdef,self) on <var_intro_mclassdef:MClassDef> */
-var_other = self;
+var_mmodule = var3;
 {
-{ /* Inline kernel#Object#is_same_instance (var_intro_mclassdef,var_other) on <var_intro_mclassdef:MClassDef> */
-var26 = var_intro_mclassdef == var_other;
-var24 = var26;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
+var8 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var6 = var8;
+RET_LABEL7:(void)0;
 }
 }
-var22 = var24;
-goto RET_LABEL23;
-RET_LABEL23:(void)0;
+var_mproperty = var6;
+var_vis_type = ((val*)NULL);
+var_mmodule_type = ((val*)NULL);
+{
+var9 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
 }
+var_mtype = var9;
+/* <var_mtype:MType> isa MClassType */
+cltype = type_nit__MClassType.color;
+idtype = type_nit__MClassType.id;
+if(cltype >= var_mtype->type->table_size) {
+var10 = 0;
+} else {
+var10 = var_mtype->type->type_table[cltype] == idtype;
 }
-if (var22){
+if (var10){
 {
-{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
-var29 = var_modelbuilder->attrs[COLOR_nit__modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
-if (unlikely(var29 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 40);
-show_backtrace(1);
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
+var13 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var11 = var13;
+RET_LABEL12:(void)0;
 }
 }
 {
-var30 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var27, var_intro);
+{ /* Inline model#MClass#visibility (var11) on <var11:MClass> */
+var16 = var11->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var11:MClass> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 440);
+fatal_exit(1);
+}
+var14 = var16;
+RET_LABEL15:(void)0;
 }
-var_nintro = var30;
+}
+var_vis_type = var14;
 {
-{ /* Inline model#MClassDef#mclass (var_intro_mclassdef) on <var_intro_mclassdef:MClassDef> */
-var33 = var_intro_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_intro_mclassdef:MClassDef> */
-if (unlikely(var33 == NULL)) {
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
+var19 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
+if (unlikely(var19 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var31 = var33;
-RET_LABEL32:(void)0;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#name (var31) on <var31:MClass> */
-var36 = var31->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var31:MClass> */
-if (unlikely(var36 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
-show_backtrace(1);
-}
-var34 = var36;
-RET_LABEL35:(void)0;
+{ /* Inline model#MClass#intro (var17) on <var17:MClass> */
+var22 = var17->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var17:MClass> */
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
 }
+var20 = var22;
+RET_LABEL21:(void)0;
 }
-if (varonce37) {
-var38 = varonce37;
-} else {
-var39 = "Object";
-var40 = 6;
-var41 = standard___standard__NativeString___to_s_with_length(var39, var40);
-var38 = var41;
-varonce37 = var38;
 }
 {
-{ /* Inline kernel#Object#!= (var34,var38) on <var34:String> */
-var_other44 = var38;
-{
-var45 = ((short int (*)(val* self, val* p0))(var34->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var34, var_other44) /* == on <var34:String>*/;
+{ /* Inline model#MClassDef#mmodule (var20) on <var20:MClassDef> */
+var25 = var20->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var20:MClassDef> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
-var46 = !var45;
-var42 = var46;
-goto RET_LABEL43;
-RET_LABEL43:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
-if (var42){
-if (varonce47) {
-var48 = varonce47;
+var_mmodule_type = var23;
 } else {
-var49 = "Error: the virtual type SELF must be declared in Object.";
-var50 = 56;
-var51 = standard___standard__NativeString___to_s_with_length(var49, var50);
-var48 = var51;
-varonce47 = var48;
+/* <var_mtype:MType> isa MVirtualType */
+cltype27 = type_nit__MVirtualType.color;
+idtype28 = type_nit__MVirtualType.id;
+if(cltype27 >= var_mtype->type->table_size) {
+var26 = 0;
+} else {
+var26 = var_mtype->type->type_table[cltype27] == idtype28;
 }
+if (var26){
 {
-nit___nit__ModelBuilder___error(var_modelbuilder, var_nintro, var48); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+{ /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
+var31 = var_mtype->attrs[COLOR_nit__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
+if (unlikely(var31 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1344);
+fatal_exit(1);
+}
+var29 = var31;
+RET_LABEL30:(void)0;
 }
-} else {
 }
 {
-{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
-var54 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
-if (unlikely(var54 == NULL)) {
+{ /* Inline model#MProperty#visibility (var29) on <var29:MVirtualTypeProp> */
+var34 = var29->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var29:MVirtualTypeProp> */
+if (unlikely(var34 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
-}
-var52 = var54;
-RET_LABEL53:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
+var32 = var34;
+RET_LABEL33:(void)0;
 }
-{
-var55 = nit__model_base___standard__Object___public_visibility(self);
 }
+var_vis_type = var32;
 {
-{ /* Inline kernel#Object#!= (var52,var55) on <var52:MVisibility> */
-var_other44 = var55;
-{
-var58 = ((short int (*)(val* self, val* p0))(var52->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var52, var_other44) /* == on <var52:MVisibility>*/;
-}
-var59 = !var58;
-var56 = var59;
-goto RET_LABEL57;
-RET_LABEL57:(void)0;
+{ /* Inline model#MVirtualType#mproperty (var_mtype) on <var_mtype:MType(MVirtualType)> */
+var37 = var_mtype->attrs[COLOR_nit__model__MVirtualType___mproperty].val; /* _mproperty on <var_mtype:MType(MVirtualType)> */
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1344);
+fatal_exit(1);
 }
+var35 = var37;
+RET_LABEL36:(void)0;
 }
-if (var56){
-if (varonce60) {
-var61 = varonce60;
-} else {
-var62 = "Error: the virtual type SELF must be public.";
-var63 = 44;
-var64 = standard___standard__NativeString___to_s_with_length(var62, var63);
-var61 = var64;
-varonce60 = var61;
 }
 {
-nit___nit__ModelBuilder___error(var_modelbuilder, var_nintro, var61); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+{ /* Inline model#MProperty#intro_mclassdef (var35) on <var35:MVirtualTypeProp> */
+var40 = var35->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var35:MVirtualTypeProp> */
+if (unlikely(var40 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
+}
+var38 = var40;
+RET_LABEL39:(void)0;
 }
-} else {
 }
 {
-{ /* Inline model#MVirtualTypeDef#is_fixed (var_intro) on <var_intro:MVirtualTypeDef> */
-var67 = var_intro->attrs[COLOR_nit__model__MVirtualTypeDef___is_fixed].s; /* _is_fixed on <var_intro:MVirtualTypeDef> */
-var65 = var67;
-RET_LABEL66:(void)0;
+{ /* Inline model#MClassDef#mmodule (var38) on <var38:MClassDef> */
+var43 = var38->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var38:MClassDef> */
+if (unlikely(var43 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
+}
+var41 = var43;
+RET_LABEL42:(void)0;
 }
 }
-if (var65){
-if (varonce68) {
-var69 = varonce68;
+var_mmodule_type = var41;
 } else {
-var70 = "Error: the virtual type SELF cannot be fixed.";
-var71 = 45;
-var72 = standard___standard__NativeString___to_s_with_length(var70, var71);
-var69 = var72;
-varonce68 = var69;
+/* <var_mtype:MType> isa MParameterType */
+cltype45 = type_nit__MParameterType.color;
+idtype46 = type_nit__MParameterType.id;
+if(cltype45 >= var_mtype->type->table_size) {
+var44 = 0;
+} else {
+var44 = var_mtype->type->type_table[cltype45] == idtype46;
 }
-{
-nit___nit__ModelBuilder___error(var_modelbuilder, var_nintro, var69); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+if (var44){
+} else {
+/* <var_mtype:MType> isa MNullType */
+cltype48 = type_nit__MNullType.color;
+idtype49 = type_nit__MNullType.id;
+if(cltype48 >= var_mtype->type->table_size) {
+var47 = 0;
+} else {
+var47 = var_mtype->type->type_table[cltype48] == idtype49;
 }
+if (var47){
 } else {
+if (unlikely(varonce==NULL)) {
+var50 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce51!=NULL)) {
+var52 = varonce51;
+} else {
+var53 = "Unexpected type ";
+var54 = standard___standard__NativeString___to_s_with_length(var53, 16l);
+var52 = var54;
+varonce51 = var52;
 }
-goto RET_LABEL;
+((struct instance_standard__NativeArray*)var50)->values[0]=var52;
 } else {
+var50 = varonce;
+varonce = NULL;
 }
-var73 = NEW_nit__MVirtualTypeDef(&type_nit__MVirtualTypeDef);
 {
-{ /* Inline model#MClassDef#location (self) on <self:MClassDef> */
-var76 = self->attrs[COLOR_nit__model__MClassDef___location].val; /* _location on <self:MClassDef> */
-if (unlikely(var76 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 507);
-show_backtrace(1);
-}
-var74 = var76;
-RET_LABEL75:(void)0;
-}
+var55 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var50)->values[1]=var55;
 {
-((void (*)(val* self, val* p0))(var73->class->vft[COLOR_nit__model__MPropDef__mclassdef_61d]))(var73, self) /* mclassdef= on <var73:MVirtualTypeDef>*/;
+var56 = ((val*(*)(val* self))(var50->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var50); /* native_to_s on <var50:NativeArray[String]>*/
 }
+varonce = var50;
 {
-((void (*)(val* self, val* p0))(var73->class->vft[COLOR_nit__model__MPropDef__mproperty_61d]))(var73, var_mprop) /* mproperty= on <var73:MVirtualTypeDef>*/;
+nit___nit__ANode___debug(var_node, var56); /* Direct call parser_nodes#ANode#debug on <var_node:ANode>*/
 }
-{
-((void (*)(val* self, val* p0))(var73->class->vft[COLOR_nit__model__MPropDef__location_61d]))(var73, var74) /* location= on <var73:MVirtualTypeDef>*/;
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 387);
+fatal_exit(1);
 }
-{
-((void (*)(val* self))(var73->class->vft[COLOR_standard__kernel__Object__init]))(var73) /* init on <var73:MVirtualTypeDef>*/;
 }
-var_mpropdef = var73;
-{
-{ /* Inline model#MClassDef#mclass (self) on <self:MClassDef> */
-var79 = self->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <self:MClassDef> */
-if (unlikely(var79 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
 }
-var77 = var79;
-RET_LABEL78:(void)0;
 }
+if (var_vis_type == NULL) {
+var57 = 0; /* is null */
+} else {
+var57 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_vis_type,((val*)NULL)) on <var_vis_type:nullable MVisibility> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MClass#mclass_type (var77) on <var77:MClass> */
-var82 = var77->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var77:MClass> */
-if (unlikely(var82 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+var60 = ((short int(*)(val* self, val* p0))(var_vis_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_vis_type, var_other); /* == on <var_vis_type:nullable MVisibility(MVisibility)>*/
 }
-var80 = var82;
-RET_LABEL81:(void)0;
+var61 = !var60;
+var58 = var61;
+goto RET_LABEL59;
+RET_LABEL59:(void)0;
+}
+var57 = var58;
 }
+if (var57){
+if (var_mmodule_type == NULL) {
+var62 = 0; /* is null */
+} else {
+var62 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_mmodule_type,((val*)NULL)) on <var_mmodule_type:nullable MModule> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MVirtualTypeDef#bound= (var_mpropdef,var80) on <var_mpropdef:MVirtualTypeDef> */
-var_mpropdef->attrs[COLOR_nit__model__MVirtualTypeDef___bound].val = var80; /* _bound on <var_mpropdef:MVirtualTypeDef> */
-RET_LABEL83:(void)0;
+var65 = ((short int(*)(val* self, val* p0))(var_mmodule_type->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mmodule_type, var_other); /* == on <var_mmodule_type:nullable MModule(MModule)>*/
 }
+var66 = !var65;
+var63 = var66;
+goto RET_LABEL64;
+RET_LABEL64:(void)0;
 }
-RET_LABEL:;
+var62 = var63;
 }
-/* method modelize_property#APropdef#mpropdef for (self: APropdef): nullable MPropDef */
-val* nit__modelize_property___APropdef___mpropdef(val* self) {
-val* var /* : nullable MPropDef */;
-val* var1 /* : nullable MPropDef */;
-var1 = self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:APropdef> */
-var = var1;
-RET_LABEL:;
-return var;
+if (unlikely(!var62)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 391);
+fatal_exit(1);
 }
-/* method modelize_property#APropdef#mpropdef= for (self: APropdef, nullable MPropDef) */
-void nit__modelize_property___APropdef___mpropdef_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 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
-/* <p0:nullable MPropDef> isa nullable MPROPDEF */
-type_struct = self->type->resolution_table->types[COLOR_nullable__nit__modelize_property__APropdef__MPROPDEF];
-cltype = type_struct->color;
-idtype = type_struct->id;
-if(p0 == NULL) {
-var = 1;
+{
+var67 = nit___nit__MModule___visibility_for(var_mmodule, var_mmodule_type);
+}
+var_vis_module_type = var67;
+{
+{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
+var70 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
+if (unlikely(var70 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
+}
+var68 = var70;
+RET_LABEL69:(void)0;
+}
+}
+{
+var71 = standard___standard__Comparable____62d(var68, var_vis_type);
+}
+if (var71){
+if (unlikely(varonce72==NULL)) {
+var73 = NEW_standard__NativeArray(9l, &type_standard__NativeArray__standard__String);
+if (likely(varonce74!=NULL)) {
+var75 = varonce74;
 } else {
-if(cltype >= p0->type->table_size) {
-var = 0;
+var76 = "Error: the ";
+var77 = standard___standard__NativeString___to_s_with_length(var76, 11l);
+var75 = var77;
+varonce74 = var75;
+}
+((struct instance_standard__NativeArray*)var73)->values[0]=var75;
+if (likely(varonce78!=NULL)) {
+var79 = varonce78;
 } else {
-var = p0->type->type_table[cltype] == idtype;
+var80 = " property `";
+var81 = standard___standard__NativeString___to_s_with_length(var80, 11l);
+var79 = var81;
+varonce78 = var79;
 }
+((struct instance_standard__NativeArray*)var73)->values[2]=var79;
+if (likely(varonce82!=NULL)) {
+var83 = varonce82;
+} else {
+var84 = "` cannot contain the ";
+var85 = standard___standard__NativeString___to_s_with_length(var84, 21l);
+var83 = var85;
+varonce82 = var83;
 }
-if (unlikely(!var)) {
-var_class_name = p0 == NULL ? "null" : p0->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 405);
-show_backtrace(1);
+((struct instance_standard__NativeArray*)var73)->values[4]=var83;
+if (likely(varonce86!=NULL)) {
+var87 = varonce86;
+} else {
+var88 = " type `";
+var89 = standard___standard__NativeString___to_s_with_length(var88, 7l);
+var87 = var89;
+varonce86 = var87;
 }
-self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val = p0; /* _mpropdef on <self:APropdef> */
-RET_LABEL:;
+((struct instance_standard__NativeArray*)var73)->values[6]=var87;
+if (likely(varonce90!=NULL)) {
+var91 = varonce90;
+} else {
+var92 = "`.";
+var93 = standard___standard__NativeString___to_s_with_length(var92, 2l);
+var91 = var93;
+varonce90 = var91;
+}
+((struct instance_standard__NativeArray*)var73)->values[8]=var91;
+} else {
+var73 = varonce72;
+varonce72 = NULL;
 }
-/* method modelize_property#APropdef#new_property_visibility for (self: APropdef, ModelBuilder, MClassDef, nullable AVisibility): MVisibility */
-val* nit__modelize_property___APropdef___new_property_visibility(val* self, val* p0, val* p1, val* p2) {
-val* var /* : MVisibility */;
-val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var_nvisibility /* var nvisibility: nullable AVisibility */;
-val* var1 /* : MVisibility */;
-val* var_mvisibility /* var mvisibility: MVisibility */;
-val* var2 /* : null */;
-short int var3 /* : Bool */;
-short int var4 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var6 /* : Bool */;
-short int var7 /* : Bool */;
-val* var8 /* : MVisibility */;
-val* var9 /* : MVisibility */;
-short int var10 /* : Bool */;
-val* var_other12 /* var other: nullable Object */;
-short int var13 /* : Bool */;
-short int var15 /* : Bool */;
-static val* varonce;
-val* var16 /* : String */;
-char* var17 /* : NativeString */;
-long var18 /* : Int */;
-val* var19 /* : FlatString */;
-val* var20 /* : MVisibility */;
-val* var21 /* : MClass */;
-val* var23 /* : MClass */;
-val* var24 /* : MVisibility */;
-val* var26 /* : MVisibility */;
-val* var27 /* : MVisibility */;
-short int var28 /* : Bool */;
-short int var30 /* : Bool */;
-short int var32 /* : Bool */;
-val* var33 /* : MVisibility */;
-short int var34 /* : Bool */;
-short int var36 /* : Bool */;
-short int var38 /* : Bool */;
-val* var39 /* : null */;
-short int var40 /* : Bool */;
-short int var41 /* : Bool */;
-short int var43 /* : Bool */;
-short int var44 /* : Bool */;
-static val* varonce45;
-val* var46 /* : String */;
-char* var47 /* : NativeString */;
-long var48 /* : Int */;
-val* var49 /* : FlatString */;
-val* var50 /* : MVisibility */;
-short int var51 /* : Bool */;
-short int var53 /* : Bool */;
-short int var55 /* : Bool */;
-val* var56 /* : null */;
-short int var57 /* : Bool */;
-short int var58 /* : Bool */;
-short int var60 /* : Bool */;
-short int var61 /* : Bool */;
-static val* varonce62;
-val* var63 /* : String */;
-char* var64 /* : NativeString */;
-long var65 /* : Int */;
-val* var66 /* : FlatString */;
-static val* varonce67;
-val* var68 /* : String */;
-char* var69 /* : NativeString */;
-long var70 /* : Int */;
-val* var71 /* : FlatString */;
-val* var72 /* : MVisibility */;
-var_modelbuilder = p0;
-var_mclassdef = p1;
-var_nvisibility = p2;
 {
-var1 = nit__model_base___standard__Object___public_visibility(self);
+{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
+var96 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
+if (unlikely(var96 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
+}
+var94 = var96;
+RET_LABEL95:(void)0;
 }
-var_mvisibility = var1;
-var2 = NULL;
-if (var_nvisibility == NULL) {
-var3 = 0; /* is null */
-} else {
-var3 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_nvisibility,var2) on <var_nvisibility:nullable AVisibility> */
-var_other = var2;
 {
-var6 = ((short int (*)(val* self, val* p0))(var_nvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+var97 = ((val*(*)(val* self))(var94->class->vft[COLOR_standard__string__Object__to_s]))(var94); /* to_s on <var94:MVisibility>*/
 }
-var7 = !var6;
-var4 = var7;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+((struct instance_standard__NativeArray*)var73)->values[1]=var97;
+{
+var98 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_standard__string__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
 }
-var3 = var4;
+((struct instance_standard__NativeArray*)var73)->values[3]=var98;
+{
+var99 = ((val*(*)(val* self))(var_vis_type->class->vft[COLOR_standard__string__Object__to_s]))(var_vis_type); /* to_s on <var_vis_type:nullable MVisibility(MVisibility)>*/
 }
-if (var3){
+((struct instance_standard__NativeArray*)var73)->values[5]=var99;
 {
-var8 = ((val* (*)(val* self))(var_nvisibility->class->vft[COLOR_nit__modelbuilder_base__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+var100 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
 }
-var_mvisibility = var8;
+((struct instance_standard__NativeArray*)var73)->values[7]=var100;
 {
-var9 = nit__model_base___standard__Object___intrude_visibility(self);
+var101 = ((val*(*)(val* self))(var73->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var73); /* native_to_s on <var73:NativeArray[String]>*/
 }
+varonce72 = var73;
 {
-{ /* Inline kernel#Object#== (var_mvisibility,var9) on <var_mvisibility:MVisibility> */
-var_other12 = var9;
+nit___nit__ModelBuilder___error(self, var_node, var101); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+goto RET_LABEL;
+} else {
 {
-{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other12) on <var_mvisibility:MVisibility> */
-var15 = var_mvisibility == var_other12;
-var13 = var15;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
+var104 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
+if (unlikely(var104 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
+var102 = var104;
+RET_LABEL103:(void)0;
 }
-var10 = var13;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
 }
+{
+var105 = standard___standard__Comparable____62d(var102, var_vis_module_type);
 }
-if (var10){
-if (varonce) {
-var16 = varonce;
+if (var105){
+if (unlikely(varonce106==NULL)) {
+var107 = NEW_standard__NativeArray(11l, &type_standard__NativeArray__standard__String);
+if (likely(varonce108!=NULL)) {
+var109 = varonce108;
 } else {
-var17 = "Error: intrude is not a legal visibility for properties.";
-var18 = 56;
-var19 = standard___standard__NativeString___to_s_with_length(var17, var18);
-var16 = var19;
-varonce = var16;
+var110 = "Error: the ";
+var111 = standard___standard__NativeString___to_s_with_length(var110, 11l);
+var109 = var111;
+varonce108 = var109;
 }
-{
-nit___nit__ModelBuilder___error(var_modelbuilder, var_nvisibility, var16); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+((struct instance_standard__NativeArray*)var107)->values[0]=var109;
+if (likely(varonce112!=NULL)) {
+var113 = varonce112;
+} else {
+var114 = " property `";
+var115 = standard___standard__NativeString___to_s_with_length(var114, 11l);
+var113 = var115;
+varonce112 = var113;
 }
-{
-var20 = nit__model_base___standard__Object___public_visibility(self);
+((struct instance_standard__NativeArray*)var107)->values[2]=var113;
+if (likely(varonce116!=NULL)) {
+var117 = varonce116;
+} else {
+var118 = "` cannot contain the type `";
+var119 = standard___standard__NativeString___to_s_with_length(var118, 27l);
+var117 = var119;
+varonce116 = var117;
+}
+((struct instance_standard__NativeArray*)var107)->values[4]=var117;
+if (likely(varonce120!=NULL)) {
+var121 = varonce120;
+} else {
+var122 = "` from the ";
+var123 = standard___standard__NativeString___to_s_with_length(var122, 11l);
+var121 = var123;
+varonce120 = var121;
+}
+((struct instance_standard__NativeArray*)var107)->values[6]=var121;
+if (likely(varonce124!=NULL)) {
+var125 = varonce124;
+} else {
+var126 = " module `";
+var127 = standard___standard__NativeString___to_s_with_length(var126, 9l);
+var125 = var127;
+varonce124 = var125;
 }
-var_mvisibility = var20;
+((struct instance_standard__NativeArray*)var107)->values[8]=var125;
+if (likely(varonce128!=NULL)) {
+var129 = varonce128;
 } else {
+var130 = "`.";
+var131 = standard___standard__NativeString___to_s_with_length(var130, 2l);
+var129 = var131;
+varonce128 = var129;
 }
+((struct instance_standard__NativeArray*)var107)->values[10]=var129;
 } else {
+var107 = varonce106;
+varonce106 = NULL;
 }
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var23 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var23 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+{ /* Inline model#MProperty#visibility (var_mproperty) on <var_mproperty:MProperty> */
+var134 = var_mproperty->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mproperty:MProperty> */
+if (unlikely(var134 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
-var21 = var23;
-RET_LABEL22:(void)0;
+var132 = var134;
+RET_LABEL133:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#visibility (var21) on <var21:MClass> */
-var26 = var21->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var21:MClass> */
-if (unlikely(var26 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 403);
-show_backtrace(1);
+var135 = ((val*(*)(val* self))(var132->class->vft[COLOR_standard__string__Object__to_s]))(var132); /* to_s on <var132:MVisibility>*/
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+((struct instance_standard__NativeArray*)var107)->values[1]=var135;
+{
+var136 = ((val*(*)(val* self))(var_mproperty->class->vft[COLOR_standard__string__Object__to_s]))(var_mproperty); /* to_s on <var_mproperty:MProperty>*/
 }
+((struct instance_standard__NativeArray*)var107)->values[3]=var136;
+{
+var137 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MType>*/
 }
+((struct instance_standard__NativeArray*)var107)->values[5]=var137;
 {
-var27 = nit__model_base___standard__Object___private_visibility(self);
+var138 = ((val*(*)(val* self))(var_vis_module_type->class->vft[COLOR_standard__string__Object__to_s]))(var_vis_module_type); /* to_s on <var_vis_module_type:MVisibility>*/
 }
+((struct instance_standard__NativeArray*)var107)->values[7]=var138;
 {
-{ /* Inline kernel#Object#== (var24,var27) on <var24:MVisibility> */
-var_other12 = var27;
+var139 = ((val*(*)(val* self))(var_mmodule_type->class->vft[COLOR_standard__string__Object__to_s]))(var_mmodule_type); /* to_s on <var_mmodule_type:nullable MModule(MModule)>*/
+}
+((struct instance_standard__NativeArray*)var107)->values[9]=var139;
 {
-{ /* Inline kernel#Object#is_same_instance (var24,var_other12) on <var24:MVisibility> */
-var32 = var24 == var_other12;
-var30 = var32;
-goto RET_LABEL31;
-RET_LABEL31:(void)0;
+var140 = ((val*(*)(val* self))(var107->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var107); /* native_to_s on <var107:NativeArray[String]>*/
 }
+varonce106 = var107;
+{
+nit___nit__ModelBuilder___error(self, var_node, var140); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
-var28 = var30;
-goto RET_LABEL29;
-RET_LABEL29:(void)0;
+goto RET_LABEL;
+} else {
 }
 }
-if (var28){
+} else {
+}
+/* <var_node:ANode> isa AType */
+cltype142 = type_nit__AType.color;
+idtype143 = type_nit__AType.id;
+if(cltype142 >= var_node->type->table_size) {
+var141 = 0;
+} else {
+var141 = var_node->type->type_table[cltype142] == idtype143;
+}
+if (var141){
 {
-var33 = nit__model_base___standard__Object___protected_visibility(self);
+{ /* Inline parser_nodes#AType#n_types (var_node) on <var_node:ANode(AType)> */
+var146 = var_node->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_node:ANode(AType)> */
+if (unlikely(var146 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
+fatal_exit(1);
+}
+var144 = var146;
+RET_LABEL145:(void)0;
 }
+}
+var_ = var144;
 {
-{ /* Inline kernel#Object#== (var_mvisibility,var33) on <var_mvisibility:MVisibility> */
-var_other12 = var33;
+var147 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
+}
+var_148 = var147;
+for(;;) {
 {
-{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other12) on <var_mvisibility:MVisibility> */
-var38 = var_mvisibility == var_other12;
-var36 = var38;
-goto RET_LABEL37;
-RET_LABEL37:(void)0;
+var149 = ((short int(*)(val* self))((((long)var_148&3)?class_info[((long)var_148&3)]:var_148->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_148); /* is_ok on <var_148:Iterator[AType]>*/
 }
+if (var149){
+{
+var150 = ((val*(*)(val* self))((((long)var_148&3)?class_info[((long)var_148&3)]:var_148->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_148); /* item on <var_148:Iterator[AType]>*/
 }
-var34 = var36;
-goto RET_LABEL35;
-RET_LABEL35:(void)0;
+var_a = var150;
+{
+{ /* Inline modelbuilder_base#AType#mtype (var_a) on <var_a:AType> */
+var153 = var_a->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val; /* _mtype on <var_a:AType> */
+var151 = var153;
+RET_LABEL152:(void)0;
 }
 }
-if (var34){
-var39 = NULL;
-if (var_nvisibility == NULL) {
-var40 = 0; /* is null */
+var_t = var151;
+if (var_t == NULL) {
+var154 = 1; /* is null */
 } else {
-var40 = 1; /* arg is null and recv is not */
+var154 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_nvisibility,var39) on <var_nvisibility:nullable AVisibility> */
-var_other = var39;
+{ /* Inline kernel#Object#== (var_t,((val*)NULL)) on <var_t:nullable MType> */
+var_other157 = ((val*)NULL);
 {
-var43 = ((short int (*)(val* self, val* p0))(var_nvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+{ /* Inline kernel#Object#is_same_instance (var_t,var_other157) on <var_t:nullable MType(MType)> */
+var160 = var_t == var_other157;
+var158 = var160;
+goto RET_LABEL159;
+RET_LABEL159:(void)0;
 }
-var44 = !var43;
-var41 = var44;
-goto RET_LABEL42;
-RET_LABEL42:(void)0;
 }
-var40 = var41;
+var155 = var158;
+goto RET_LABEL156;
+RET_LABEL156:(void)0;
 }
-if (unlikely(!var40)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 423);
-show_backtrace(1);
+var154 = var155;
 }
-if (varonce45) {
-var46 = varonce45;
+if (var154){
+goto BREAK_label;
 } else {
-var47 = "Error: The only legal visibility for properties in a private class is private.";
-var48 = 78;
-var49 = standard___standard__NativeString___to_s_with_length(var47, var48);
-var46 = var49;
-varonce45 = var46;
-}
-{
-nit___nit__ModelBuilder___error(var_modelbuilder, var_nvisibility, var46); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-} else {
 {
-var50 = nit__model_base___standard__Object___private_visibility(self);
+nit__modelize_property___ModelBuilder___check_visibility(self, var_a, var_t, var_mpropdef); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:ModelBuilder>*/
 }
+BREAK_label: (void)0;
 {
-{ /* Inline kernel#Object#== (var_mvisibility,var50) on <var_mvisibility:MVisibility> */
-var_other12 = var50;
-{
-{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other12) on <var_mvisibility:MVisibility> */
-var55 = var_mvisibility == var_other12;
-var53 = var55;
-goto RET_LABEL54;
-RET_LABEL54:(void)0;
+((void(*)(val* self))((((long)var_148&3)?class_info[((long)var_148&3)]:var_148->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_148); /* next on <var_148:Iterator[AType]>*/
 }
+} else {
+goto BREAK_label161;
 }
-var51 = var53;
-goto RET_LABEL52;
-RET_LABEL52:(void)0;
 }
+BREAK_label161: (void)0;
+{
+((void(*)(val* self))((((long)var_148&3)?class_info[((long)var_148&3)]:var_148->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_148); /* finish on <var_148:Iterator[AType]>*/
 }
-if (var51){
-var56 = NULL;
-if (var_nvisibility == NULL) {
-var57 = 0; /* is null */
 } else {
-var57 = 1; /* arg is null and recv is not */
+/* <var_mtype:MType> isa MGenericType */
+cltype163 = type_nit__MGenericType.color;
+idtype164 = type_nit__MGenericType.id;
+if(cltype163 >= var_mtype->type->table_size) {
+var162 = 0;
+} else {
+var162 = var_mtype->type->type_table[cltype163] == idtype164;
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_nvisibility,var56) on <var_nvisibility:nullable AVisibility> */
-var_other = var56;
+if (var162){
 {
-var60 = ((short int (*)(val* self, val* p0))(var_nvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nvisibility, var_other) /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+{ /* Inline model#MGenericType#arguments (var_mtype) on <var_mtype:MType(MGenericType)> */
+var167 = var_mtype->attrs[COLOR_nit__model__MGenericType___arguments].val; /* _arguments on <var_mtype:MType(MGenericType)> */
+if (unlikely(var167 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1244);
+fatal_exit(1);
 }
-var61 = !var60;
-var58 = var61;
-goto RET_LABEL59;
-RET_LABEL59:(void)0;
+var165 = var167;
+RET_LABEL166:(void)0;
 }
-var57 = var58;
 }
-if (unlikely(!var57)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 426);
-show_backtrace(1);
+var_168 = var165;
+{
+var169 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_168);
 }
-if (varonce62) {
-var63 = varonce62;
-} else {
-var64 = "useless-visibility";
-var65 = 18;
-var66 = standard___standard__NativeString___to_s_with_length(var64, var65);
-var63 = var66;
-varonce62 = var63;
+var_170 = var169;
+for(;;) {
+{
+var171 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_170);
 }
-if (varonce67) {
-var68 = varonce67;
-} else {
-var69 = "Warning: private is superfluous since the only legal visibility for properties in a private class is private.";
-var70 = 109;
-var71 = standard___standard__NativeString___to_s_with_length(var69, var70);
-var68 = var71;
-varonce67 = var68;
+if (var171){
+{
+var172 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_170);
 }
+var_t173 = var172;
 {
-nit___nit__ModelBuilder___advice(var_modelbuilder, var_nvisibility, var63, var68); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+nit__modelize_property___ModelBuilder___check_visibility(self, var_node, var_t173, var_mpropdef); /* Direct call modelize_property#ModelBuilder#check_visibility on <self:ModelBuilder>*/
+}
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_170); /* Direct call array#ArrayIterator#next on <var_170:ArrayIterator[MType]>*/
 }
 } else {
+goto BREAK_label174;
 }
 }
+BREAK_label174: (void)0;
 {
-var72 = nit__model_base___standard__Object___private_visibility(self);
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_170); /* Direct call array#ArrayIterator#finish on <var_170:ArrayIterator[MType]>*/
 }
-var_mvisibility = var72;
 } else {
 }
-var = var_mvisibility;
-goto RET_LABEL;
+}
 RET_LABEL:;
-return var;
 }
-/* method modelize_property#APropdef#set_doc for (self: APropdef, MPropDef, ModelBuilder) */
-void nit__modelize_property___APropdef___set_doc(val* self, val* p0, val* p1) {
-val* var_mpropdef /* var mpropdef: MPropDef */;
-val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
-val* var /* : nullable ADoc */;
-val* var2 /* : nullable ADoc */;
-val* var_ndoc /* var ndoc: nullable ADoc */;
-val* var3 /* : null */;
-short int var4 /* : Bool */;
-short int var5 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var7 /* : Bool */;
+/* method modelize_property#ModelBuilder#check_virtual_types_circularity for (self: ModelBuilder, ANode, MVirtualTypeProp, MType, MModule): Bool */
+short int nit__modelize_property___ModelBuilder___check_virtual_types_circularity(val* self, val* p0, val* p1, val* p2, val* p3) {
+short int var /* : Bool */;
+val* var_node /* var node: ANode */;
+val* var_mproperty /* var mproperty: MVirtualTypeProp */;
+val* var_recv /* var recv: MType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var1 /* : MVirtualType */;
+val* var3 /* : MVirtualType */;
+val* var_mtype /* var mtype: MVirtualType */;
+val* var4 /* : POSet[MType] */;
+val* var_poset /* var poset: POSet[MType] */;
+val* var6 /* : List[MType] */;
+val* var_todo /* var todo: List[MType] */;
 short int var8 /* : Bool */;
-val* var9 /* : MDoc */;
-val* var_mdoc /* var mdoc: MDoc */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable Object */;
+val* var_t /* var t: MType */;
+short int var11 /* : Bool */;
 short int var12 /* : Bool */;
 short int var13 /* : Bool */;
-short int var_ /* var : Bool */;
-val* var14 /* : MProperty */;
-val* var16 /* : MProperty */;
-val* var17 /* : MVisibility */;
-val* var19 /* : MVisibility */;
-val* var20 /* : MVisibility */;
-short int var21 /* : Bool */;
-static val* varonce;
-val* var22 /* : String */;
-char* var23 /* : NativeString */;
-long var24 /* : Int */;
-val* var25 /* : FlatString */;
-static val* varonce26;
-val* var27 /* : String */;
-char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : FlatString */;
-val* var31 /* : MProperty */;
-val* var33 /* : MProperty */;
-static val* varonce34;
-val* var35 /* : String */;
-char* var36 /* : NativeString */;
-long var37 /* : Int */;
-val* var38 /* : FlatString */;
-val* var39 /* : Array[Object] */;
-long var40 /* : Int */;
-val* var41 /* : NativeArray[Object] */;
-val* var42 /* : String */;
-static val* varonce43;
-val* var44 /* : String */;
-char* var45 /* : NativeString */;
-long var46 /* : Int */;
-val* var47 /* : FlatString */;
-val* var48 /* : nullable AAnnotation */;
-val* var_at_deprecated /* var at_deprecated: nullable AAnnotation */;
-val* var49 /* : null */;
+int cltype;
+int idtype;
+val* var14 /* : Array[MType] */;
+val* var_ /* var : Array[MType] */;
+val* var15 /* : MType */;
+val* var17 /* : MType */;
+val* var_nexts /* var nexts: nullable Object */;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
+val* var21 /* : Array[MType] */;
+val* var23 /* : Array[MType] */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var27 /* : MVirtualTypeProp */;
+val* var29 /* : MVirtualTypeProp */;
+val* var_vt /* var vt: MVirtualTypeProp */;
+val* var30 /* : Array[MPropDef] */;
+val* var_defs /* var defs: Array[MVirtualTypeDef] */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+val* var33 /* : Array[MType] */;
+val* var_34 /* var : Array[MVirtualTypeDef] */;
+val* var35 /* : ArrayIterator[nullable Object] */;
+val* var_36 /* var : ArrayIterator[MVirtualTypeDef] */;
+short int var37 /* : Bool */;
+val* var38 /* : nullable Object */;
+val* var_d /* var d: MVirtualTypeDef */;
+val* var39 /* : nullable Object */;
+val* var40 /* : nullable MType */;
+val* var42 /* : nullable MType */;
+val* var_next /* var next: nullable MType */;
+short int var43 /* : Bool */;
+short int var44 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var46 /* : Bool */;
+short int var48 /* : Bool */;
 short int var50 /* : Bool */;
-short int var51 /* : Bool */;
+int cltype51;
+int idtype52;
 short int var53 /* : Bool */;
-short int var54 /* : Bool */;
-short int var55 /* : Bool */;
-short int var56 /* : Bool */;
-static val* varonce57;
-val* var58 /* : String */;
-char* var59 /* : NativeString */;
-long var60 /* : Int */;
-val* var61 /* : FlatString */;
-val* var62 /* : MDeprecationInfo */;
-val* var_info /* var info: MDeprecationInfo */;
-val* var64 /* : nullable ADoc */;
-val* var66 /* : nullable ADoc */;
-val* var67 /* : null */;
-short int var68 /* : Bool */;
-short int var69 /* : Bool */;
-short int var71 /* : Bool */;
-short int var72 /* : Bool */;
-val* var73 /* : MDoc */;
-val* var75 /* : MProperty */;
-val* var77 /* : MProperty */;
-var_mpropdef = p0;
-var_modelbuilder = p1;
+int cltype54;
+int idtype55;
+val* var_56 /* var : Array[MType] */;
+val* var57 /* : ArrayIterator[nullable Object] */;
+val* var_58 /* var : ArrayIterator[MType] */;
+short int var59 /* : Bool */;
+val* var60 /* : nullable Object */;
+val* var_next61 /* var next: MType */;
+short int var62 /* : Bool */;
+short int var63 /* : Bool */;
+short int var65 /* : Bool */;
+short int var67 /* : Bool */;
+val* var68 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce69;
+val* var70 /* : String */;
+char* var71 /* : NativeString */;
+val* var72 /* : FlatString */;
+static val* varonce73;
+val* var74 /* : String */;
+char* var75 /* : NativeString */;
+val* var76 /* : FlatString */;
+static val* varonce77;
+val* var78 /* : String */;
+char* var79 /* : NativeString */;
+val* var80 /* : FlatString */;
+val* var81 /* : String */;
+val* var82 /* : String */;
+val* var83 /* : String */;
+val* var85 /* : NativeArray[String] */;
+static val* varonce84;
+static val* varonce86;
+val* var87 /* : String */;
+char* var88 /* : NativeString */;
+val* var89 /* : FlatString */;
+static val* varonce90;
+val* var91 /* : String */;
+char* var92 /* : NativeString */;
+val* var93 /* : FlatString */;
+static val* varonce94;
+val* var95 /* : String */;
+char* var96 /* : NativeString */;
+val* var97 /* : FlatString */;
+static val* varonce98;
+val* var99 /* : String */;
+char* var100 /* : NativeString */;
+val* var101 /* : FlatString */;
+val* var102 /* : String */;
+val* var103 /* : String */;
+val* var104 /* : String */;
+val* var105 /* : String */;
+var_node = p0;
+var_mproperty = p1;
+var_recv = p2;
+var_mmodule = p3;
 {
-{ /* Inline parser_nodes#ADefinition#n_doc (self) on <self:APropdef> */
-var2 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_doc].val; /* _n_doc on <self:APropdef> */
-var = var2;
-RET_LABEL1:(void)0;
+{ /* Inline model#MVirtualTypeProp#mvirtualtype (var_mproperty) on <var_mproperty:MVirtualTypeProp> */
+var3 = var_mproperty->attrs[COLOR_nit__model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <var_mproperty:MVirtualTypeProp> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2191);
+fatal_exit(1);
 }
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-var_ndoc = var;
-var3 = NULL;
-if (var_ndoc == NULL) {
-var4 = 0; /* is null */
-} else {
-var4 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_ndoc,var3) on <var_ndoc:nullable ADoc> */
-var_other = var3;
+var_mtype = var1;
+var4 = NEW_poset__POSet(&type_poset__POSet__nit__MType);
 {
-var7 = ((short int (*)(val* self, val* p0))(var_ndoc->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ndoc, var_other) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
+{ /* Inline kernel#Object#init (var4) on <var4:POSet[MType]> */
+RET_LABEL5:(void)0;
 }
-var8 = !var7;
-var5 = var8;
-goto RET_LABEL6;
-RET_LABEL6:(void)0;
 }
-var4 = var5;
+var_poset = var4;
+var6 = NEW_standard__List(&type_standard__List__nit__MType);
+{
+{ /* Inline list#List#init (var6) on <var6:List[MType]> */
+RET_LABEL7:(void)0;
 }
-if (var4){
+}
+var_todo = var6;
 {
-var9 = nit__modelbuilder_base___ADoc___to_mdoc(var_ndoc);
+standard___standard__Sequence___SimpleCollection__add(var_todo, var_mtype); /* Direct call abstract_collection#Sequence#add on <var_todo:List[MType]>*/
 }
-var_mdoc = var9;
+for(;;) {
 {
-{ /* Inline mdoc#MEntity#mdoc= (var_mpropdef,var_mdoc) on <var_mpropdef:MPropDef> */
-var_mpropdef->attrs[COLOR_nit__mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mpropdef:MPropDef> */
-RET_LABEL10:(void)0;
+var8 = standard___standard__List___standard__abstract_collection__Collection__is_empty(var_todo);
 }
+var9 = !var8;
+if (var9){
+{
+var10 = standard___standard__List___standard__abstract_collection__Sequence__pop(var_todo);
 }
+var_t = var10;
 {
-{ /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mpropdef) on <var_mdoc:MDoc> */
-var_mdoc->attrs[COLOR_nit__mdoc__MDoc___original_mentity].val = var_mpropdef; /* _original_mentity on <var_mdoc:MDoc> */
-RET_LABEL11:(void)0;
+var11 = ((short int(*)(val* self))(var_t->class->vft[COLOR_nit__model__MType__need_anchor]))(var_t); /* need_anchor on <var_t:MType>*/
 }
+var12 = !var11;
+if (var12){
+goto BREAK_label;
+} else {
 }
+/* <var_t:MType> isa MNullableType */
+cltype = type_nit__MNullableType.color;
+idtype = type_nit__MNullableType.id;
+if(cltype >= var_t->type->table_size) {
+var13 = 0;
 } else {
-{
-var13 = nit___nit__MPropDef___is_intro(var_mpropdef);
+var13 = var_t->type->type_table[cltype] == idtype;
 }
-var_ = var13;
 if (var13){
+var14 = NEW_standard__Array(&type_standard__Array__nit__MType);
 {
-{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
-var16 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
-if (unlikely(var16 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
-}
-var14 = var16;
-RET_LABEL15:(void)0;
-}
+standard___standard__Array___with_capacity(var14, 1l); /* Direct call array#Array#with_capacity on <var14:Array[MType]>*/
 }
+var_ = var14;
 {
-{ /* Inline model#MProperty#visibility (var14) on <var14:MProperty> */
-var19 = var14->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var14:MProperty> */
-if (unlikely(var19 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+{ /* Inline model#MProxyType#mtype (var_t) on <var_t:MType(MNullableType)> */
+var17 = var_t->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <var_t:MType(MNullableType)> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var17 = var19;
-RET_LABEL18:(void)0;
+var15 = var17;
+RET_LABEL16:(void)0;
 }
 }
 {
-var20 = nit__model_base___standard__Object___protected_visibility(self);
+standard___standard__AbstractArray___standard__abstract_collection__Sequence__push(var_, var15); /* Direct call array#AbstractArray#push on <var_:Array[MType]>*/
+}
+var_nexts = var_;
+} else {
+/* <var_t:MType> isa MGenericType */
+cltype19 = type_nit__MGenericType.color;
+idtype20 = type_nit__MGenericType.id;
+if(cltype19 >= var_t->type->table_size) {
+var18 = 0;
+} else {
+var18 = var_t->type->type_table[cltype19] == idtype20;
 }
+if (var18){
 {
-var21 = standard___standard__Comparable____62d_61d(var17, var20);
+{ /* Inline model#MGenericType#arguments (var_t) on <var_t:MType(MGenericType)> */
+var23 = var_t->attrs[COLOR_nit__model__MGenericType___arguments].val; /* _arguments on <var_t:MType(MGenericType)> */
+if (unlikely(var23 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1244);
+fatal_exit(1);
 }
-var12 = var21;
-} else {
-var12 = var_;
+var21 = var23;
+RET_LABEL22:(void)0;
 }
-if (var12){
-if (varonce) {
-var22 = varonce;
-} else {
-var23 = "missing-doc";
-var24 = 11;
-var25 = standard___standard__NativeString___to_s_with_length(var23, var24);
-var22 = var25;
-varonce = var22;
 }
-if (varonce26) {
-var27 = varonce26;
+var_nexts = var21;
 } else {
-var28 = "Documentation warning: Undocumented property `";
-var29 = 46;
-var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
-var27 = var30;
-varonce26 = var27;
+/* <var_t:MType> isa MVirtualType */
+cltype25 = type_nit__MVirtualType.color;
+idtype26 = type_nit__MVirtualType.id;
+if(cltype25 >= var_t->type->table_size) {
+var24 = 0;
+} else {
+var24 = var_t->type->type_table[cltype25] == idtype26;
 }
+if (var24){
 {
-{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
-var33 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
-if (unlikely(var33 == NULL)) {
+{ /* Inline model#MVirtualType#mproperty (var_t) on <var_t:MType(MVirtualType)> */
+var29 = var_t->attrs[COLOR_nit__model__MVirtualType___mproperty].val; /* _mproperty on <var_t:MType(MVirtualType)> */
+if (unlikely(var29 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1344);
+fatal_exit(1);
 }
-var31 = var33;
-RET_LABEL32:(void)0;
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
-if (varonce34) {
-var35 = varonce34;
-} else {
-var36 = "`";
-var37 = 1;
-var38 = standard___standard__NativeString___to_s_with_length(var36, var37);
-var35 = var38;
-varonce34 = var35;
+var_vt = var27;
+{
+var30 = nit___nit__MProperty___lookup_definitions(var_vt, var_mmodule, var_recv);
 }
-var39 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var39 = array_instance Array[Object] */
-var40 = 3;
-var41 = NEW_standard__NativeArray(var40, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var41)->values[0] = (val*) var27;
-((struct instance_standard__NativeArray*)var41)->values[1] = (val*) var31;
-((struct instance_standard__NativeArray*)var41)->values[2] = (val*) var35;
+var_defs = var30;
 {
-((void (*)(val* self, val* p0, long p1))(var39->class->vft[COLOR_standard__array__Array__with_native]))(var39, var41, var40) /* with_native on <var39:Array[Object]>*/;
+var31 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_defs);
 }
+var32 = !var31;
+if (unlikely(!var32)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 445);
+fatal_exit(1);
 }
+var33 = NEW_standard__Array(&type_standard__Array__nit__MType);
 {
-var42 = ((val* (*)(val* self))(var39->class->vft[COLOR_standard__string__Object__to_s]))(var39) /* to_s on <var39:Array[Object]>*/;
+standard___standard__Array___standard__kernel__Object__init(var33); /* Direct call array#Array#init on <var33:Array[MType]>*/
 }
+var_nexts = var33;
+var_34 = var_defs;
 {
-nit___nit__ModelBuilder___advice(var_modelbuilder, self, var22, var42); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+var35 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_34);
 }
-} else {
+var_36 = var35;
+for(;;) {
+{
+var37 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_36);
 }
+if (var37){
+{
+var38 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_36);
 }
-if (varonce43) {
-var44 = varonce43;
-} else {
-var45 = "deprecated";
-var46 = 10;
-var47 = standard___standard__NativeString___to_s_with_length(var45, var46);
-var44 = var47;
-varonce43 = var44;
+var_d = var38;
+{
+var39 = standard___standard__SequenceRead___Collection__first(var_defs);
 }
 {
-var48 = nit__annotation___Prod___get_single_annotation(self, var44, var_modelbuilder);
+{ /* Inline model#MVirtualTypeDef#bound (var39) on <var39:nullable Object(MVirtualTypeDef)> */
+var42 = var39->attrs[COLOR_nit__model__MVirtualTypeDef___bound].val; /* _bound on <var39:nullable Object(MVirtualTypeDef)> */
+var40 = var42;
+RET_LABEL41:(void)0;
 }
-var_at_deprecated = var48;
-var49 = NULL;
-if (var_at_deprecated == NULL) {
-var50 = 0; /* is null */
+}
+var_next = var40;
+if (var_next == NULL) {
+var43 = 1; /* is null */
 } else {
-var50 = 1; /* arg is null and recv is not */
+var43 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_at_deprecated,var49) on <var_at_deprecated:nullable AAnnotation> */
-var_other = var49;
+{ /* Inline kernel#Object#== (var_next,((val*)NULL)) on <var_next:nullable MType> */
+var_other = ((val*)NULL);
 {
-var53 = ((short int (*)(val* self, val* p0))(var_at_deprecated->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_at_deprecated, var_other) /* == on <var_at_deprecated:nullable AAnnotation(AAnnotation)>*/;
+{ /* Inline kernel#Object#is_same_instance (var_next,var_other) on <var_next:nullable MType(MType)> */
+var48 = var_next == var_other;
+var46 = var48;
+goto RET_LABEL47;
+RET_LABEL47:(void)0;
 }
-var54 = !var53;
-var51 = var54;
-goto RET_LABEL52;
-RET_LABEL52:(void)0;
 }
-var50 = var51;
+var44 = var46;
+goto RET_LABEL45;
+RET_LABEL45:(void)0;
 }
-if (var50){
-{
-var55 = nit___nit__MPropDef___is_intro(var_mpropdef);
+var43 = var44;
 }
-var56 = !var55;
-if (var56){
-if (varonce57) {
-var58 = varonce57;
+if (var43){
+var = 0;
+goto RET_LABEL;
 } else {
-var59 = "Error: method redefinition cannot be deprecated.";
-var60 = 48;
-var61 = standard___standard__NativeString___to_s_with_length(var59, var60);
-var58 = var61;
-varonce57 = var58;
 }
 {
-nit___nit__ModelBuilder___error(var_modelbuilder, self, var58); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_nexts, var_next); /* Direct call array#Array#add on <var_nexts:nullable Object(Array[MType])>*/
 }
-} else {
-var62 = NEW_nit__MDeprecationInfo(&type_nit__MDeprecationInfo);
 {
-{ /* Inline kernel#Object#init (var62) on <var62:MDeprecationInfo> */
-RET_LABEL63:(void)0;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_36); /* Direct call array#ArrayIterator#next on <var_36:ArrayIterator[MVirtualTypeDef]>*/
+}
+} else {
+goto BREAK_label49;
 }
 }
-var_info = var62;
+BREAK_label49: (void)0;
 {
-{ /* Inline parser_nodes#ADefinition#n_doc (var_at_deprecated) on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
-var66 = var_at_deprecated->attrs[COLOR_nit__parser_nodes__ADefinition___n_doc].val; /* _n_doc on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
-var64 = var66;
-RET_LABEL65:(void)0;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_36); /* Direct call array#ArrayIterator#finish on <var_36:ArrayIterator[MVirtualTypeDef]>*/
 }
+} else {
+/* <var_t:MType> isa MClassType */
+cltype51 = type_nit__MClassType.color;
+idtype52 = type_nit__MClassType.id;
+if(cltype51 >= var_t->type->table_size) {
+var50 = 0;
+} else {
+var50 = var_t->type->type_table[cltype51] == idtype52;
 }
-var_ndoc = var64;
-var67 = NULL;
-if (var_ndoc == NULL) {
-var68 = 0; /* is null */
+if (var50){
+goto BREAK_label;
+} else {
+/* <var_t:MType> isa MParameterType */
+cltype54 = type_nit__MParameterType.color;
+idtype55 = type_nit__MParameterType.id;
+if(cltype54 >= var_t->type->table_size) {
+var53 = 0;
 } else {
-var68 = 1; /* arg is null and recv is not */
+var53 = var_t->type->type_table[cltype54] == idtype55;
+}
+if (var53){
+goto BREAK_label;
+} else {
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 459);
+fatal_exit(1);
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_ndoc,var67) on <var_ndoc:nullable ADoc> */
-var_other = var67;
-{
-var71 = ((short int (*)(val* self, val* p0))(var_ndoc->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ndoc, var_other) /* == on <var_ndoc:nullable ADoc(ADoc)>*/;
 }
-var72 = !var71;
-var69 = var72;
-goto RET_LABEL70;
-RET_LABEL70:(void)0;
 }
-var68 = var69;
 }
-if (var68){
-{
-var73 = nit__modelbuilder_base___ADoc___to_mdoc(var_ndoc);
 }
+var_56 = var_nexts;
 {
-{ /* Inline mdoc#MDeprecationInfo#mdoc= (var_info,var73) on <var_info:MDeprecationInfo> */
-var_info->attrs[COLOR_nit__mdoc__MDeprecationInfo___mdoc].val = var73; /* _mdoc on <var_info:MDeprecationInfo> */
-RET_LABEL74:(void)0;
+var57 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_56);
 }
+var_58 = var57;
+for(;;) {
+{
+var59 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_58);
 }
-} else {
+if (var59){
+{
+var60 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_58);
 }
+var_next61 = var60;
 {
-{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
-var77 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
-if (unlikely(var77 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+var62 = poset___poset__POSet___has_edge(var_poset, var_next61, var_t);
 }
-var75 = var77;
-RET_LABEL76:(void)0;
+if (var62){
+{
+{ /* Inline kernel#Object#== (var_mtype,var_next61) on <var_mtype:MVirtualType> */
+var_other = var_next61;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:MVirtualType> */
+var67 = var_mtype == var_other;
+var65 = var67;
+goto RET_LABEL66;
+RET_LABEL66:(void)0;
 }
 }
-{
-{ /* Inline mdoc#MEntity#deprecation= (var75,var_info) on <var75:MProperty> */
-var75->attrs[COLOR_nit__mdoc__MEntity___deprecation].val = var_info; /* _deprecation on <var75:MProperty> */
-RET_LABEL78:(void)0;
+var63 = var65;
+goto RET_LABEL64;
+RET_LABEL64:(void)0;
 }
 }
+if (var63){
+if (unlikely(varonce==NULL)) {
+var68 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce69!=NULL)) {
+var70 = varonce69;
+} else {
+var71 = "Error: circularity of virtual type definition: ";
+var72 = standard___standard__NativeString___to_s_with_length(var71, 47l);
+var70 = var72;
+varonce69 = var70;
 }
+((struct instance_standard__NativeArray*)var68)->values[0]=var70;
+if (likely(varonce73!=NULL)) {
+var74 = varonce73;
 } else {
+var75 = " <-> ";
+var76 = standard___standard__NativeString___to_s_with_length(var75, 5l);
+var74 = var76;
+varonce73 = var74;
 }
-RET_LABEL:;
+((struct instance_standard__NativeArray*)var68)->values[2]=var74;
+if (likely(varonce77!=NULL)) {
+var78 = varonce77;
+} else {
+var79 = ".";
+var80 = standard___standard__NativeString___to_s_with_length(var79, 1l);
+var78 = var80;
+varonce77 = var78;
 }
-/* method modelize_property#APropdef#check_redef_property_visibility for (self: APropdef, ModelBuilder, nullable AVisibility, MProperty) */
-void nit__modelize_property___APropdef___check_redef_property_visibility(val* self, val* p0, val* p1, val* p2) {
-val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
-val* var_nvisibility /* var nvisibility: nullable AVisibility */;
-val* var_mprop /* var mprop: MProperty */;
-val* var /* : null */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var4 /* : Bool */;
-short int var6 /* : Bool */;
-val* var7 /* : MVisibility */;
-val* var_mvisibility /* var mvisibility: MVisibility */;
-short int var8 /* : Bool */;
-val* var9 /* : MVisibility */;
-val* var11 /* : MVisibility */;
-short int var12 /* : Bool */;
-val* var_other14 /* var other: nullable Object */;
-short int var15 /* : Bool */;
-short int var16 /* : Bool */;
-short int var_ /* var : Bool */;
-val* var17 /* : MVisibility */;
-short int var18 /* : Bool */;
-short int var20 /* : Bool */;
-short int var21 /* : Bool */;
-static val* varonce;
-val* var22 /* : String */;
-char* var23 /* : NativeString */;
-long var24 /* : Int */;
-val* var25 /* : FlatString */;
-val* var26 /* : MVisibility */;
-val* var28 /* : MVisibility */;
-static val* varonce29;
-val* var30 /* : String */;
-char* var31 /* : NativeString */;
-long var32 /* : Int */;
-val* var33 /* : FlatString */;
-val* var34 /* : Array[Object] */;
-long var35 /* : Int */;
-val* var36 /* : NativeArray[Object] */;
-val* var37 /* : String */;
-var_modelbuilder = p0;
-var_nvisibility = p1;
-var_mprop = p2;
-var = NULL;
-if (var_nvisibility == NULL) {
-var1 = 1; /* is null */
+((struct instance_standard__NativeArray*)var68)->values[4]=var78;
 } else {
-var1 = 0; /* arg is null but recv is not */
+var68 = varonce;
+varonce = NULL;
 }
-if (0) {
-{ /* Inline kernel#Object#== (var_nvisibility,var) on <var_nvisibility:nullable AVisibility> */
-var_other = var;
 {
-{ /* Inline kernel#Object#is_same_instance (var_nvisibility,var_other) on <var_nvisibility:nullable AVisibility(AVisibility)> */
-var6 = var_nvisibility == var_other;
-var4 = var6;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
+var81 = ((val*(*)(val* self))(var_next61->class->vft[COLOR_standard__string__Object__to_s]))(var_next61); /* to_s on <var_next61:MType>*/
 }
+((struct instance_standard__NativeArray*)var68)->values[1]=var81;
+{
+var82 = ((val*(*)(val* self))(var_t->class->vft[COLOR_standard__string__Object__to_s]))(var_t); /* to_s on <var_t:MType>*/
 }
-var2 = var4;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+((struct instance_standard__NativeArray*)var68)->values[3]=var82;
+{
+var83 = ((val*(*)(val* self))(var68->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var68); /* native_to_s on <var68:NativeArray[String]>*/
 }
-var1 = var2;
+varonce = var68;
+{
+nit___nit__ModelBuilder___error(self, var_node, var83); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
-if (var1){
-goto RET_LABEL;
 } else {
+if (unlikely(varonce84==NULL)) {
+var85 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
+if (likely(varonce86!=NULL)) {
+var87 = varonce86;
+} else {
+var88 = "Error: circularity of virtual type definition: ";
+var89 = standard___standard__NativeString___to_s_with_length(var88, 47l);
+var87 = var89;
+varonce86 = var87;
 }
-{
-var7 = ((val* (*)(val* self))(var_nvisibility->class->vft[COLOR_nit__modelbuilder_base__AVisibility__mvisibility]))(var_nvisibility) /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/;
+((struct instance_standard__NativeArray*)var85)->values[0]=var87;
+if (likely(varonce90!=NULL)) {
+var91 = varonce90;
+} else {
+var92 = " -> ";
+var93 = standard___standard__NativeString___to_s_with_length(var92, 4l);
+var91 = var93;
+varonce90 = var91;
 }
-var_mvisibility = var7;
-{
-{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
-var11 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
-if (unlikely(var11 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+((struct instance_standard__NativeArray*)var85)->values[2]=var91;
+if (likely(varonce94!=NULL)) {
+var95 = varonce94;
+} else {
+var96 = " <-> ";
+var97 = standard___standard__NativeString___to_s_with_length(var96, 5l);
+var95 = var97;
+varonce94 = var95;
 }
-var9 = var11;
-RET_LABEL10:(void)0;
+((struct instance_standard__NativeArray*)var85)->values[4]=var95;
+if (likely(varonce98!=NULL)) {
+var99 = varonce98;
+} else {
+var100 = ".";
+var101 = standard___standard__NativeString___to_s_with_length(var100, 1l);
+var99 = var101;
+varonce98 = var99;
 }
+((struct instance_standard__NativeArray*)var85)->values[6]=var99;
+} else {
+var85 = varonce84;
+varonce84 = NULL;
 }
 {
-{ /* Inline kernel#Object#!= (var_mvisibility,var9) on <var_mvisibility:MVisibility> */
-var_other14 = var9;
+var102 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MVirtualType>*/
+}
+((struct instance_standard__NativeArray*)var85)->values[1]=var102;
 {
-var15 = ((short int (*)(val* self, val* p0))(var_mvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mvisibility, var_other14) /* == on <var_mvisibility:MVisibility>*/;
+var103 = ((val*(*)(val* self))(var_next61->class->vft[COLOR_standard__string__Object__to_s]))(var_next61); /* to_s on <var_next61:MType>*/
 }
-var16 = !var15;
-var12 = var16;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+((struct instance_standard__NativeArray*)var85)->values[3]=var103;
+{
+var104 = ((val*(*)(val* self))(var_t->class->vft[COLOR_standard__string__Object__to_s]))(var_t); /* to_s on <var_t:MType>*/
 }
+((struct instance_standard__NativeArray*)var85)->values[5]=var104;
+{
+var105 = ((val*(*)(val* self))(var85->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var85); /* native_to_s on <var85:NativeArray[String]>*/
 }
-var_ = var12;
-if (var12){
+varonce84 = var85;
 {
-var17 = nit__model_base___standard__Object___public_visibility(self);
+nit___nit__ModelBuilder___error(self, var_node, var105); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
 }
+}
+var = 0;
+goto RET_LABEL;
+} else {
 {
-{ /* Inline kernel#Object#!= (var_mvisibility,var17) on <var_mvisibility:MVisibility> */
-var_other14 = var17;
+poset___poset__POSet___add_edge(var_poset, var_t, var_next61); /* Direct call poset#POSet#add_edge on <var_poset:POSet[MType]>*/
+}
 {
-var20 = ((short int (*)(val* self, val* p0))(var_mvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mvisibility, var_other14) /* == on <var_mvisibility:MVisibility>*/;
+standard___standard__Sequence___SimpleCollection__add(var_todo, var_next61); /* Direct call abstract_collection#Sequence#add on <var_todo:List[MType]>*/
 }
-var21 = !var20;
-var18 = var21;
-goto RET_LABEL19;
-RET_LABEL19:(void)0;
 }
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_58); /* Direct call array#ArrayIterator#next on <var_58:ArrayIterator[MType]>*/
 }
-var8 = var18;
 } else {
-var8 = var_;
+goto BREAK_label106;
 }
-if (var8){
-if (varonce) {
-var22 = varonce;
-} else {
-var23 = "Error: redefinition changed the visibility from a ";
-var24 = 50;
-var25 = standard___standard__NativeString___to_s_with_length(var23, var24);
-var22 = var25;
-varonce = var22;
 }
+BREAK_label106: (void)0;
 {
-{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
-var28 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
-if (unlikely(var28 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_58); /* Direct call array#ArrayIterator#finish on <var_58:ArrayIterator[MType]>*/
 }
-var26 = var28;
-RET_LABEL27:(void)0;
+} else {
+goto BREAK_label107;
 }
+BREAK_label: (void)0;
 }
-if (varonce29) {
-var30 = varonce29;
-} else {
-var31 = " to a ";
-var32 = 6;
-var33 = standard___standard__NativeString___to_s_with_length(var31, var32);
-var30 = var33;
-varonce29 = var30;
+BREAK_label107: (void)0;
+var = 1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
-var34 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var34 = array_instance Array[Object] */
-var35 = 4;
-var36 = NEW_standard__NativeArray(var35, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var36)->values[0] = (val*) var22;
-((struct instance_standard__NativeArray*)var36)->values[1] = (val*) var26;
-((struct instance_standard__NativeArray*)var36)->values[2] = (val*) var30;
-((struct instance_standard__NativeArray*)var36)->values[3] = (val*) var_mvisibility;
-{
-((void (*)(val* self, val* p0, long p1))(var34->class->vft[COLOR_standard__array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
+/* method modelize_property#MPropDef#has_supercall for (self: MPropDef): Bool */
+short int nit__modelize_property___MPropDef___has_supercall(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s; /* _has_supercall on <self:MPropDef> */
+var = var1;
+RET_LABEL:;
+return var;
 }
+/* method modelize_property#MPropDef#has_supercall= for (self: MPropDef, Bool) */
+void nit__modelize_property___MPropDef___has_supercall_61d(val* self, short int p0) {
+self->attrs[COLOR_nit__modelize_property__MPropDef___has_supercall].s = p0; /* _has_supercall on <self:MPropDef> */
+RET_LABEL:;
 }
-{
-var37 = ((val* (*)(val* self))(var34->class->vft[COLOR_standard__string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
+/* method modelize_property#AClassdef#build_properties_is_done for (self: AClassdef): Bool */
+short int nit__modelize_property___AClassdef___build_properties_is_done(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_nit__modelize_property__AClassdef___build_properties_is_done].s; /* _build_properties_is_done on <self:AClassdef> */
+var = var1;
+RET_LABEL:;
+return var;
 }
-{
-nit___nit__ModelBuilder___error(var_modelbuilder, var_nvisibility, var37); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+/* method modelize_property#AClassdef#build_properties_is_done= for (self: AClassdef, Bool) */
+void nit__modelize_property___AClassdef___build_properties_is_done_61d(val* self, short int p0) {
+self->attrs[COLOR_nit__modelize_property__AClassdef___build_properties_is_done].s = p0; /* _build_properties_is_done on <self:AClassdef> */
+RET_LABEL:;
 }
-} else {
+/* method modelize_property#AClassdef#mfree_init for (self: AClassdef): nullable MMethodDef */
+val* nit__modelize_property___AClassdef___mfree_init(val* self) {
+val* var /* : nullable MMethodDef */;
+val* var1 /* : nullable MMethodDef */;
+var1 = self->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val; /* _mfree_init on <self:AClassdef> */
+var = var1;
+RET_LABEL:;
+return var;
 }
+/* method modelize_property#AClassdef#mfree_init= for (self: AClassdef, nullable MMethodDef) */
+void nit__modelize_property___AClassdef___mfree_init_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__modelize_property__AClassdef___mfree_init].val = p0; /* _mfree_init on <self:AClassdef> */
 RET_LABEL:;
 }
-/* method modelize_property#APropdef#check_redef_keyword for (self: APropdef, ModelBuilder, MClassDef, nullable Token, Bool, MProperty): Bool */
-short int nit__modelize_property___APropdef___check_redef_keyword(val* self, val* p0, val* p1, val* p2, short int p3, val* p4) {
-short int var /* : Bool */;
-val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var_kwredef /* var kwredef: nullable Token */;
-short int var_need_redef /* var need_redef: Bool */;
-val* var_mprop /* var mprop: MProperty */;
+/* method modelize_property#MClass#root_init for (self: MClass): nullable MMethodDef */
+val* nit__modelize_property___MClass___root_init(val* self) {
+val* var /* : nullable MMethodDef */;
+val* var1 /* : nullable MMethodDef */;
+var1 = self->attrs[COLOR_nit__modelize_property__MClass___root_init].val; /* _root_init on <self:MClass> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MClass#root_init= for (self: MClass, nullable MMethodDef) */
+void nit__modelize_property___MClass___root_init_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__modelize_property__MClass___root_init].val = p0; /* _root_init on <self:MClass> */
+RET_LABEL:;
+}
+/* method modelize_property#MClassDef#mprop2npropdef for (self: MClassDef): Map[MProperty, APropdef] */
+val* nit__modelize_property___MClassDef___mprop2npropdef(val* self) {
+val* var /* : Map[MProperty, APropdef] */;
 val* var1 /* : Map[MProperty, APropdef] */;
-val* var3 /* : Map[MProperty, APropdef] */;
-short int var4 /* : Bool */;
+var1 = self->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <self:MClassDef> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 505);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MClassDef#build_self_type for (self: MClassDef, ModelBuilder, AClassdef) */
+void nit__modelize_property___MClassDef___build_self_type(val* self, val* p0, val* p1) {
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_nclassdef /* var nclassdef: AClassdef */;
+short int var /* : Bool */;
+short int var1 /* : Bool */;
 static val* varonce;
-val* var5 /* : String */;
-char* var6 /* : NativeString */;
-long var7 /* : Int */;
-val* var8 /* : FlatString */;
-static val* varonce9;
-val* var10 /* : String */;
-char* var11 /* : NativeString */;
-long var12 /* : Int */;
-val* var13 /* : FlatString */;
-val* var14 /* : MClass */;
-val* var16 /* : MClass */;
-static val* varonce17;
-val* var18 /* : String */;
-char* var19 /* : NativeString */;
-long var20 /* : Int */;
-val* var21 /* : FlatString */;
-val* var22 /* : Map[MProperty, APropdef] */;
-val* var24 /* : Map[MProperty, APropdef] */;
-val* var25 /* : nullable Object */;
-val* var26 /* : Location */;
-val* var28 /* : Location */;
-long var29 /* : Int */;
-long var31 /* : Int */;
-static val* varonce32;
-val* var33 /* : String */;
-char* var34 /* : NativeString */;
-long var35 /* : Int */;
-val* var36 /* : FlatString */;
-val* var37 /* : Array[Object] */;
-long var38 /* : Int */;
-val* var39 /* : NativeArray[Object] */;
-val* var40 /* : Object */;
-val* var41 /* : String */;
-short int var42 /* : Bool */;
-short int var43 /* : Bool */;
-short int var44 /* : Bool */;
+val* var2 /* : String */;
+char* var3 /* : NativeString */;
+val* var4 /* : FlatString */;
+val* var_name /* var name: String */;
+val* var5 /* : nullable MProperty */;
+val* var_mprop /* var mprop: nullable MProperty */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var9 /* : Bool */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
 int cltype;
 int idtype;
-short int var_ /* var : Bool */;
-short int var45 /* : Bool */;
-short int var47 /* : Bool */;
-val* var48 /* : nullable ANode */;
-val* var50 /* : nullable ANode */;
-short int var51 /* : Bool */;
-int cltype52;
-int idtype53;
-short int var54 /* : Bool */;
+short int var13 /* : Bool */;
+val* var14 /* : MPropDef */;
+val* var16 /* : MPropDef */;
+val* var_intro /* var intro: MVirtualTypeDef */;
+val* var17 /* : MClassDef */;
+val* var19 /* : MClassDef */;
+val* var_intro_mclassdef /* var intro_mclassdef: MClassDef */;
+short int var20 /* : Bool */;
+short int var22 /* : Bool */;
+short int var24 /* : Bool */;
+val* var25 /* : HashMap[MPropDef, APropdef] */;
+val* var27 /* : HashMap[MPropDef, APropdef] */;
+val* var28 /* : nullable Object */;
+val* var_nintro /* var nintro: APropdef */;
+val* var29 /* : MClass */;
+val* var31 /* : MClass */;
+val* var32 /* : String */;
+val* var34 /* : String */;
+static val* varonce35;
+val* var36 /* : String */;
+char* var37 /* : NativeString */;
+val* var38 /* : FlatString */;
+short int var39 /* : Bool */;
+val* var_other41 /* var other: nullable Object */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+static val* varonce44;
+val* var45 /* : String */;
+char* var46 /* : NativeString */;
+val* var47 /* : FlatString */;
+val* var48 /* : MVisibility */;
+val* var50 /* : MVisibility */;
+val* var51 /* : Sys */;
+val* var52 /* : MVisibility */;
+short int var53 /* : Bool */;
+short int var55 /* : Bool */;
 short int var56 /* : Bool */;
-short int var57 /* : Bool */;
-short int var58 /* : Bool */;
-short int var60 /* : Bool */;
-static val* varonce61;
-val* var62 /* : String */;
-char* var63 /* : NativeString */;
-long var64 /* : Int */;
-val* var65 /* : FlatString */;
-static val* varonce66;
-val* var67 /* : String */;
-char* var68 /* : NativeString */;
-long var69 /* : Int */;
-val* var70 /* : FlatString */;
-val* var71 /* : Array[Object] */;
-long var72 /* : Int */;
-val* var73 /* : NativeArray[Object] */;
-val* var74 /* : String */;
-static val* varonce75;
-val* var76 /* : String */;
-char* var77 /* : NativeString */;
-long var78 /* : Int */;
-val* var79 /* : FlatString */;
-static val* varonce80;
-val* var81 /* : String */;
-char* var82 /* : NativeString */;
-long var83 /* : Int */;
-val* var84 /* : FlatString */;
-val* var85 /* : Array[Object] */;
-long var86 /* : Int */;
-val* var87 /* : NativeArray[Object] */;
-val* var88 /* : String */;
-short int var89 /* : Bool */;
-short int var90 /* : Bool */;
-short int var91 /* : Bool */;
-int cltype92;
-int idtype93;
-short int var_94 /* var : Bool */;
-short int var95 /* : Bool */;
-short int var97 /* : Bool */;
-short int var98 /* : Bool */;
-val* var99 /* : null */;
-short int var100 /* : Bool */;
-short int var101 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var103 /* : Bool */;
-short int var105 /* : Bool */;
-static val* varonce106;
-val* var107 /* : String */;
-char* var108 /* : NativeString */;
-long var109 /* : Int */;
-val* var110 /* : FlatString */;
-val* var111 /* : MClass */;
-val* var113 /* : MClass */;
-static val* varonce114;
-val* var115 /* : String */;
-char* var116 /* : NativeString */;
-long var117 /* : Int */;
-val* var118 /* : FlatString */;
-val* var119 /* : String */;
-val* var121 /* : String */;
-static val* varonce122;
-val* var123 /* : String */;
-char* var124 /* : NativeString */;
-long var125 /* : Int */;
-val* var126 /* : FlatString */;
-val* var127 /* : Array[Object] */;
-long var128 /* : Int */;
-val* var129 /* : NativeArray[Object] */;
-val* var130 /* : String */;
-short int var131 /* : Bool */;
-short int var132 /* : Bool */;
-val* var133 /* : MClassDef */;
-val* var135 /* : MClassDef */;
-val* var136 /* : MModule */;
-val* var138 /* : MModule */;
-val* var139 /* : nullable MGroup */;
-val* var141 /* : nullable MGroup */;
-val* var142 /* : null */;
-short int var143 /* : Bool */;
-short int var144 /* : Bool */;
-val* var_other146 /* var other: nullable Object */;
-short int var147 /* : Bool */;
-short int var148 /* : Bool */;
-short int var_149 /* var : Bool */;
-val* var150 /* : MVisibility */;
-val* var152 /* : MVisibility */;
-val* var153 /* : MVisibility */;
-short int var154 /* : Bool */;
-val* var155 /* : Model */;
-val* var157 /* : Model */;
-val* var158 /* : String */;
-val* var160 /* : String */;
-val* var161 /* : nullable Array[MProperty] */;
-val* var_others /* var others: nullable Array[MProperty] */;
-val* var162 /* : null */;
-short int var163 /* : Bool */;
-short int var164 /* : Bool */;
-short int var166 /* : Bool */;
-short int var167 /* : Bool */;
-val* var_168 /* var : Array[MProperty] */;
-val* var169 /* : ArrayIterator[nullable Object] */;
-val* var_170 /* var : ArrayIterator[MProperty] */;
-short int var171 /* : Bool */;
-val* var172 /* : nullable Object */;
-val* var_other173 /* var other: MProperty */;
-short int var174 /* : Bool */;
-short int var175 /* : Bool */;
-short int var176 /* : Bool */;
-short int var177 /* : Bool */;
-short int var178 /* : Bool */;
-short int var180 /* : Bool */;
-short int var181 /* : Bool */;
-short int var_182 /* var : Bool */;
-val* var183 /* : MClassDef */;
-val* var185 /* : MClassDef */;
-val* var186 /* : MModule */;
-val* var188 /* : MModule */;
-val* var189 /* : nullable MGroup */;
-val* var191 /* : nullable MGroup */;
-val* var192 /* : null */;
-short int var193 /* : Bool */;
-short int var194 /* : Bool */;
-short int var196 /* : Bool */;
-short int var197 /* : Bool */;
-short int var_198 /* var : Bool */;
-val* var199 /* : MClassDef */;
-val* var201 /* : MClassDef */;
-val* var202 /* : MModule */;
-val* var204 /* : MModule */;
-val* var205 /* : nullable MGroup */;
-val* var207 /* : nullable MGroup */;
-val* var208 /* : MProject */;
-val* var210 /* : MProject */;
-val* var211 /* : MClassDef */;
-val* var213 /* : MClassDef */;
-val* var214 /* : MModule */;
-val* var216 /* : MModule */;
-val* var217 /* : nullable MGroup */;
-val* var219 /* : nullable MGroup */;
-val* var220 /* : MProject */;
-val* var222 /* : MProject */;
-short int var223 /* : Bool */;
-short int var225 /* : Bool */;
-short int var227 /* : Bool */;
-short int var_228 /* var : Bool */;
-val* var229 /* : MClassDef */;
-val* var231 /* : MClassDef */;
-val* var232 /* : MClass */;
-val* var234 /* : MClass */;
-val* var235 /* : String */;
-val* var237 /* : String */;
-val* var238 /* : MClassDef */;
-val* var240 /* : MClassDef */;
-val* var241 /* : MClass */;
-val* var243 /* : MClass */;
-val* var244 /* : String */;
-val* var246 /* : String */;
-short int var247 /* : Bool */;
-short int var_248 /* var : Bool */;
-val* var249 /* : MVisibility */;
-val* var251 /* : MVisibility */;
-val* var252 /* : MVisibility */;
-short int var253 /* : Bool */;
-static val* varonce254;
-val* var255 /* : String */;
-char* var256 /* : NativeString */;
-long var257 /* : Int */;
-val* var258 /* : FlatString */;
-static val* varonce259;
-val* var260 /* : String */;
-char* var261 /* : NativeString */;
-long var262 /* : Int */;
-val* var263 /* : FlatString */;
-val* var264 /* : String */;
-static val* varonce265;
-val* var266 /* : String */;
-char* var267 /* : NativeString */;
-long var268 /* : Int */;
-val* var269 /* : FlatString */;
-val* var270 /* : MClassDef */;
-val* var272 /* : MClassDef */;
-val* var273 /* : MModule */;
-val* var275 /* : MModule */;
-static val* varonce276;
-val* var277 /* : String */;
-char* var278 /* : NativeString */;
-long var279 /* : Int */;
-val* var280 /* : FlatString */;
-val* var281 /* : MClassDef */;
-val* var283 /* : MClassDef */;
-val* var284 /* : MClass */;
-val* var286 /* : MClass */;
-val* var287 /* : String */;
-val* var289 /* : String */;
-static val* varonce290;
-val* var291 /* : String */;
-char* var292 /* : NativeString */;
-long var293 /* : Int */;
-val* var294 /* : FlatString */;
-val* var295 /* : Array[Object] */;
-long var296 /* : Int */;
-val* var297 /* : NativeArray[Object] */;
-val* var298 /* : String */;
-short int var300 /* : Bool */;
-static val* varonce301;
-val* var302 /* : String */;
-char* var303 /* : NativeString */;
-long var304 /* : Int */;
-val* var305 /* : FlatString */;
-val* var306 /* : MClass */;
-val* var308 /* : MClass */;
-static val* varonce309;
-val* var310 /* : String */;
-char* var311 /* : NativeString */;
-long var312 /* : Int */;
-val* var313 /* : FlatString */;
-val* var314 /* : String */;
-val* var316 /* : String */;
-static val* varonce317;
-val* var318 /* : String */;
-char* var319 /* : NativeString */;
-long var320 /* : Int */;
-val* var321 /* : FlatString */;
-val* var322 /* : Array[Object] */;
-long var323 /* : Int */;
-val* var324 /* : NativeArray[Object] */;
-val* var325 /* : String */;
-short int var326 /* : Bool */;
-short int var327 /* : Bool */;
+static val* varonce57;
+val* var58 /* : String */;
+char* var59 /* : NativeString */;
+val* var60 /* : FlatString */;
+short int var61 /* : Bool */;
+short int var63 /* : Bool */;
+static val* varonce64;
+val* var65 /* : String */;
+char* var66 /* : NativeString */;
+val* var67 /* : FlatString */;
+val* var68 /* : MVirtualTypeDef */;
+val* var69 /* : Location */;
+val* var71 /* : Location */;
+val* var_mpropdef /* var mpropdef: MVirtualTypeDef */;
+val* var72 /* : MClass */;
+val* var74 /* : MClass */;
+val* var75 /* : MClassType */;
+val* var77 /* : MClassType */;
 var_modelbuilder = p0;
-var_mclassdef = p1;
-var_kwredef = p2;
-var_need_redef = p3;
-var_mprop = p4;
+var_nclassdef = p1;
 {
-{ /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
-var3 = var_mclassdef->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 352);
-show_backtrace(1);
+var = nit___nit__MClassDef___is_intro(self);
 }
-var1 = var3;
-RET_LABEL2:(void)0;
+var1 = !var;
+if (var1){
+goto RET_LABEL;
+} else {
 }
+if (likely(varonce!=NULL)) {
+var2 = varonce;
+} else {
+var3 = "SELF";
+var4 = standard___standard__NativeString___to_s_with_length(var3, 4l);
+var2 = var4;
+varonce = var2;
 }
+var_name = var2;
 {
-var4 = standard___standard__MapRead___has_key(var1, var_mprop);
-}
-if (var4){
-if (varonce) {
-var5 = varonce;
-} else {
-var6 = "Error: A property ";
-var7 = 18;
-var8 = standard___standard__NativeString___to_s_with_length(var6, var7);
-var5 = var8;
-varonce = var5;
+var5 = nit___nit__ModelBuilder___try_get_mproperty_by_name(var_modelbuilder, var_nclassdef, self, var_name);
 }
-if (varonce9) {
-var10 = varonce9;
+var_mprop = var5;
+if (var_mprop == NULL) {
+var6 = 1; /* is null */
 } else {
-var11 = " is already defined in class ";
-var12 = 29;
-var13 = standard___standard__NativeString___to_s_with_length(var11, var12);
-var10 = var13;
-varonce9 = var10;
+var6 = 0; /* arg is null but recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#== (var_mprop,((val*)NULL)) on <var_mprop:nullable MProperty> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var16 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var16 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+{ /* Inline kernel#Object#is_same_instance (var_mprop,var_other) on <var_mprop:nullable MProperty(MProperty)> */
+var11 = var_mprop == var_other;
+var9 = var11;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
 }
-var14 = var16;
-RET_LABEL15:(void)0;
 }
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
-if (varonce17) {
-var18 = varonce17;
-} else {
-var19 = " at line ";
-var20 = 9;
-var21 = standard___standard__NativeString___to_s_with_length(var19, var20);
-var18 = var21;
-varonce17 = var18;
-}
-{
-{ /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
-var24 = var_mclassdef->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
-if (unlikely(var24 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 352);
-show_backtrace(1);
+var6 = var7;
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+if (var6){
+goto RET_LABEL;
+} else {
 }
+/* <var_mprop:nullable MProperty(MProperty)> isa MVirtualTypeProp */
+cltype = type_nit__MVirtualTypeProp.color;
+idtype = type_nit__MVirtualTypeProp.id;
+if(cltype >= var_mprop->type->table_size) {
+var12 = 0;
+} else {
+var12 = var_mprop->type->type_table[cltype] == idtype;
 }
-{
-var25 = ((val* (*)(val* self, val* p0))(var22->class->vft[COLOR_standard__abstract_collection__MapRead___91d_93d]))(var22, var_mprop) /* [] on <var22:Map[MProperty, APropdef]>*/;
+var13 = !var12;
+if (var13){
+goto RET_LABEL;
+} else {
 }
 {
-{ /* Inline parser_nodes#ANode#location (var25) on <var25:nullable Object(APropdef)> */
-var28 = var25->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var25:nullable Object(APropdef)> */
-if (unlikely(var28 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23);
-show_backtrace(1);
+{ /* Inline model#MProperty#intro (var_mprop) on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
+var16 = var_mprop->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
-var26 = var28;
-RET_LABEL27:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
+var_intro = var14;
 {
-{ /* Inline location#Location#line_start (var26) on <var26:Location> */
-var31 = var26->attrs[COLOR_nit__location__Location___line_start].l; /* _line_start on <var26:Location> */
-var29 = var31;
-RET_LABEL30:(void)0;
-}
-}
-if (varonce32) {
-var33 = varonce32;
-} else {
-var34 = ".";
-var35 = 1;
-var36 = standard___standard__NativeString___to_s_with_length(var34, var35);
-var33 = var36;
-varonce32 = var33;
+{ /* Inline model#MPropDef#mclassdef (var_intro) on <var_intro:MVirtualTypeDef> */
+var19 = var_intro->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_intro:MVirtualTypeDef> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
+fatal_exit(1);
 }
-var37 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var37 = array_instance Array[Object] */
-var38 = 7;
-var39 = NEW_standard__NativeArray(var38, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var39)->values[0] = (val*) var5;
-((struct instance_standard__NativeArray*)var39)->values[1] = (val*) var_mprop;
-((struct instance_standard__NativeArray*)var39)->values[2] = (val*) var10;
-((struct instance_standard__NativeArray*)var39)->values[3] = (val*) var14;
-((struct instance_standard__NativeArray*)var39)->values[4] = (val*) var18;
-var40 = BOX_standard__Int(var29); /* autobox from Int to Object */
-((struct instance_standard__NativeArray*)var39)->values[5] = (val*) var40;
-((struct instance_standard__NativeArray*)var39)->values[6] = (val*) var33;
-{
-((void (*)(val* self, val* p0, long p1))(var37->class->vft[COLOR_standard__array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
+var_intro_mclassdef = var17;
 {
-var41 = ((val* (*)(val* self))(var37->class->vft[COLOR_standard__string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
-}
+{ /* Inline kernel#Object#== (var_intro_mclassdef,self) on <var_intro_mclassdef:MClassDef> */
+var_other = self;
 {
-nit___nit__ModelBuilder___error(var_modelbuilder, self, var41); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
-}
-var42 = 0;
-var = var42;
-goto RET_LABEL;
-} else {
+{ /* Inline kernel#Object#is_same_instance (var_intro_mclassdef,var_other) on <var_intro_mclassdef:MClassDef> */
+var24 = var_intro_mclassdef == var_other;
+var22 = var24;
+goto RET_LABEL23;
+RET_LABEL23:(void)0;
 }
-/* <var_mprop:MProperty> isa MMethod */
-cltype = type_nit__MMethod.color;
-idtype = type_nit__MMethod.id;
-if(cltype >= var_mprop->type->table_size) {
-var44 = 0;
-} else {
-var44 = var_mprop->type->type_table[cltype] == idtype;
 }
-var_ = var44;
-if (var44){
-{
-{ /* Inline model#MMethod#is_toplevel (var_mprop) on <var_mprop:MProperty(MMethod)> */
-var47 = var_mprop->attrs[COLOR_nit__model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mprop:MProperty(MMethod)> */
-var45 = var47;
-RET_LABEL46:(void)0;
+var20 = var22;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
 }
 }
+if (var20){
 {
-{ /* Inline parser_nodes#ANode#parent (self) on <self:APropdef> */
-var50 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <self:APropdef> */
-var48 = var50;
-RET_LABEL49:(void)0;
+{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
+var27 = var_modelbuilder->attrs[COLOR_nit__modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
+if (unlikely(var27 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 40);
+fatal_exit(1);
 }
+var25 = var27;
+RET_LABEL26:(void)0;
 }
-/* <var48:nullable ANode> isa ATopClassdef */
-cltype52 = type_nit__ATopClassdef.color;
-idtype53 = type_nit__ATopClassdef.id;
-if(var48 == NULL) {
-var51 = 0;
-} else {
-if(cltype52 >= var48->type->table_size) {
-var51 = 0;
-} else {
-var51 = var48->type->type_table[cltype52] == idtype53;
 }
+{
+var28 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var25, var_intro);
 }
+var_nintro = var28;
 {
-{ /* Inline kernel#Bool#!= (var45,var51) on <var45:Bool> */
-var56 = var45 == var51;
-var57 = !var56;
-var54 = var57;
-goto RET_LABEL55;
-RET_LABEL55:(void)0;
+{ /* Inline model#MClassDef#mclass (var_intro_mclassdef) on <var_intro_mclassdef:MClassDef> */
+var31 = var_intro_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_intro_mclassdef:MClassDef> */
+if (unlikely(var31 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
+var29 = var31;
+RET_LABEL30:(void)0;
 }
-var43 = var54;
-} else {
-var43 = var_;
 }
-if (var43){
 {
-{ /* Inline model#MMethod#is_toplevel (var_mprop) on <var_mprop:MProperty(MMethod)> */
-var60 = var_mprop->attrs[COLOR_nit__model__MMethod___is_toplevel].s; /* _is_toplevel on <var_mprop:MProperty(MMethod)> */
-var58 = var60;
-RET_LABEL59:(void)0;
+{ /* Inline model#MClass#name (var29) on <var29:MClass> */
+var34 = var29->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var29:MClass> */
+if (unlikely(var34 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
+fatal_exit(1);
 }
+var32 = var34;
+RET_LABEL33:(void)0;
 }
-if (var58){
-if (varonce61) {
-var62 = varonce61;
-} else {
-var63 = "Error: ";
-var64 = 7;
-var65 = standard___standard__NativeString___to_s_with_length(var63, var64);
-var62 = var65;
-varonce61 = var62;
 }
-if (varonce66) {
-var67 = varonce66;
+if (likely(varonce35!=NULL)) {
+var36 = varonce35;
 } else {
-var68 = " is a top level method.";
-var69 = 23;
-var70 = standard___standard__NativeString___to_s_with_length(var68, var69);
-var67 = var70;
-varonce66 = var67;
+var37 = "Object";
+var38 = standard___standard__NativeString___to_s_with_length(var37, 6l);
+var36 = var38;
+varonce35 = var36;
 }
-var71 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var71 = array_instance Array[Object] */
-var72 = 3;
-var73 = NEW_standard__NativeArray(var72, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var73)->values[0] = (val*) var62;
-((struct instance_standard__NativeArray*)var73)->values[1] = (val*) var_mprop;
-((struct instance_standard__NativeArray*)var73)->values[2] = (val*) var67;
 {
-((void (*)(val* self, val* p0, long p1))(var71->class->vft[COLOR_standard__array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
-}
-}
+{ /* Inline kernel#Object#!= (var32,var36) on <var32:String> */
+var_other41 = var36;
 {
-var74 = ((val* (*)(val* self))(var71->class->vft[COLOR_standard__string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
+var42 = ((short int(*)(val* self, val* p0))(var32->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var32, var_other41); /* == on <var32:String>*/
 }
-{
-nit___nit__ModelBuilder___error(var_modelbuilder, self, var74); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+var43 = !var42;
+var39 = var43;
+goto RET_LABEL40;
+RET_LABEL40:(void)0;
 }
-} else {
-if (varonce75) {
-var76 = varonce75;
-} else {
-var77 = "Error: ";
-var78 = 7;
-var79 = standard___standard__NativeString___to_s_with_length(var77, var78);
-var76 = var79;
-varonce75 = var76;
 }
-if (varonce80) {
-var81 = varonce80;
+if (var39){
+if (likely(varonce44!=NULL)) {
+var45 = varonce44;
 } else {
-var82 = " is not a top level method.";
-var83 = 27;
-var84 = standard___standard__NativeString___to_s_with_length(var82, var83);
-var81 = var84;
-varonce80 = var81;
-}
-var85 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var85 = array_instance Array[Object] */
-var86 = 3;
-var87 = NEW_standard__NativeArray(var86, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var87)->values[0] = (val*) var76;
-((struct instance_standard__NativeArray*)var87)->values[1] = (val*) var_mprop;
-((struct instance_standard__NativeArray*)var87)->values[2] = (val*) var81;
-{
-((void (*)(val* self, val* p0, long p1))(var85->class->vft[COLOR_standard__array__Array__with_native]))(var85, var87, var86) /* with_native on <var85:Array[Object]>*/;
-}
-}
-{
-var88 = ((val* (*)(val* self))(var85->class->vft[COLOR_standard__string__Object__to_s]))(var85) /* to_s on <var85:Array[Object]>*/;
+var46 = "Error: the virtual type `SELF` must be declared in `Object`.";
+var47 = standard___standard__NativeString___to_s_with_length(var46, 60l);
+var45 = var47;
+varonce44 = var45;
 }
 {
-nit___nit__ModelBuilder___error(var_modelbuilder, self, var88); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
-}
-}
-var89 = 0;
-var = var89;
-goto RET_LABEL;
-} else {
+nit___nit__ModelBuilder___error(var_modelbuilder, var_nintro, var45); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-/* <var_mprop:MProperty> isa MMethod */
-cltype92 = type_nit__MMethod.color;
-idtype93 = type_nit__MMethod.id;
-if(cltype92 >= var_mprop->type->table_size) {
-var91 = 0;
 } else {
-var91 = var_mprop->type->type_table[cltype92] == idtype93;
 }
-var_94 = var91;
-if (var91){
 {
-{ /* Inline model#MMethod#is_root_init (var_mprop) on <var_mprop:MProperty(MMethod)> */
-var97 = var_mprop->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var_mprop:MProperty(MMethod)> */
-var95 = var97;
-RET_LABEL96:(void)0;
-}
-}
-var90 = var95;
-} else {
-var90 = var_94;
+{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
+var50 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:nullable MProperty(MVirtualTypeProp)> */
+if (unlikely(var50 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
-if (var90){
-var98 = 1;
-var = var98;
-goto RET_LABEL;
-} else {
+var48 = var50;
+RET_LABEL49:(void)0;
 }
-var99 = NULL;
-if (var_kwredef == NULL) {
-var100 = 1; /* is null */
-} else {
-var100 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var_kwredef,var99) on <var_kwredef:nullable Token> */
-var_other = var99;
+var51 = glob_sys;
 {
-{ /* Inline kernel#Object#is_same_instance (var_kwredef,var_other) on <var_kwredef:nullable Token(Token)> */
-var105 = var_kwredef == var_other;
-var103 = var105;
-goto RET_LABEL104;
-RET_LABEL104:(void)0;
+var52 = nit__model_base___standard__Sys___public_visibility(var51);
 }
+{
+{ /* Inline kernel#Object#!= (var48,var52) on <var48:MVisibility> */
+var_other41 = var52;
+{
+var55 = ((short int(*)(val* self, val* p0))(var48->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var48, var_other41); /* == on <var48:MVisibility>*/
 }
-var101 = var103;
-goto RET_LABEL102;
-RET_LABEL102:(void)0;
+var56 = !var55;
+var53 = var56;
+goto RET_LABEL54;
+RET_LABEL54:(void)0;
 }
-var100 = var101;
 }
-if (var100){
-if (var_need_redef){
-if (varonce106) {
-var107 = varonce106;
+if (var53){
+if (likely(varonce57!=NULL)) {
+var58 = varonce57;
 } else {
-var108 = "Redef error: ";
-var109 = 13;
-var110 = standard___standard__NativeString___to_s_with_length(var108, var109);
-var107 = var110;
-varonce106 = var107;
+var59 = "Error: the virtual type `SELF` must be public.";
+var60 = standard___standard__NativeString___to_s_with_length(var59, 46l);
+var58 = var60;
+varonce57 = var58;
 }
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var113 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var113 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
-}
-var111 = var113;
-RET_LABEL112:(void)0;
-}
+nit___nit__ModelBuilder___error(var_modelbuilder, var_nintro, var58); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-if (varonce114) {
-var115 = varonce114;
 } else {
-var116 = "::";
-var117 = 2;
-var118 = standard___standard__NativeString___to_s_with_length(var116, var117);
-var115 = var118;
-varonce114 = var115;
 }
 {
-{ /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
-var121 = var_mprop->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
-if (unlikely(var121 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
-show_backtrace(1);
-}
-var119 = var121;
-RET_LABEL120:(void)0;
+{ /* Inline model#MVirtualTypeDef#is_fixed (var_intro) on <var_intro:MVirtualTypeDef> */
+var63 = var_intro->attrs[COLOR_nit__model__MVirtualTypeDef___is_fixed].s; /* _is_fixed on <var_intro:MVirtualTypeDef> */
+var61 = var63;
+RET_LABEL62:(void)0;
 }
 }
-if (varonce122) {
-var123 = varonce122;
+if (var61){
+if (likely(varonce64!=NULL)) {
+var65 = varonce64;
 } else {
-var124 = " is an inherited property. To redefine it, add the redef keyword.";
-var125 = 65;
-var126 = standard___standard__NativeString___to_s_with_length(var124, var125);
-var123 = var126;
-varonce122 = var123;
-}
-var127 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var127 = array_instance Array[Object] */
-var128 = 5;
-var129 = NEW_standard__NativeArray(var128, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var129)->values[0] = (val*) var107;
-((struct instance_standard__NativeArray*)var129)->values[1] = (val*) var111;
-((struct instance_standard__NativeArray*)var129)->values[2] = (val*) var115;
-((struct instance_standard__NativeArray*)var129)->values[3] = (val*) var119;
-((struct instance_standard__NativeArray*)var129)->values[4] = (val*) var123;
-{
-((void (*)(val* self, val* p0, long p1))(var127->class->vft[COLOR_standard__array__Array__with_native]))(var127, var129, var128) /* with_native on <var127:Array[Object]>*/;
-}
+var66 = "Error: the virtual type `SELF` cannot be fixed.";
+var67 = standard___standard__NativeString___to_s_with_length(var66, 47l);
+var65 = var67;
+varonce64 = var65;
 }
 {
-var130 = ((val* (*)(val* self))(var127->class->vft[COLOR_standard__string__Object__to_s]))(var127) /* to_s on <var127:Array[Object]>*/;
+nit___nit__ModelBuilder___error(var_modelbuilder, var_nintro, var65); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-{
-nit___nit__ModelBuilder___error(var_modelbuilder, self, var130); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+} else {
 }
-var131 = 0;
-var = var131;
 goto RET_LABEL;
 } else {
 }
+var68 = NEW_nit__MVirtualTypeDef(&type_nit__MVirtualTypeDef);
 {
-{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty> */
-var135 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty> */
-if (unlikely(var135 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+{ /* Inline model#MClassDef#location (self) on <self:MClassDef> */
+var71 = self->attrs[COLOR_nit__model__MClassDef___location].val; /* _location on <self:MClassDef> */
+if (unlikely(var71 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 568);
+fatal_exit(1);
 }
-var133 = var135;
-RET_LABEL134:(void)0;
+var69 = var71;
+RET_LABEL70:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var133) on <var133:MClassDef> */
-var138 = var133->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var133:MClassDef> */
-if (unlikely(var138 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
-}
-var136 = var138;
-RET_LABEL137:(void)0;
-}
+((void(*)(val* self, val* p0))(var68->class->vft[COLOR_nit__model__MPropDef__mclassdef_61d]))(var68, self); /* mclassdef= on <var68:MVirtualTypeDef>*/
 }
 {
-{ /* Inline mmodule#MModule#mgroup (var136) on <var136:MModule> */
-var141 = var136->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var136:MModule> */
-var139 = var141;
-RET_LABEL140:(void)0;
+((void(*)(val* self, val* p0))(var68->class->vft[COLOR_nit__model__MPropDef__mproperty_61d]))(var68, var_mprop); /* mproperty= on <var68:MVirtualTypeDef>*/
 }
-}
-var142 = NULL;
-if (var139 == NULL) {
-var143 = 0; /* is null */
-} else {
-var143 = 1; /* arg is null and recv is not */
-}
-if (0) {
-{ /* Inline kernel#Object#!= (var139,var142) on <var139:nullable MGroup> */
-var_other146 = var142;
 {
-var147 = ((short int (*)(val* self, val* p0))(var139->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var139, var_other146) /* == on <var139:nullable MGroup(MGroup)>*/;
+((void(*)(val* self, val* p0))(var68->class->vft[COLOR_nit__model__MPropDef__location_61d]))(var68, var69); /* location= on <var68:MVirtualTypeDef>*/
 }
-var148 = !var147;
-var144 = var148;
-goto RET_LABEL145;
-RET_LABEL145:(void)0;
-}
-var143 = var144;
-}
-var_149 = var143;
-if (var143){
 {
-{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
-var152 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
-if (unlikely(var152 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
-}
-var150 = var152;
-RET_LABEL151:(void)0;
-}
+((void(*)(val* self))(var68->class->vft[COLOR_standard__kernel__Object__init]))(var68); /* init on <var68:MVirtualTypeDef>*/
 }
+var_mpropdef = var68;
 {
-var153 = nit__model_base___standard__Object___protected_visibility(self);
+{ /* Inline model#MClassDef#mclass (self) on <self:MClassDef> */
+var74 = self->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <self:MClassDef> */
+if (unlikely(var74 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
-{
-var154 = standard___standard__Comparable____62d_61d(var150, var153);
+var72 = var74;
+RET_LABEL73:(void)0;
 }
-var132 = var154;
-} else {
-var132 = var_149;
 }
-if (var132){
 {
-{ /* Inline modelbuilder_base#ModelBuilder#model (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
-var157 = var_modelbuilder->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <var_modelbuilder:ModelBuilder> */
-if (unlikely(var157 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
-show_backtrace(1);
+{ /* Inline model#MClass#mclass_type (var72) on <var72:MClass> */
+var77 = var72->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var72:MClass> */
+if (unlikely(var77 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
 }
-var155 = var157;
-RET_LABEL156:(void)0;
+var75 = var77;
+RET_LABEL76:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
-var160 = var_mprop->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
-if (unlikely(var160 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
-show_backtrace(1);
+{ /* Inline model#MVirtualTypeDef#bound= (var_mpropdef,var75) on <var_mpropdef:MVirtualTypeDef> */
+var_mpropdef->attrs[COLOR_nit__model__MVirtualTypeDef___bound].val = var75; /* _bound on <var_mpropdef:MVirtualTypeDef> */
+RET_LABEL78:(void)0;
 }
-var158 = var160;
-RET_LABEL159:(void)0;
 }
+RET_LABEL:;
 }
-{
-var161 = nit__model___Model___get_mproperties_by_name(var155, var158);
+/* method modelize_property#APropdef#mpropdef for (self: APropdef): nullable MPropDef */
+val* nit__modelize_property___APropdef___mpropdef(val* self) {
+val* var /* : nullable MPropDef */;
+val* var1 /* : nullable MPropDef */;
+var1 = self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val; /* _mpropdef on <self:APropdef> */
+var = var1;
+RET_LABEL:;
+return var;
 }
-var_others = var161;
-var162 = NULL;
-if (var_others == NULL) {
-var163 = 0; /* is null */
+/* method modelize_property#APropdef#mpropdef= for (self: APropdef, nullable MPropDef) */
+void nit__modelize_property___APropdef___mpropdef_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 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
+/* <p0:nullable MPropDef> isa nullable MPROPDEF */
+type_struct = self->type->resolution_table->types[COLOR_nullable__nit__modelize_property__APropdef__MPROPDEF];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(p0 == NULL) {
+var = 1;
+} else {
+if(cltype >= p0->type->table_size) {
+var = 0;
 } else {
-var163 = 1; /* arg is null and recv is not */
+var = p0->type->type_table[cltype] == idtype;
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_others,var162) on <var_others:nullable Array[MProperty]> */
-var_other146 = var162;
-{
-var166 = ((short int (*)(val* self, val* p0))(var_others->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_others, var_other146) /* == on <var_others:nullable Array[MProperty](Array[MProperty])>*/;
 }
-var167 = !var166;
-var164 = var167;
-goto RET_LABEL165;
-RET_LABEL165:(void)0;
+if (unlikely(!var)) {
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 558);
+fatal_exit(1);
 }
-var163 = var164;
+self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val = p0; /* _mpropdef on <self:APropdef> */
+RET_LABEL:;
 }
-if (var163){
-var_168 = var_others;
-{
-var169 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_168);
+/* method modelize_property#APropdef#build_property for (self: APropdef, ModelBuilder, MClassDef) */
+void nit__modelize_property___APropdef___build_property(val* self, val* p0, val* p1) {
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_mclassdef /* var mclassdef: MClassDef */;
+var_modelbuilder = p0;
+var_mclassdef = p1;
+RET_LABEL:;
 }
-var_170 = var169;
-for(;;) {
-{
-var171 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_170);
-}
-if (var171){
-{
-var172 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_170);
-}
-var_other173 = var172;
-{
-{ /* Inline kernel#Object#!= (var_other173,var_mprop) on <var_other173:MProperty> */
-var_other146 = var_mprop;
-{
-var180 = ((short int (*)(val* self, val* p0))(var_other173->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_other173, var_other146) /* == on <var_other173:MProperty>*/;
-}
-var181 = !var180;
-var178 = var181;
-goto RET_LABEL179;
-RET_LABEL179:(void)0;
-}
-}
-var_182 = var178;
-if (var178){
-{
-{ /* Inline model#MProperty#intro_mclassdef (var_other173) on <var_other173:MProperty> */
-var185 = var_other173->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other173:MProperty> */
-if (unlikely(var185 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
-}
-var183 = var185;
-RET_LABEL184:(void)0;
-}
-}
-{
-{ /* Inline model#MClassDef#mmodule (var183) on <var183:MClassDef> */
-var188 = var183->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var183:MClassDef> */
-if (unlikely(var188 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
-}
-var186 = var188;
-RET_LABEL187:(void)0;
+/* method modelize_property#APropdef#build_signature for (self: APropdef, ModelBuilder) */
+void nit__modelize_property___APropdef___build_signature(val* self, val* p0) {
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+var_modelbuilder = p0;
+RET_LABEL:;
 }
+/* method modelize_property#APropdef#check_signature for (self: APropdef, ModelBuilder) */
+void nit__modelize_property___APropdef___check_signature(val* self, val* p0) {
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+var_modelbuilder = p0;
+RET_LABEL:;
 }
+/* method modelize_property#APropdef#new_property_visibility for (self: APropdef, ModelBuilder, MClassDef, nullable AVisibility): MVisibility */
+val* nit__modelize_property___APropdef___new_property_visibility(val* self, val* p0, val* p1, val* p2) {
+val* var /* : MVisibility */;
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_mclassdef /* var mclassdef: MClassDef */;
+val* var_nvisibility /* var nvisibility: nullable AVisibility */;
+val* var1 /* : Sys */;
+val* var2 /* : MVisibility */;
+val* var_mvisibility /* var mvisibility: MVisibility */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var8 /* : MVisibility */;
+val* var9 /* : Sys */;
+val* var10 /* : MVisibility */;
+short int var11 /* : Bool */;
+val* var_other13 /* var other: nullable Object */;
+short int var14 /* : Bool */;
+short int var16 /* : Bool */;
+static val* varonce;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+val* var19 /* : FlatString */;
+val* var20 /* : Sys */;
+val* var21 /* : MVisibility */;
+val* var22 /* : MClass */;
+val* var24 /* : MClass */;
+val* var25 /* : MVisibility */;
+val* var27 /* : MVisibility */;
+val* var28 /* : Sys */;
+val* var29 /* : MVisibility */;
+short int var30 /* : Bool */;
+short int var32 /* : Bool */;
+short int var34 /* : Bool */;
+val* var35 /* : Sys */;
+val* var36 /* : MVisibility */;
+short int var37 /* : Bool */;
+short int var39 /* : Bool */;
+short int var41 /* : Bool */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+short int var45 /* : Bool */;
+short int var46 /* : Bool */;
+static val* varonce47;
+val* var48 /* : String */;
+char* var49 /* : NativeString */;
+val* var50 /* : FlatString */;
+val* var51 /* : Sys */;
+val* var52 /* : MVisibility */;
+short int var53 /* : Bool */;
+short int var55 /* : Bool */;
+short int var57 /* : Bool */;
+short int var58 /* : Bool */;
+short int var59 /* : Bool */;
+short int var61 /* : Bool */;
+short int var62 /* : Bool */;
+static val* varonce63;
+val* var64 /* : String */;
+char* var65 /* : NativeString */;
+val* var66 /* : FlatString */;
+static val* varonce67;
+val* var68 /* : String */;
+char* var69 /* : NativeString */;
+val* var70 /* : FlatString */;
+val* var71 /* : Sys */;
+val* var72 /* : MVisibility */;
+var_modelbuilder = p0;
+var_mclassdef = p1;
+var_nvisibility = p2;
+var1 = glob_sys;
 {
-{ /* Inline mmodule#MModule#mgroup (var186) on <var186:MModule> */
-var191 = var186->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var186:MModule> */
-var189 = var191;
-RET_LABEL190:(void)0;
+var2 = nit__model_base___standard__Sys___public_visibility(var1);
 }
-}
-var192 = NULL;
-if (var189 == NULL) {
-var193 = 0; /* is null */
+var_mvisibility = var2;
+if (var_nvisibility == NULL) {
+var3 = 0; /* is null */
 } else {
-var193 = 1; /* arg is null and recv is not */
+var3 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var189,var192) on <var189:nullable MGroup> */
-var_other146 = var192;
-{
-var196 = ((short int (*)(val* self, val* p0))(var189->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var189, var_other146) /* == on <var189:nullable MGroup(MGroup)>*/;
-}
-var197 = !var196;
-var194 = var197;
-goto RET_LABEL195;
-RET_LABEL195:(void)0;
-}
-var193 = var194;
-}
-var177 = var193;
-} else {
-var177 = var_182;
-}
-var_198 = var177;
-if (var177){
+{ /* Inline kernel#Object#!= (var_nvisibility,((val*)NULL)) on <var_nvisibility:nullable AVisibility> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MProperty#intro_mclassdef (var_other173) on <var_other173:MProperty> */
-var201 = var_other173->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other173:MProperty> */
-if (unlikely(var201 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+var6 = ((short int(*)(val* self, val* p0))(var_nvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nvisibility, var_other); /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/
 }
-var199 = var201;
-RET_LABEL200:(void)0;
+var7 = !var6;
+var4 = var7;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
 }
+var3 = var4;
 }
+if (var3){
 {
-{ /* Inline model#MClassDef#mmodule (var199) on <var199:MClassDef> */
-var204 = var199->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var199:MClassDef> */
-if (unlikely(var204 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
-}
-var202 = var204;
-RET_LABEL203:(void)0;
-}
+var8 = ((val*(*)(val* self))(var_nvisibility->class->vft[COLOR_nit__modelbuilder_base__AVisibility__mvisibility]))(var_nvisibility); /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/
 }
+var_mvisibility = var8;
+var9 = glob_sys;
 {
-{ /* Inline mmodule#MModule#mgroup (var202) on <var202:MModule> */
-var207 = var202->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var202:MModule> */
-var205 = var207;
-RET_LABEL206:(void)0;
-}
-}
-if (var205 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 494);
-show_backtrace(1);
-} else {
-{ /* Inline mproject#MGroup#mproject (var205) on <var205:nullable MGroup> */
-if (unlikely(var205 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
-show_backtrace(1);
-}
-var210 = var205->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var205:nullable MGroup> */
-if (unlikely(var210 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
-show_backtrace(1);
-}
-var208 = var210;
-RET_LABEL209:(void)0;
-}
+var10 = nit__model_base___standard__Sys___intrude_visibility(var9);
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty> */
-var213 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty> */
-if (unlikely(var213 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
-}
-var211 = var213;
-RET_LABEL212:(void)0;
-}
-}
+{ /* Inline kernel#Object#== (var_mvisibility,var10) on <var_mvisibility:MVisibility> */
+var_other13 = var10;
 {
-{ /* Inline model#MClassDef#mmodule (var211) on <var211:MClassDef> */
-var216 = var211->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var211:MClassDef> */
-if (unlikely(var216 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
-}
-var214 = var216;
-RET_LABEL215:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other13) on <var_mvisibility:MVisibility> */
+var16 = var_mvisibility == var_other13;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
 }
-{
-{ /* Inline mmodule#MModule#mgroup (var214) on <var214:MModule> */
-var219 = var214->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var214:MModule> */
-var217 = var219;
-RET_LABEL218:(void)0;
+var11 = var14;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
 }
-if (var217 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 494);
-show_backtrace(1);
+if (var11){
+if (likely(varonce!=NULL)) {
+var17 = varonce;
 } else {
-{ /* Inline mproject#MGroup#mproject (var217) on <var217:nullable MGroup> */
-if (unlikely(var217 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
-show_backtrace(1);
-}
-var222 = var217->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var217:nullable MGroup> */
-if (unlikely(var222 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
-show_backtrace(1);
-}
-var220 = var222;
-RET_LABEL221:(void)0;
-}
+var18 = "Error: `intrude` is not a legal visibility for properties.";
+var19 = standard___standard__NativeString___to_s_with_length(var18, 58l);
+var17 = var19;
+varonce = var17;
 }
 {
-{ /* Inline kernel#Object#== (var208,var220) on <var208:MProject> */
-var_other = var220;
-{
-{ /* Inline kernel#Object#is_same_instance (var208,var_other) on <var208:MProject> */
-var227 = var208 == var_other;
-var225 = var227;
-goto RET_LABEL226;
-RET_LABEL226:(void)0;
-}
+nit___nit__ModelBuilder___error(var_modelbuilder, var_nvisibility, var17); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-var223 = var225;
-goto RET_LABEL224;
-RET_LABEL224:(void)0;
-}
-}
-var176 = var223;
-} else {
-var176 = var_198;
-}
-var_228 = var176;
-if (var176){
+var20 = glob_sys;
 {
-{ /* Inline model#MProperty#intro_mclassdef (var_other173) on <var_other173:MProperty> */
-var231 = var_other173->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other173:MProperty> */
-if (unlikely(var231 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+var21 = nit__model_base___standard__Sys___public_visibility(var20);
 }
-var229 = var231;
-RET_LABEL230:(void)0;
+var_mvisibility = var21;
+} else {
 }
+} else {
 }
 {
-{ /* Inline model#MClassDef#mclass (var229) on <var229:MClassDef> */
-var234 = var229->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var229:MClassDef> */
-if (unlikely(var234 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var24 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var24 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
-var232 = var234;
-RET_LABEL233:(void)0;
+var22 = var24;
+RET_LABEL23:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#name (var232) on <var232:MClass> */
-var237 = var232->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var232:MClass> */
-if (unlikely(var237 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
-show_backtrace(1);
+{ /* Inline model#MClass#visibility (var22) on <var22:MClass> */
+var27 = var22->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var22:MClass> */
+if (unlikely(var27 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 440);
+fatal_exit(1);
 }
-var235 = var237;
-RET_LABEL236:(void)0;
+var25 = var27;
+RET_LABEL26:(void)0;
 }
 }
+var28 = glob_sys;
 {
-{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty> */
-var240 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty> */
-if (unlikely(var240 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
-}
-var238 = var240;
-RET_LABEL239:(void)0;
-}
+var29 = nit__model_base___standard__Sys___private_visibility(var28);
 }
 {
-{ /* Inline model#MClassDef#mclass (var238) on <var238:MClassDef> */
-var243 = var238->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var238:MClassDef> */
-if (unlikely(var243 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
-}
-var241 = var243;
-RET_LABEL242:(void)0;
-}
-}
+{ /* Inline kernel#Object#== (var25,var29) on <var25:MVisibility> */
+var_other13 = var29;
 {
-{ /* Inline model#MClass#name (var241) on <var241:MClass> */
-var246 = var241->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var241:MClass> */
-if (unlikely(var246 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
-show_backtrace(1);
-}
-var244 = var246;
-RET_LABEL245:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var25,var_other13) on <var25:MVisibility> */
+var34 = var25 == var_other13;
+var32 = var34;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
 }
 }
-{
-var247 = ((short int (*)(val* self, val* p0))(var235->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var235, var244) /* == on <var235:String>*/;
+var30 = var32;
+goto RET_LABEL31;
+RET_LABEL31:(void)0;
 }
-var175 = var247;
-} else {
-var175 = var_228;
 }
-var_248 = var175;
-if (var175){
+if (var30){
+var35 = glob_sys;
 {
-{ /* Inline model#MProperty#visibility (var_other173) on <var_other173:MProperty> */
-var251 = var_other173->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_other173:MProperty> */
-if (unlikely(var251 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
-}
-var249 = var251;
-RET_LABEL250:(void)0;
-}
+var36 = nit__model_base___standard__Sys___protected_visibility(var35);
 }
 {
-var252 = nit__model_base___standard__Object___protected_visibility(self);
-}
+{ /* Inline kernel#Object#== (var_mvisibility,var36) on <var_mvisibility:MVisibility> */
+var_other13 = var36;
 {
-var253 = standard___standard__Comparable____62d_61d(var249, var252);
-}
-var174 = var253;
-} else {
-var174 = var_248;
+{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other13) on <var_mvisibility:MVisibility> */
+var41 = var_mvisibility == var_other13;
+var39 = var41;
+goto RET_LABEL40;
+RET_LABEL40:(void)0;
 }
-if (var174){
-if (varonce254) {
-var255 = varonce254;
-} else {
-var256 = "full-name-conflict";
-var257 = 18;
-var258 = standard___standard__NativeString___to_s_with_length(var256, var257);
-var255 = var258;
-varonce254 = var255;
 }
-if (varonce259) {
-var260 = varonce259;
-} else {
-var261 = "Warning: A property named `";
-var262 = 27;
-var263 = standard___standard__NativeString___to_s_with_length(var261, var262);
-var260 = var263;
-varonce259 = var260;
+var37 = var39;
+goto RET_LABEL38;
+RET_LABEL38:(void)0;
 }
-{
-var264 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_other173);
 }
-if (varonce265) {
-var266 = varonce265;
+if (var37){
+if (var_nvisibility == NULL) {
+var42 = 0; /* is null */
 } else {
-var267 = "` is already defined in module `";
-var268 = 32;
-var269 = standard___standard__NativeString___to_s_with_length(var267, var268);
-var266 = var269;
-varonce265 = var266;
+var42 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_nvisibility,((val*)NULL)) on <var_nvisibility:nullable AVisibility> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MProperty#intro_mclassdef (var_other173) on <var_other173:MProperty> */
-var272 = var_other173->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other173:MProperty> */
-if (unlikely(var272 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
-}
-var270 = var272;
-RET_LABEL271:(void)0;
+var45 = ((short int(*)(val* self, val* p0))(var_nvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nvisibility, var_other); /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/
 }
+var46 = !var45;
+var43 = var46;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
-{
-{ /* Inline model#MClassDef#mmodule (var270) on <var270:MClassDef> */
-var275 = var270->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var270:MClassDef> */
-if (unlikely(var275 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
-}
-var273 = var275;
-RET_LABEL274:(void)0;
+var42 = var43;
 }
+if (unlikely(!var42)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 576);
+fatal_exit(1);
 }
-if (varonce276) {
-var277 = varonce276;
+if (likely(varonce47!=NULL)) {
+var48 = varonce47;
 } else {
-var278 = "` for the class `";
-var279 = 17;
-var280 = standard___standard__NativeString___to_s_with_length(var278, var279);
-var277 = var280;
-varonce276 = var277;
+var49 = "Error: `private` is the only legal visibility for properties in a private class.";
+var50 = standard___standard__NativeString___to_s_with_length(var49, 80l);
+var48 = var50;
+varonce47 = var48;
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var_other173) on <var_other173:MProperty> */
-var283 = var_other173->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other173:MProperty> */
-if (unlikely(var283 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
-}
-var281 = var283;
-RET_LABEL282:(void)0;
-}
+nit___nit__ModelBuilder___error(var_modelbuilder, var_nvisibility, var48); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
+} else {
+var51 = glob_sys;
 {
-{ /* Inline model#MClassDef#mclass (var281) on <var281:MClassDef> */
-var286 = var281->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var281:MClassDef> */
-if (unlikely(var286 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
-}
-var284 = var286;
-RET_LABEL285:(void)0;
-}
+var52 = nit__model_base___standard__Sys___private_visibility(var51);
 }
 {
-{ /* Inline model#MClass#name (var284) on <var284:MClass> */
-var289 = var284->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var284:MClass> */
-if (unlikely(var289 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
-show_backtrace(1);
+{ /* Inline kernel#Object#== (var_mvisibility,var52) on <var_mvisibility:MVisibility> */
+var_other13 = var52;
+{
+{ /* Inline kernel#Object#is_same_instance (var_mvisibility,var_other13) on <var_mvisibility:MVisibility> */
+var57 = var_mvisibility == var_other13;
+var55 = var57;
+goto RET_LABEL56;
+RET_LABEL56:(void)0;
 }
-var287 = var289;
-RET_LABEL288:(void)0;
+}
+var53 = var55;
+goto RET_LABEL54;
+RET_LABEL54:(void)0;
 }
 }
-if (varonce290) {
-var291 = varonce290;
+if (var53){
+if (var_nvisibility == NULL) {
+var58 = 0; /* is null */
 } else {
-var292 = "`.";
-var293 = 2;
-var294 = standard___standard__NativeString___to_s_with_length(var292, var293);
-var291 = var294;
-varonce290 = var291;
+var58 = 1; /* arg is null and recv is not */
 }
-var295 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var295 = array_instance Array[Object] */
-var296 = 7;
-var297 = NEW_standard__NativeArray(var296, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var297)->values[0] = (val*) var260;
-((struct instance_standard__NativeArray*)var297)->values[1] = (val*) var264;
-((struct instance_standard__NativeArray*)var297)->values[2] = (val*) var266;
-((struct instance_standard__NativeArray*)var297)->values[3] = (val*) var273;
-((struct instance_standard__NativeArray*)var297)->values[4] = (val*) var277;
-((struct instance_standard__NativeArray*)var297)->values[5] = (val*) var287;
-((struct instance_standard__NativeArray*)var297)->values[6] = (val*) var291;
+if (0) {
+{ /* Inline kernel#Object#!= (var_nvisibility,((val*)NULL)) on <var_nvisibility:nullable AVisibility> */
+var_other = ((val*)NULL);
 {
-((void (*)(val* self, val* p0, long p1))(var295->class->vft[COLOR_standard__array__Array__with_native]))(var295, var297, var296) /* with_native on <var295:Array[Object]>*/;
+var61 = ((short int(*)(val* self, val* p0))(var_nvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_nvisibility, var_other); /* == on <var_nvisibility:nullable AVisibility(AVisibility)>*/
 }
+var62 = !var61;
+var59 = var62;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
 }
-{
-var298 = ((val* (*)(val* self))(var295->class->vft[COLOR_standard__string__Object__to_s]))(var295) /* to_s on <var295:Array[Object]>*/;
+var58 = var59;
 }
-{
-nit___nit__ModelBuilder___advice(var_modelbuilder, self, var255, var298); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+if (unlikely(!var58)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 579);
+fatal_exit(1);
 }
-goto BREAK_label;
+if (likely(varonce63!=NULL)) {
+var64 = varonce63;
 } else {
+var65 = "useless-visibility";
+var66 = standard___standard__NativeString___to_s_with_length(var65, 18l);
+var64 = var66;
+varonce63 = var64;
 }
-{
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_170); /* Direct call array#ArrayIterator#next on <var_170:ArrayIterator[MProperty]>*/
-}
+if (likely(varonce67!=NULL)) {
+var68 = varonce67;
 } else {
-goto BREAK_label;
-}
+var69 = "Warning: `private` is superfluous since the only legal visibility for properties in a private class is private.";
+var70 = standard___standard__NativeString___to_s_with_length(var69, 111l);
+var68 = var70;
+varonce67 = var68;
 }
-BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_170) on <var_170:ArrayIterator[MProperty]> */
-RET_LABEL299:(void)0;
-}
+nit___nit__ModelBuilder___advice(var_modelbuilder, var_nvisibility, var64, var68); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
 }
 } else {
 }
-} else {
-}
-} else {
-var300 = !var_need_redef;
-if (var300){
-if (varonce301) {
-var302 = varonce301;
-} else {
-var303 = "Error: No property ";
-var304 = 19;
-var305 = standard___standard__NativeString___to_s_with_length(var303, var304);
-var302 = var305;
-varonce301 = var302;
 }
+var71 = glob_sys;
 {
-{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
-var308 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
-if (unlikely(var308 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
-}
-var306 = var308;
-RET_LABEL307:(void)0;
-}
+var72 = nit__model_base___standard__Sys___private_visibility(var71);
 }
-if (varonce309) {
-var310 = varonce309;
+var_mvisibility = var72;
 } else {
-var311 = "::";
-var312 = 2;
-var313 = standard___standard__NativeString___to_s_with_length(var311, var312);
-var310 = var313;
-varonce309 = var310;
 }
-{
-{ /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
-var316 = var_mprop->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
-if (unlikely(var316 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
-show_backtrace(1);
+var = var_mvisibility;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#APropdef#set_doc for (self: APropdef, MPropDef, ModelBuilder) */
+void nit__modelize_property___APropdef___set_doc(val* self, val* p0, val* p1) {
+val* var_mpropdef /* var mpropdef: MPropDef */;
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var /* : nullable ADoc */;
+val* var2 /* : nullable ADoc */;
+val* var_ndoc /* var ndoc: nullable ADoc */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var8 /* : MDoc */;
+val* var_mdoc /* var mdoc: MDoc */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var13 /* : MProperty */;
+val* var15 /* : MProperty */;
+val* var16 /* : MVisibility */;
+val* var18 /* : MVisibility */;
+val* var19 /* : Sys */;
+val* var20 /* : MVisibility */;
+short int var21 /* : Bool */;
+static val* varonce;
+val* var22 /* : String */;
+char* var23 /* : NativeString */;
+val* var24 /* : FlatString */;
+val* var26 /* : NativeArray[String] */;
+static val* varonce25;
+static val* varonce27;
+val* var28 /* : String */;
+char* var29 /* : NativeString */;
+val* var30 /* : FlatString */;
+static val* varonce31;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+val* var34 /* : FlatString */;
+val* var35 /* : MProperty */;
+val* var37 /* : MProperty */;
+val* var38 /* : String */;
+val* var39 /* : String */;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+val* var43 /* : FlatString */;
+val* var44 /* : nullable AAnnotation */;
+val* var_at_deprecated /* var at_deprecated: nullable AAnnotation */;
+short int var45 /* : Bool */;
+short int var46 /* : Bool */;
+short int var48 /* : Bool */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+short int var51 /* : Bool */;
+static val* varonce52;
+val* var53 /* : String */;
+char* var54 /* : NativeString */;
+val* var55 /* : FlatString */;
+val* var56 /* : MDeprecationInfo */;
+val* var_info /* var info: MDeprecationInfo */;
+val* var58 /* : nullable ADoc */;
+val* var60 /* : nullable ADoc */;
+short int var61 /* : Bool */;
+short int var62 /* : Bool */;
+short int var64 /* : Bool */;
+short int var65 /* : Bool */;
+val* var66 /* : MDoc */;
+val* var68 /* : MProperty */;
+val* var70 /* : MProperty */;
+var_mpropdef = p0;
+var_modelbuilder = p1;
+{
+{ /* Inline parser_nodes#ADefinition#n_doc (self) on <self:APropdef> */
+var2 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_doc].val; /* _n_doc on <self:APropdef> */
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+var_ndoc = var;
+if (var_ndoc == NULL) {
+var3 = 0; /* is null */
+} else {
+var3 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_ndoc,((val*)NULL)) on <var_ndoc:nullable ADoc> */
+var_other = ((val*)NULL);
+{
+var6 = ((short int(*)(val* self, val* p0))(var_ndoc->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ndoc, var_other); /* == on <var_ndoc:nullable ADoc(ADoc)>*/
+}
+var7 = !var6;
+var4 = var7;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+var3 = var4;
+}
+if (var3){
+{
+var8 = nit__modelbuilder_base___ADoc___to_mdoc(var_ndoc);
+}
+var_mdoc = var8;
+{
+{ /* Inline mdoc#MEntity#mdoc= (var_mpropdef,var_mdoc) on <var_mpropdef:MPropDef> */
+var_mpropdef->attrs[COLOR_nit__mdoc__MEntity___mdoc].val = var_mdoc; /* _mdoc on <var_mpropdef:MPropDef> */
+RET_LABEL9:(void)0;
+}
+}
+{
+{ /* Inline mdoc#MDoc#original_mentity= (var_mdoc,var_mpropdef) on <var_mdoc:MDoc> */
+var_mdoc->attrs[COLOR_nit__mdoc__MDoc___original_mentity].val = var_mpropdef; /* _original_mentity on <var_mdoc:MDoc> */
+RET_LABEL10:(void)0;
+}
+}
+} else {
+{
+var12 = nit___nit__MPropDef___is_intro(var_mpropdef);
+}
+var_ = var12;
+if (var12){
+{
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
+var15 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+{ /* Inline model#MProperty#visibility (var13) on <var13:MProperty> */
+var18 = var13->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var13:MProperty> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+var19 = glob_sys;
+{
+var20 = nit__model_base___standard__Sys___protected_visibility(var19);
+}
+{
+var21 = standard___standard__Comparable____62d_61d(var16, var20);
+}
+var11 = var21;
+} else {
+var11 = var_;
+}
+if (var11){
+if (likely(varonce!=NULL)) {
+var22 = varonce;
+} else {
+var23 = "missing-doc";
+var24 = standard___standard__NativeString___to_s_with_length(var23, 11l);
+var22 = var24;
+varonce = var22;
+}
+if (unlikely(varonce25==NULL)) {
+var26 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce27!=NULL)) {
+var28 = varonce27;
+} else {
+var29 = "Documentation warning: Undocumented property `";
+var30 = standard___standard__NativeString___to_s_with_length(var29, 46l);
+var28 = var30;
+varonce27 = var28;
+}
+((struct instance_standard__NativeArray*)var26)->values[0]=var28;
+if (likely(varonce31!=NULL)) {
+var32 = varonce31;
+} else {
+var33 = "`";
+var34 = standard___standard__NativeString___to_s_with_length(var33, 1l);
+var32 = var34;
+varonce31 = var32;
+}
+((struct instance_standard__NativeArray*)var26)->values[2]=var32;
+} else {
+var26 = varonce25;
+varonce25 = NULL;
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
+var37 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var35 = var37;
+RET_LABEL36:(void)0;
+}
+}
+{
+var38 = ((val*(*)(val* self))(var35->class->vft[COLOR_standard__string__Object__to_s]))(var35); /* to_s on <var35:MProperty>*/
+}
+((struct instance_standard__NativeArray*)var26)->values[1]=var38;
+{
+var39 = ((val*(*)(val* self))(var26->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var26); /* native_to_s on <var26:NativeArray[String]>*/
+}
+varonce25 = var26;
+{
+nit___nit__ModelBuilder___advice(var_modelbuilder, self, var22, var39); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+}
+} else {
+}
+}
+if (likely(varonce40!=NULL)) {
+var41 = varonce40;
+} else {
+var42 = "deprecated";
+var43 = standard___standard__NativeString___to_s_with_length(var42, 10l);
+var41 = var43;
+varonce40 = var41;
+}
+{
+var44 = nit__annotation___Prod___get_single_annotation(self, var41, var_modelbuilder);
+}
+var_at_deprecated = var44;
+if (var_at_deprecated == NULL) {
+var45 = 0; /* is null */
+} else {
+var45 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_at_deprecated,((val*)NULL)) on <var_at_deprecated:nullable AAnnotation> */
+var_other = ((val*)NULL);
+{
+var48 = ((short int(*)(val* self, val* p0))(var_at_deprecated->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_at_deprecated, var_other); /* == on <var_at_deprecated:nullable AAnnotation(AAnnotation)>*/
+}
+var49 = !var48;
+var46 = var49;
+goto RET_LABEL47;
+RET_LABEL47:(void)0;
+}
+var45 = var46;
+}
+if (var45){
+{
+var50 = nit___nit__MPropDef___is_intro(var_mpropdef);
+}
+var51 = !var50;
+if (var51){
+if (likely(varonce52!=NULL)) {
+var53 = varonce52;
+} else {
+var54 = "Error: method redefinition cannot be deprecated.";
+var55 = standard___standard__NativeString___to_s_with_length(var54, 48l);
+var53 = var55;
+varonce52 = var53;
+}
+{
+nit___nit__ModelBuilder___error(var_modelbuilder, self, var53); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+}
+} else {
+var56 = NEW_nit__MDeprecationInfo(&type_nit__MDeprecationInfo);
+{
+{ /* Inline kernel#Object#init (var56) on <var56:MDeprecationInfo> */
+RET_LABEL57:(void)0;
+}
+}
+var_info = var56;
+{
+{ /* Inline parser_nodes#ADefinition#n_doc (var_at_deprecated) on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
+var60 = var_at_deprecated->attrs[COLOR_nit__parser_nodes__ADefinition___n_doc].val; /* _n_doc on <var_at_deprecated:nullable AAnnotation(AAnnotation)> */
+var58 = var60;
+RET_LABEL59:(void)0;
+}
+}
+var_ndoc = var58;
+if (var_ndoc == NULL) {
+var61 = 0; /* is null */
+} else {
+var61 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_ndoc,((val*)NULL)) on <var_ndoc:nullable ADoc> */
+var_other = ((val*)NULL);
+{
+var64 = ((short int(*)(val* self, val* p0))(var_ndoc->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ndoc, var_other); /* == on <var_ndoc:nullable ADoc(ADoc)>*/
+}
+var65 = !var64;
+var62 = var65;
+goto RET_LABEL63;
+RET_LABEL63:(void)0;
+}
+var61 = var62;
+}
+if (var61){
+{
+var66 = nit__modelbuilder_base___ADoc___to_mdoc(var_ndoc);
+}
+{
+{ /* Inline mdoc#MDeprecationInfo#mdoc= (var_info,var66) on <var_info:MDeprecationInfo> */
+var_info->attrs[COLOR_nit__mdoc__MDeprecationInfo___mdoc].val = var66; /* _mdoc on <var_info:MDeprecationInfo> */
+RET_LABEL67:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline model#MPropDef#mproperty (var_mpropdef) on <var_mpropdef:MPropDef> */
+var70 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_mpropdef:MPropDef> */
+if (unlikely(var70 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
+}
+var68 = var70;
+RET_LABEL69:(void)0;
+}
+}
+{
+{ /* Inline mdoc#MEntity#deprecation= (var68,var_info) on <var68:MProperty> */
+var68->attrs[COLOR_nit__mdoc__MEntity___deprecation].val = var_info; /* _deprecation on <var68:MProperty> */
+RET_LABEL71:(void)0;
+}
+}
+}
+} else {
+}
+RET_LABEL:;
+}
+/* method modelize_property#APropdef#check_redef_property_visibility for (self: APropdef, ModelBuilder, nullable AVisibility, MProperty) */
+void nit__modelize_property___APropdef___check_redef_property_visibility(val* self, val* p0, val* p1, val* p2) {
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_nvisibility /* var nvisibility: nullable AVisibility */;
+val* var_mprop /* var mprop: MProperty */;
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var3 /* : Bool */;
+short int var5 /* : Bool */;
+val* var6 /* : MVisibility */;
+val* var_mvisibility /* var mvisibility: MVisibility */;
+short int var7 /* : Bool */;
+val* var8 /* : MVisibility */;
+val* var10 /* : MVisibility */;
+short int var11 /* : Bool */;
+val* var_other13 /* var other: nullable Object */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var16 /* : Sys */;
+val* var17 /* : MVisibility */;
+short int var18 /* : Bool */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+val* var22 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+val* var26 /* : FlatString */;
+static val* varonce27;
+val* var28 /* : String */;
+char* var29 /* : NativeString */;
+val* var30 /* : FlatString */;
+static val* varonce31;
+val* var32 /* : String */;
+char* var33 /* : NativeString */;
+val* var34 /* : FlatString */;
+val* var35 /* : MVisibility */;
+val* var37 /* : MVisibility */;
+val* var38 /* : String */;
+val* var39 /* : String */;
+val* var40 /* : String */;
+var_modelbuilder = p0;
+var_nvisibility = p1;
+var_mprop = p2;
+if (var_nvisibility == NULL) {
+var = 1; /* is null */
+} else {
+var = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_nvisibility,((val*)NULL)) on <var_nvisibility:nullable AVisibility> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_nvisibility,var_other) on <var_nvisibility:nullable AVisibility(AVisibility)> */
+var5 = var_nvisibility == var_other;
+var3 = var5;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+}
+var1 = var3;
+goto RET_LABEL2;
+RET_LABEL2:(void)0;
+}
+var = var1;
+}
+if (var){
+goto RET_LABEL;
+} else {
 }
-var314 = var316;
-RET_LABEL315:(void)0;
+{
+var6 = ((val*(*)(val* self))(var_nvisibility->class->vft[COLOR_nit__modelbuilder_base__AVisibility__mvisibility]))(var_nvisibility); /* mvisibility on <var_nvisibility:nullable AVisibility(AVisibility)>*/
+}
+var_mvisibility = var6;
+{
+{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
+var10 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
+var8 = var10;
+RET_LABEL9:(void)0;
 }
-if (varonce317) {
-var318 = varonce317;
-} else {
-var319 = " is inherited. Remove the redef keyword to define a new property.";
-var320 = 65;
-var321 = standard___standard__NativeString___to_s_with_length(var319, var320);
-var318 = var321;
-varonce317 = var318;
 }
-var322 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var322 = array_instance Array[Object] */
-var323 = 5;
-var324 = NEW_standard__NativeArray(var323, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var324)->values[0] = (val*) var302;
-((struct instance_standard__NativeArray*)var324)->values[1] = (val*) var306;
-((struct instance_standard__NativeArray*)var324)->values[2] = (val*) var310;
-((struct instance_standard__NativeArray*)var324)->values[3] = (val*) var314;
-((struct instance_standard__NativeArray*)var324)->values[4] = (val*) var318;
 {
-((void (*)(val* self, val* p0, long p1))(var322->class->vft[COLOR_standard__array__Array__with_native]))(var322, var324, var323) /* with_native on <var322:Array[Object]>*/;
+{ /* Inline kernel#Object#!= (var_mvisibility,var8) on <var_mvisibility:MVisibility> */
+var_other13 = var8;
+{
+var14 = ((short int(*)(val* self, val* p0))(var_mvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mvisibility, var_other13); /* == on <var_mvisibility:MVisibility>*/
+}
+var15 = !var14;
+var11 = var15;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
 }
+var_ = var11;
+if (var11){
+var16 = glob_sys;
 {
-var325 = ((val* (*)(val* self))(var322->class->vft[COLOR_standard__string__Object__to_s]))(var322) /* to_s on <var322:Array[Object]>*/;
+var17 = nit__model_base___standard__Sys___public_visibility(var16);
 }
 {
-nit___nit__ModelBuilder___error(var_modelbuilder, self, var325); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+{ /* Inline kernel#Object#!= (var_mvisibility,var17) on <var_mvisibility:MVisibility> */
+var_other13 = var17;
+{
+var20 = ((short int(*)(val* self, val* p0))(var_mvisibility->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mvisibility, var_other13); /* == on <var_mvisibility:MVisibility>*/
 }
-var326 = 0;
-var = var326;
-goto RET_LABEL;
+var21 = !var20;
+var18 = var21;
+goto RET_LABEL19;
+RET_LABEL19:(void)0;
+}
+}
+var7 = var18;
 } else {
+var7 = var_;
 }
+if (var7){
+if (unlikely(varonce==NULL)) {
+var22 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
+} else {
+var25 = "Error: redefinition changed the visibility from `";
+var26 = standard___standard__NativeString___to_s_with_length(var25, 49l);
+var24 = var26;
+varonce23 = var24;
 }
-var327 = 1;
-var = var327;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
+((struct instance_standard__NativeArray*)var22)->values[0]=var24;
+if (likely(varonce27!=NULL)) {
+var28 = varonce27;
+} else {
+var29 = "` to `";
+var30 = standard___standard__NativeString___to_s_with_length(var29, 6l);
+var28 = var30;
+varonce27 = var28;
 }
-/* method modelize_property#ASignature#is_visited= for (self: ASignature, Bool) */
-void nit__modelize_property___ASignature___is_visited_61d(val* self, short int p0) {
-self->attrs[COLOR_nit__modelize_property__ASignature___is_visited].s = p0; /* _is_visited on <self:ASignature> */
-RET_LABEL:;
+((struct instance_standard__NativeArray*)var22)->values[2]=var28;
+if (likely(varonce31!=NULL)) {
+var32 = varonce31;
+} else {
+var33 = "`.";
+var34 = standard___standard__NativeString___to_s_with_length(var33, 2l);
+var32 = var34;
+varonce31 = var32;
 }
-/* method modelize_property#ASignature#param_names for (self: ASignature): Array[String] */
-val* nit__modelize_property___ASignature___param_names(val* self) {
-val* var /* : Array[String] */;
-val* var1 /* : Array[String] */;
-var1 = self->attrs[COLOR_nit__modelize_property__ASignature___param_names].val; /* _param_names on <self:ASignature> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 514);
-show_backtrace(1);
+((struct instance_standard__NativeArray*)var22)->values[4]=var32;
+} else {
+var22 = varonce;
+varonce = NULL;
 }
-var = var1;
-RET_LABEL:;
-return var;
+{
+{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
+var37 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
+if (unlikely(var37 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
-/* method modelize_property#ASignature#param_types for (self: ASignature): Array[MType] */
-val* nit__modelize_property___ASignature___param_types(val* self) {
-val* var /* : Array[MType] */;
-val* var1 /* : Array[MType] */;
-var1 = self->attrs[COLOR_nit__modelize_property__ASignature___param_types].val; /* _param_types on <self:ASignature> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 517);
-show_backtrace(1);
+var35 = var37;
+RET_LABEL36:(void)0;
 }
-var = var1;
-RET_LABEL:;
-return var;
 }
-/* method modelize_property#ASignature#vararg_rank for (self: ASignature): Int */
-long nit__modelize_property___ASignature___vararg_rank(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-var1 = self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
-var = var1;
-RET_LABEL:;
-return var;
+{
+var38 = ((val*(*)(val* self))(var35->class->vft[COLOR_standard__string__Object__to_s]))(var35); /* to_s on <var35:MVisibility>*/
 }
-/* method modelize_property#ASignature#vararg_rank= for (self: ASignature, Int) */
-void nit__modelize_property___ASignature___vararg_rank_61d(val* self, long p0) {
-self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l = p0; /* _vararg_rank on <self:ASignature> */
-RET_LABEL:;
+((struct instance_standard__NativeArray*)var22)->values[1]=var38;
+{
+var39 = ((val*(*)(val* self))(var_mvisibility->class->vft[COLOR_standard__string__Object__to_s]))(var_mvisibility); /* to_s on <var_mvisibility:MVisibility>*/
 }
-/* method modelize_property#ASignature#ret_type for (self: ASignature): nullable MType */
-val* nit__modelize_property___ASignature___ret_type(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val; /* _ret_type on <self:ASignature> */
-var = var1;
-RET_LABEL:;
-return var;
+((struct instance_standard__NativeArray*)var22)->values[3]=var39;
+{
+var40 = ((val*(*)(val* self))(var22->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var22); /* native_to_s on <var22:NativeArray[String]>*/
+}
+varonce = var22;
+{
+nit___nit__ModelBuilder___error(var_modelbuilder, var_nvisibility, var40); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+}
+} else {
 }
-/* method modelize_property#ASignature#ret_type= for (self: ASignature, nullable MType) */
-void nit__modelize_property___ASignature___ret_type_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val = p0; /* _ret_type on <self:ASignature> */
 RET_LABEL:;
 }
-/* method modelize_property#ASignature#visit_signature for (self: ASignature, ModelBuilder, MClassDef): Bool */
-short int nit__modelize_property___ASignature___visit_signature(val* self, val* p0, val* p1) {
+/* method modelize_property#APropdef#check_redef_keyword for (self: APropdef, ModelBuilder, MClassDef, nullable Token, Bool, MProperty): Bool */
+short int nit__modelize_property___APropdef___check_redef_keyword(val* self, val* p0, val* p1, val* p2, short int p3, val* p4) {
 short int var /* : Bool */;
 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
 val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var1 /* : MModule */;
-val* var3 /* : MModule */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var4 /* : Array[String] */;
-val* var6 /* : Array[String] */;
-val* var_param_names /* var param_names: Array[String] */;
-val* var7 /* : Array[MType] */;
-val* var9 /* : Array[MType] */;
-val* var_param_types /* var param_types: Array[MType] */;
-val* var10 /* : ANodes[AParam] */;
-val* var12 /* : ANodes[AParam] */;
-val* var_ /* var : ANodes[AParam] */;
-val* var13 /* : Iterator[ANode] */;
-val* var_14 /* var : Iterator[AParam] */;
-short int var15 /* : Bool */;
-val* var16 /* : nullable Object */;
-val* var_np /* var np: AParam */;
-val* var17 /* : TId */;
-val* var19 /* : TId */;
-val* var20 /* : String */;
-val* var21 /* : nullable AType */;
-val* var23 /* : nullable AType */;
-val* var_ntype /* var ntype: nullable AType */;
-val* var24 /* : null */;
-short int var25 /* : Bool */;
-short int var26 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var28 /* : Bool */;
-short int var29 /* : Bool */;
-val* var30 /* : nullable MType */;
-val* var_mtype /* var mtype: nullable MType */;
-val* var31 /* : null */;
-short int var32 /* : Bool */;
-short int var33 /* : Bool */;
-val* var_other35 /* var other: nullable Object */;
-short int var36 /* : Bool */;
-short int var38 /* : Bool */;
+val* var_kwredef /* var kwredef: nullable Token */;
+short int var_need_redef /* var need_redef: Bool */;
+val* var_mprop /* var mprop: MProperty */;
+val* var1 /* : Map[MProperty, APropdef] */;
+val* var3 /* : Map[MProperty, APropdef] */;
+short int var4 /* : Bool */;
+val* var5 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce6;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+static val* varonce10;
+val* var11 /* : String */;
+char* var12 /* : NativeString */;
+val* var13 /* : FlatString */;
+static val* varonce14;
+val* var15 /* : String */;
+char* var16 /* : NativeString */;
+val* var17 /* : FlatString */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+val* var21 /* : FlatString */;
+val* var22 /* : String */;
+val* var23 /* : MClass */;
+val* var25 /* : MClass */;
+val* var26 /* : String */;
+val* var27 /* : Map[MProperty, APropdef] */;
+val* var29 /* : Map[MProperty, APropdef] */;
+val* var30 /* : nullable Object */;
+val* var31 /* : Location */;
+val* var33 /* : Location */;
+long var34 /* : Int */;
+long var36 /* : Int */;
+val* var37 /* : String */;
+val* var38 /* : String */;
 short int var39 /* : Bool */;
-long var40 /* : Int */;
-long var_i /* var i: Int */;
-long var41 /* : Int */;
-long var43 /* : Int */;
-long var44 /* : Int */;
-long var46 /* : Int */;
-long var47 /* : Int */;
-short int var49 /* : Bool */;
+short int var40 /* : Bool */;
 int cltype;
 int idtype;
-const char* var_class_name;
-long var50 /* : Int */;
-long var_51 /* var : Int */;
-short int var52 /* : Bool */;
-short int var54 /* : Bool */;
-int cltype55;
-int idtype56;
-const char* var_class_name57;
-short int var58 /* : Bool */;
-long var59 /* : Int */;
-long var60 /* : Int */;
-val* var61 /* : nullable TDotdotdot */;
-val* var63 /* : nullable TDotdotdot */;
-val* var64 /* : null */;
-short int var65 /* : Bool */;
-short int var66 /* : Bool */;
-short int var68 /* : Bool */;
-short int var69 /* : Bool */;
-long var70 /* : Int */;
-long var72 /* : Int */;
-long var73 /* : Int */;
-long var74 /* : Int */;
-long var76 /* : Int */;
-short int var77 /* : Bool */;
-short int var79 /* : Bool */;
-short int var80 /* : Bool */;
-static val* varonce;
-val* var81 /* : String */;
-char* var82 /* : NativeString */;
-long var83 /* : Int */;
-val* var84 /* : FlatString */;
-long var85 /* : Int */;
-long var87 /* : Int */;
-val* var88 /* : nullable Object */;
-static val* varonce89;
-val* var90 /* : String */;
-char* var91 /* : NativeString */;
-long var92 /* : Int */;
-val* var93 /* : FlatString */;
-val* var94 /* : Array[Object] */;
-long var95 /* : Int */;
-val* var96 /* : NativeArray[Object] */;
-val* var97 /* : String */;
-short int var98 /* : Bool */;
-long var99 /* : Int */;
-long var101 /* : Int */;
-long var102 /* : Int */;
-long var103 /* : Int */;
+short int var_ /* var : Bool */;
+short int var41 /* : Bool */;
+short int var43 /* : Bool */;
+short int var44 /* : Bool */;
+short int var45 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var47 /* : Bool */;
+short int var49 /* : Bool */;
+val* var51 /* : NativeArray[String] */;
+static val* varonce50;
+static val* varonce52;
+val* var53 /* : String */;
+char* var54 /* : NativeString */;
+val* var55 /* : FlatString */;
+static val* varonce56;
+val* var57 /* : String */;
+char* var58 /* : NativeString */;
+val* var59 /* : FlatString */;
+static val* varonce60;
+val* var61 /* : String */;
+char* var62 /* : NativeString */;
+val* var63 /* : FlatString */;
+val* var64 /* : MClass */;
+val* var66 /* : MClass */;
+val* var67 /* : String */;
+val* var68 /* : String */;
+val* var70 /* : String */;
+val* var71 /* : String */;
+short int var72 /* : Bool */;
+val* var73 /* : MClassDef */;
+val* var75 /* : MClassDef */;
+val* var76 /* : MModule */;
+val* var78 /* : MModule */;
+val* var79 /* : nullable MGroup */;
+val* var81 /* : nullable MGroup */;
+short int var82 /* : Bool */;
+short int var83 /* : Bool */;
+val* var_other85 /* var other: nullable Object */;
+short int var86 /* : Bool */;
+short int var87 /* : Bool */;
+short int var_88 /* var : Bool */;
+val* var89 /* : MVisibility */;
+val* var91 /* : MVisibility */;
+val* var92 /* : Sys */;
+val* var93 /* : MVisibility */;
+short int var94 /* : Bool */;
+val* var95 /* : Model */;
+val* var97 /* : Model */;
+val* var98 /* : String */;
+val* var100 /* : String */;
+val* var101 /* : nullable Array[MProperty] */;
+val* var_others /* var others: nullable Array[MProperty] */;
+short int var102 /* : Bool */;
+short int var103 /* : Bool */;
 short int var105 /* : Bool */;
-int cltype106;
-int idtype107;
-const char* var_class_name108;
-long var109 /* : Int */;
-val* var113 /* : nullable AType */;
-val* var115 /* : nullable AType */;
-val* var_ntype116 /* var ntype: nullable AType */;
-val* var117 /* : null */;
-short int var118 /* : Bool */;
+short int var106 /* : Bool */;
+val* var_107 /* var : Array[MProperty] */;
+val* var108 /* : ArrayIterator[nullable Object] */;
+val* var_109 /* var : ArrayIterator[MProperty] */;
+short int var110 /* : Bool */;
+val* var111 /* : nullable Object */;
+val* var_other112 /* var other: MProperty */;
+short int var113 /* : Bool */;
+short int var114 /* : Bool */;
+short int var115 /* : Bool */;
+short int var116 /* : Bool */;
+short int var117 /* : Bool */;
 short int var119 /* : Bool */;
-short int var121 /* : Bool */;
-short int var122 /* : Bool */;
-val* var123 /* : nullable MType */;
-val* var125 /* : nullable MType */;
-val* var127 /* : nullable MType */;
-val* var128 /* : null */;
-short int var129 /* : Bool */;
-short int var130 /* : Bool */;
+short int var120 /* : Bool */;
+short int var_121 /* var : Bool */;
+val* var122 /* : MClassDef */;
+val* var124 /* : MClassDef */;
+val* var125 /* : MModule */;
+val* var127 /* : MModule */;
+val* var128 /* : nullable MGroup */;
+val* var130 /* : nullable MGroup */;
+short int var131 /* : Bool */;
 short int var132 /* : Bool */;
 short int var134 /* : Bool */;
 short int var135 /* : Bool */;
-short int var136 /* : Bool */;
-short int var138 /* : Bool */;
+short int var_136 /* var : Bool */;
+val* var137 /* : MClassDef */;
+val* var139 /* : MClassDef */;
+val* var140 /* : MModule */;
+val* var142 /* : MModule */;
+val* var143 /* : nullable MGroup */;
+val* var145 /* : nullable MGroup */;
+val* var146 /* : MProject */;
+val* var148 /* : MProject */;
+val* var149 /* : MClassDef */;
+val* var151 /* : MClassDef */;
+val* var152 /* : MModule */;
+val* var154 /* : MModule */;
+val* var155 /* : nullable MGroup */;
+val* var157 /* : nullable MGroup */;
+val* var158 /* : MProject */;
+val* var160 /* : MProject */;
+short int var161 /* : Bool */;
+short int var163 /* : Bool */;
+short int var165 /* : Bool */;
+short int var_166 /* var : Bool */;
+val* var167 /* : MClassDef */;
+val* var169 /* : MClassDef */;
+val* var170 /* : MClass */;
+val* var172 /* : MClass */;
+val* var173 /* : String */;
+val* var175 /* : String */;
+val* var176 /* : MClassDef */;
+val* var178 /* : MClassDef */;
+val* var179 /* : MClass */;
+val* var181 /* : MClass */;
+val* var182 /* : String */;
+val* var184 /* : String */;
+short int var185 /* : Bool */;
+short int var_186 /* var : Bool */;
+val* var187 /* : MVisibility */;
+val* var189 /* : MVisibility */;
+val* var190 /* : Sys */;
+val* var191 /* : MVisibility */;
+short int var192 /* : Bool */;
+static val* varonce193;
+val* var194 /* : String */;
+char* var195 /* : NativeString */;
+val* var196 /* : FlatString */;
+val* var198 /* : NativeArray[String] */;
+static val* varonce197;
+static val* varonce199;
+val* var200 /* : String */;
+char* var201 /* : NativeString */;
+val* var202 /* : FlatString */;
+static val* varonce203;
+val* var204 /* : String */;
+char* var205 /* : NativeString */;
+val* var206 /* : FlatString */;
+static val* varonce207;
+val* var208 /* : String */;
+char* var209 /* : NativeString */;
+val* var210 /* : FlatString */;
+static val* varonce211;
+val* var212 /* : String */;
+char* var213 /* : NativeString */;
+val* var214 /* : FlatString */;
+val* var215 /* : String */;
+val* var216 /* : MClassDef */;
+val* var218 /* : MClassDef */;
+val* var219 /* : MModule */;
+val* var221 /* : MModule */;
+val* var222 /* : String */;
+val* var223 /* : MClassDef */;
+val* var225 /* : MClassDef */;
+val* var226 /* : MClass */;
+val* var228 /* : MClass */;
+val* var229 /* : String */;
+val* var231 /* : String */;
+val* var232 /* : String */;
+short int var233 /* : Bool */;
+val* var235 /* : NativeArray[String] */;
+static val* varonce234;
+static val* varonce236;
+val* var237 /* : String */;
+char* var238 /* : NativeString */;
+val* var239 /* : FlatString */;
+static val* varonce240;
+val* var241 /* : String */;
+char* var242 /* : NativeString */;
+val* var243 /* : FlatString */;
+static val* varonce244;
+val* var245 /* : String */;
+char* var246 /* : NativeString */;
+val* var247 /* : FlatString */;
+val* var248 /* : MClass */;
+val* var250 /* : MClass */;
+val* var251 /* : String */;
+val* var252 /* : String */;
+val* var254 /* : String */;
+val* var255 /* : String */;
 var_modelbuilder = p0;
 var_mclassdef = p1;
+var_kwredef = p2;
+var_need_redef = p3;
+var_mprop = p4;
+{
+{ /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
+var3 = var_mclassdef->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 505);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((short int(*)(val* self, val* p0))((((long)var1&3)?class_info[((long)var1&3)]:var1->class)->vft[COLOR_standard__abstract_collection__MapRead__has_key]))(var1, var_mprop); /* has_key on <var1:Map[MProperty, APropdef]>*/
+}
+if (var4){
+if (unlikely(varonce==NULL)) {
+var5 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
+if (likely(varonce6!=NULL)) {
+var7 = varonce6;
+} else {
+var8 = "Error: a property `";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 19l);
+var7 = var9;
+varonce6 = var7;
+}
+((struct instance_standard__NativeArray*)var5)->values[0]=var7;
+if (likely(varonce10!=NULL)) {
+var11 = varonce10;
+} else {
+var12 = "` is already defined in class `";
+var13 = standard___standard__NativeString___to_s_with_length(var12, 31l);
+var11 = var13;
+varonce10 = var11;
+}
+((struct instance_standard__NativeArray*)var5)->values[2]=var11;
+if (likely(varonce14!=NULL)) {
+var15 = varonce14;
+} else {
+var16 = "` at line ";
+var17 = standard___standard__NativeString___to_s_with_length(var16, 10l);
+var15 = var17;
+varonce14 = var15;
+}
+((struct instance_standard__NativeArray*)var5)->values[4]=var15;
+if (likely(varonce18!=NULL)) {
+var19 = varonce18;
+} else {
+var20 = ".";
+var21 = standard___standard__NativeString___to_s_with_length(var20, 1l);
+var19 = var21;
+varonce18 = var19;
+}
+((struct instance_standard__NativeArray*)var5)->values[6]=var19;
+} else {
+var5 = varonce;
+varonce = NULL;
+}
+{
+var22 = ((val*(*)(val* self))(var_mprop->class->vft[COLOR_standard__string__Object__to_s]))(var_mprop); /* to_s on <var_mprop:MProperty>*/
+}
+((struct instance_standard__NativeArray*)var5)->values[1]=var22;
+{
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var25 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var25 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
+}
+var23 = var25;
+RET_LABEL24:(void)0;
+}
+}
+{
+var26 = ((val*(*)(val* self))(var23->class->vft[COLOR_standard__string__Object__to_s]))(var23); /* to_s on <var23:MClass>*/
+}
+((struct instance_standard__NativeArray*)var5)->values[3]=var26;
+{
+{ /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
+var29 = var_mclassdef->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
+if (unlikely(var29 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 505);
+fatal_exit(1);
+}
+var27 = var29;
+RET_LABEL28:(void)0;
+}
+}
 {
-{ /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
-var3 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 489);
-show_backtrace(1);
+var30 = ((val*(*)(val* self, val* p0))((((long)var27&3)?class_info[((long)var27&3)]:var27->class)->vft[COLOR_standard__abstract_collection__MapRead___91d_93d]))(var27, var_mprop); /* [] on <var27:Map[MProperty, APropdef]>*/
 }
-var1 = var3;
-RET_LABEL2:(void)0;
+{
+{ /* Inline parser_nodes#ANode#location (var30) on <var30:nullable Object(APropdef)> */
+var33 = var30->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <var30:nullable Object(APropdef)> */
+if (unlikely(var33 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 24);
+fatal_exit(1);
+}
+var31 = var33;
+RET_LABEL32:(void)0;
 }
 }
-var_mmodule = var1;
 {
-{ /* Inline modelize_property#ASignature#param_names (self) on <self:ASignature> */
-var6 = self->attrs[COLOR_nit__modelize_property__ASignature___param_names].val; /* _param_names on <self:ASignature> */
-if (unlikely(var6 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 514);
-show_backtrace(1);
+{ /* Inline location#Location#line_start (var31) on <var31:Location> */
+var36 = var31->attrs[COLOR_nit__location__Location___line_start].l; /* _line_start on <var31:Location> */
+var34 = var36;
+RET_LABEL35:(void)0;
 }
-var4 = var6;
-RET_LABEL5:(void)0;
 }
+var37 = standard__string___Int___Object__to_s(var34);
+((struct instance_standard__NativeArray*)var5)->values[5]=var37;
+{
+var38 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
 }
-var_param_names = var4;
+varonce = var5;
 {
-{ /* Inline modelize_property#ASignature#param_types (self) on <self:ASignature> */
-var9 = self->attrs[COLOR_nit__modelize_property__ASignature___param_types].val; /* _param_types on <self:ASignature> */
-if (unlikely(var9 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 517);
-show_backtrace(1);
+nit___nit__ModelBuilder___error(var_modelbuilder, self, var38); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-var7 = var9;
-RET_LABEL8:(void)0;
+var = 0;
+goto RET_LABEL;
+} else {
 }
+/* <var_mprop:MProperty> isa MMethod */
+cltype = type_nit__MMethod.color;
+idtype = type_nit__MMethod.id;
+if(cltype >= var_mprop->type->table_size) {
+var40 = 0;
+} else {
+var40 = var_mprop->type->type_table[cltype] == idtype;
 }
-var_param_types = var7;
+var_ = var40;
+if (var40){
 {
-{ /* Inline parser_nodes#ASignature#n_params (self) on <self:ASignature> */
-var12 = self->attrs[COLOR_nit__parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
-if (unlikely(var12 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1506);
-show_backtrace(1);
+{ /* Inline model#MMethod#is_root_init (var_mprop) on <var_mprop:MProperty(MMethod)> */
+var43 = var_mprop->attrs[COLOR_nit__model__MMethod___is_root_init].s; /* _is_root_init on <var_mprop:MProperty(MMethod)> */
+var41 = var43;
+RET_LABEL42:(void)0;
 }
-var10 = var12;
-RET_LABEL11:(void)0;
 }
+var39 = var41;
+} else {
+var39 = var_;
 }
-var_ = var10;
+if (var39){
+var = 1;
+goto RET_LABEL;
+} else {
+}
+if (var_kwredef == NULL) {
+var44 = 1; /* is null */
+} else {
+var44 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_kwredef,((val*)NULL)) on <var_kwredef:nullable Token> */
+var_other = ((val*)NULL);
 {
-var13 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
+{ /* Inline kernel#Object#is_same_instance (var_kwredef,var_other) on <var_kwredef:nullable Token(Token)> */
+var49 = var_kwredef == var_other;
+var47 = var49;
+goto RET_LABEL48;
+RET_LABEL48:(void)0;
+}
+}
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
+}
+var44 = var45;
+}
+if (var44){
+if (var_need_redef){
+if (unlikely(varonce50==NULL)) {
+var51 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce52!=NULL)) {
+var53 = varonce52;
+} else {
+var54 = "Redef Error: `";
+var55 = standard___standard__NativeString___to_s_with_length(var54, 14l);
+var53 = var55;
+varonce52 = var53;
+}
+((struct instance_standard__NativeArray*)var51)->values[0]=var53;
+if (likely(varonce56!=NULL)) {
+var57 = varonce56;
+} else {
+var58 = "::";
+var59 = standard___standard__NativeString___to_s_with_length(var58, 2l);
+var57 = var59;
+varonce56 = var57;
+}
+((struct instance_standard__NativeArray*)var51)->values[2]=var57;
+if (likely(varonce60!=NULL)) {
+var61 = varonce60;
+} else {
+var62 = "` is an inherited property. To redefine it, add the `redef` keyword.";
+var63 = standard___standard__NativeString___to_s_with_length(var62, 68l);
+var61 = var63;
+varonce60 = var61;
+}
+((struct instance_standard__NativeArray*)var51)->values[4]=var61;
+} else {
+var51 = varonce50;
+varonce50 = NULL;
 }
-var_14 = var13;
-for(;;) {
 {
-var15 = ((short int (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_14) /* is_ok on <var_14:Iterator[AParam]>*/;
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var66 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var66 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
+}
+var64 = var66;
+RET_LABEL65:(void)0;
+}
 }
-if (var15){
 {
-var16 = ((val* (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_14) /* item on <var_14:Iterator[AParam]>*/;
+var67 = ((val*(*)(val* self))(var64->class->vft[COLOR_standard__string__Object__to_s]))(var64); /* to_s on <var64:MClass>*/
 }
-var_np = var16;
+((struct instance_standard__NativeArray*)var51)->values[1]=var67;
 {
-{ /* Inline parser_nodes#AParam#n_id (var_np) on <var_np:AParam> */
-var19 = var_np->attrs[COLOR_nit__parser_nodes__AParam___n_id].val; /* _n_id on <var_np:AParam> */
-if (unlikely(var19 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1520);
-show_backtrace(1);
+{ /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
+var70 = var_mprop->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
+if (unlikely(var70 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
 }
-var17 = var19;
-RET_LABEL18:(void)0;
+var68 = var70;
+RET_LABEL69:(void)0;
 }
 }
+((struct instance_standard__NativeArray*)var51)->values[3]=var68;
 {
-var20 = nit__lexer_work___Token___text(var17);
+var71 = ((val*(*)(val* self))(var51->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var51); /* native_to_s on <var51:NativeArray[String]>*/
 }
+varonce50 = var51;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_param_names, var20); /* Direct call array#Array#add on <var_param_names:Array[String]>*/
+nit___nit__ModelBuilder___error(var_modelbuilder, self, var71); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+}
+var = 0;
+goto RET_LABEL;
+} else {
 }
 {
-{ /* Inline parser_nodes#AParam#n_type (var_np) on <var_np:AParam> */
-var23 = var_np->attrs[COLOR_nit__parser_nodes__AParam___n_type].val; /* _n_type on <var_np:AParam> */
-var21 = var23;
-RET_LABEL22:(void)0;
+{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty> */
+var75 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty> */
+if (unlikely(var75 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
+var73 = var75;
+RET_LABEL74:(void)0;
 }
-var_ntype = var21;
-var24 = NULL;
-if (var_ntype == NULL) {
-var25 = 0; /* is null */
-} else {
-var25 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_ntype,var24) on <var_ntype:nullable AType> */
-var_other = var24;
 {
-var28 = ((short int (*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other) /* == on <var_ntype:nullable AType(AType)>*/;
+{ /* Inline model#MClassDef#mmodule (var73) on <var73:MClassDef> */
+var78 = var73->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var73:MClassDef> */
+if (unlikely(var78 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
-var29 = !var28;
-var26 = var29;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+var76 = var78;
+RET_LABEL77:(void)0;
 }
-var25 = var26;
 }
-if (var25){
 {
-var30 = nit__modelize_class___ModelBuilder___resolve_mtype(var_modelbuilder, var_mmodule, var_mclassdef, var_ntype);
+{ /* Inline mmodule#MModule#mgroup (var76) on <var76:MModule> */
+var81 = var76->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var76:MModule> */
+var79 = var81;
+RET_LABEL80:(void)0;
 }
-var_mtype = var30;
-var31 = NULL;
-if (var_mtype == NULL) {
-var32 = 1; /* is null */
+}
+if (var79 == NULL) {
+var82 = 0; /* is null */
 } else {
-var32 = 0; /* arg is null but recv is not */
+var82 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_mtype,var31) on <var_mtype:nullable MType> */
-var_other35 = var31;
+{ /* Inline kernel#Object#!= (var79,((val*)NULL)) on <var79:nullable MGroup> */
+var_other85 = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other35) on <var_mtype:nullable MType(MType)> */
-var38 = var_mtype == var_other35;
-var36 = var38;
-goto RET_LABEL37;
-RET_LABEL37:(void)0;
+var86 = ((short int(*)(val* self, val* p0))(var79->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var79, var_other85); /* == on <var79:nullable MGroup(MGroup)>*/
 }
+var87 = !var86;
+var83 = var87;
+goto RET_LABEL84;
+RET_LABEL84:(void)0;
 }
-var33 = var36;
-goto RET_LABEL34;
-RET_LABEL34:(void)0;
+var82 = var83;
 }
-var32 = var33;
+var_88 = var82;
+if (var82){
+{
+{ /* Inline model#MProperty#visibility (var_mprop) on <var_mprop:MProperty> */
+var91 = var_mprop->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_mprop:MProperty> */
+if (unlikely(var91 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
-if (var32){
-var39 = 0;
-var = var39;
-goto RET_LABEL;
-} else {
+var89 = var91;
+RET_LABEL90:(void)0;
 }
-var40 = 0;
-var_i = var40;
-{
-{ /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
-var43 = var_param_names->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
-var41 = var43;
-RET_LABEL42:(void)0;
 }
+var92 = glob_sys;
+{
+var93 = nit__model_base___standard__Sys___protected_visibility(var92);
 }
 {
-{ /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
-var46 = var_param_types->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
-var44 = var46;
-RET_LABEL45:(void)0;
+var94 = standard___standard__Comparable____62d_61d(var89, var93);
 }
+var72 = var94;
+} else {
+var72 = var_88;
 }
+if (var72){
 {
-{ /* Inline kernel#Int#- (var41,var44) on <var41:Int> */
-/* Covariant cast for argument 0 (i) <var44:Int> isa OTHER */
-/* <var44:Int> isa OTHER */
-var49 = 1; /* easy <var44:Int> isa OTHER*/
-if (unlikely(!var49)) {
-var_class_name = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+{ /* Inline modelbuilder_base#ModelBuilder#model (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
+var97 = var_modelbuilder->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___model].val; /* _model on <var_modelbuilder:ModelBuilder> */
+if (unlikely(var97 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 44);
+fatal_exit(1);
 }
-var50 = var41 - var44;
-var47 = var50;
-goto RET_LABEL48;
-RET_LABEL48:(void)0;
+var95 = var97;
+RET_LABEL96:(void)0;
 }
 }
-var_51 = var47;
-for(;;) {
 {
-{ /* Inline kernel#Int#< (var_i,var_51) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var_51:Int> isa OTHER */
-/* <var_51:Int> isa OTHER */
-var54 = 1; /* easy <var_51:Int> isa OTHER*/
-if (unlikely(!var54)) {
-var_class_name57 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name57);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 410);
-show_backtrace(1);
+{ /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
+var100 = var_mprop->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
+if (unlikely(var100 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
 }
-var58 = var_i < var_51;
-var52 = var58;
-goto RET_LABEL53;
-RET_LABEL53:(void)0;
+var98 = var100;
+RET_LABEL99:(void)0;
 }
 }
-if (var52){
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_param_types, var_mtype); /* Direct call array#Array#add on <var_param_types:Array[MType]>*/
+var101 = nit__model___Model___get_mproperties_by_name(var95, var98);
+}
+var_others = var101;
+if (var_others == NULL) {
+var102 = 0; /* is null */
+} else {
+var102 = 1; /* arg is null and recv is not */
 }
-var59 = 1;
+if (0) {
+{ /* Inline kernel#Object#!= (var_others,((val*)NULL)) on <var_others:nullable Array[MProperty]> */
+var_other85 = ((val*)NULL);
 {
-var60 = standard___standard__Int___Discrete__successor(var_i, var59);
+var105 = ((short int(*)(val* self, val* p0))(var_others->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_others, var_other85); /* == on <var_others:nullable Array[MProperty](Array[MProperty])>*/
 }
-var_i = var60;
-} else {
-goto BREAK_label;
+var106 = !var105;
+var103 = var106;
+goto RET_LABEL104;
+RET_LABEL104:(void)0;
 }
+var102 = var103;
 }
-BREAK_label: (void)0;
+if (var102){
+var_107 = var_others;
 {
-{ /* Inline parser_nodes#AParam#n_dotdotdot (var_np) on <var_np:AParam> */
-var63 = var_np->attrs[COLOR_nit__parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <var_np:AParam> */
-var61 = var63;
-RET_LABEL62:(void)0;
+var108 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_107);
 }
+var_109 = var108;
+for(;;) {
+{
+var110 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_109);
 }
-var64 = NULL;
-if (var61 == NULL) {
-var65 = 0; /* is null */
-} else {
-var65 = 1; /* arg is null and recv is not */
+if (var110){
+{
+var111 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_109);
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var61,var64) on <var61:nullable TDotdotdot> */
-var_other = var64;
+var_other112 = var111;
 {
-var68 = ((short int (*)(val* self, val* p0))(var61->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var61, var_other) /* == on <var61:nullable TDotdotdot(TDotdotdot)>*/;
+{ /* Inline kernel#Object#!= (var_other112,var_mprop) on <var_other112:MProperty> */
+var_other85 = var_mprop;
+{
+var119 = ((short int(*)(val* self, val* p0))(var_other112->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_other112, var_other85); /* == on <var_other112:MProperty>*/
 }
-var69 = !var68;
-var66 = var69;
-goto RET_LABEL67;
-RET_LABEL67:(void)0;
+var120 = !var119;
+var117 = var120;
+goto RET_LABEL118;
+RET_LABEL118:(void)0;
 }
-var65 = var66;
 }
-if (var65){
+var_121 = var117;
+if (var117){
 {
-{ /* Inline modelize_property#ASignature#vararg_rank (self) on <self:ASignature> */
-var72 = self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
-var70 = var72;
-RET_LABEL71:(void)0;
+{ /* Inline model#MProperty#intro_mclassdef (var_other112) on <var_other112:MProperty> */
+var124 = var_other112->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other112:MProperty> */
+if (unlikely(var124 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
+}
+var122 = var124;
+RET_LABEL123:(void)0;
 }
 }
-var73 = 1;
 {
-{ /* Inline kernel#Int#unary - (var73) on <var73:Int> */
-var76 = -var73;
-var74 = var76;
-goto RET_LABEL75;
-RET_LABEL75:(void)0;
+{ /* Inline model#MClassDef#mmodule (var122) on <var122:MClassDef> */
+var127 = var122->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var122:MClassDef> */
+if (unlikely(var127 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
+}
+var125 = var127;
+RET_LABEL126:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#!= (var70,var74) on <var70:Int> */
-var79 = var70 == var74;
-var80 = !var79;
-var77 = var80;
-goto RET_LABEL78;
-RET_LABEL78:(void)0;
+{ /* Inline mmodule#MModule#mgroup (var125) on <var125:MModule> */
+var130 = var125->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var125:MModule> */
+var128 = var130;
+RET_LABEL129:(void)0;
 }
 }
-if (var77){
-if (varonce) {
-var81 = varonce;
+if (var128 == NULL) {
+var131 = 0; /* is null */
 } else {
-var82 = "Error: ";
-var83 = 7;
-var84 = standard___standard__NativeString___to_s_with_length(var82, var83);
-var81 = var84;
-varonce = var81;
+var131 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var128,((val*)NULL)) on <var128:nullable MGroup> */
+var_other85 = ((val*)NULL);
 {
-{ /* Inline modelize_property#ASignature#vararg_rank (self) on <self:ASignature> */
-var87 = self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
-var85 = var87;
-RET_LABEL86:(void)0;
+var134 = ((short int(*)(val* self, val* p0))(var128->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var128, var_other85); /* == on <var128:nullable MGroup(MGroup)>*/
 }
+var135 = !var134;
+var132 = var135;
+goto RET_LABEL133;
+RET_LABEL133:(void)0;
 }
-{
-var88 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_param_names, var85);
+var131 = var132;
 }
-if (varonce89) {
-var90 = varonce89;
+var116 = var131;
 } else {
-var91 = " is already a vararg";
-var92 = 20;
-var93 = standard___standard__NativeString___to_s_with_length(var91, var92);
-var90 = var93;
-varonce89 = var90;
+var116 = var_121;
 }
-var94 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var94 = array_instance Array[Object] */
-var95 = 3;
-var96 = NEW_standard__NativeArray(var95, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var96)->values[0] = (val*) var81;
-((struct instance_standard__NativeArray*)var96)->values[1] = (val*) var88;
-((struct instance_standard__NativeArray*)var96)->values[2] = (val*) var90;
+var_136 = var116;
+if (var116){
 {
-((void (*)(val* self, val* p0, long p1))(var94->class->vft[COLOR_standard__array__Array__with_native]))(var94, var96, var95) /* with_native on <var94:Array[Object]>*/;
+{ /* Inline model#MProperty#intro_mclassdef (var_other112) on <var_other112:MProperty> */
+var139 = var_other112->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other112:MProperty> */
+if (unlikely(var139 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
+}
+var137 = var139;
+RET_LABEL138:(void)0;
 }
 }
 {
-var97 = ((val* (*)(val* self))(var94->class->vft[COLOR_standard__string__Object__to_s]))(var94) /* to_s on <var94:Array[Object]>*/;
+{ /* Inline model#MClassDef#mmodule (var137) on <var137:MClassDef> */
+var142 = var137->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var137:MClassDef> */
+if (unlikely(var142 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
+}
+var140 = var142;
+RET_LABEL141:(void)0;
+}
 }
 {
-nit___nit__ModelBuilder___error(var_modelbuilder, var_np, var97); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
+{ /* Inline mmodule#MModule#mgroup (var140) on <var140:MModule> */
+var145 = var140->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var140:MModule> */
+var143 = var145;
+RET_LABEL144:(void)0;
 }
-var98 = 0;
-var = var98;
-goto RET_LABEL;
+}
+if (var143 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 638);
+fatal_exit(1);
 } else {
-{
-{ /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
-var101 = var_param_names->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
-var99 = var101;
-RET_LABEL100:(void)0;
+{ /* Inline mproject#MGroup#mproject (var143) on <var143:nullable MGroup> */
+if (unlikely(var143 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
+fatal_exit(1);
+}
+var148 = var143->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var143:nullable MGroup> */
+if (unlikely(var148 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
+fatal_exit(1);
+}
+var146 = var148;
+RET_LABEL147:(void)0;
 }
 }
-var102 = 1;
 {
-{ /* Inline kernel#Int#- (var99,var102) on <var99:Int> */
-/* Covariant cast for argument 0 (i) <var102:Int> isa OTHER */
-/* <var102:Int> isa OTHER */
-var105 = 1; /* easy <var102:Int> isa OTHER*/
-if (unlikely(!var105)) {
-var_class_name108 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name108);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 416);
-show_backtrace(1);
+{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty> */
+var151 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty> */
+if (unlikely(var151 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var109 = var99 - var102;
-var103 = var109;
-goto RET_LABEL104;
-RET_LABEL104:(void)0;
+var149 = var151;
+RET_LABEL150:(void)0;
 }
 }
 {
-{ /* Inline modelize_property#ASignature#vararg_rank= (self,var103) on <self:ASignature> */
-self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l = var103; /* _vararg_rank on <self:ASignature> */
-RET_LABEL110:(void)0;
+{ /* Inline model#MClassDef#mmodule (var149) on <var149:MClassDef> */
+var154 = var149->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var149:MClassDef> */
+if (unlikely(var154 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
+var152 = var154;
+RET_LABEL153:(void)0;
 }
 }
-} else {
+{
+{ /* Inline mmodule#MModule#mgroup (var152) on <var152:MModule> */
+var157 = var152->attrs[COLOR_nit__mmodule__MModule___mgroup].val; /* _mgroup on <var152:MModule> */
+var155 = var157;
+RET_LABEL156:(void)0;
+}
 }
+if (var155 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 638);
+fatal_exit(1);
 } else {
+{ /* Inline mproject#MGroup#mproject (var155) on <var155:nullable MGroup> */
+if (unlikely(var155 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
+fatal_exit(1);
 }
-{
-((void (*)(val* self))(var_14->class->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_14) /* next on <var_14:Iterator[AParam]>*/;
+var160 = var155->attrs[COLOR_nit__mproject__MGroup___mproject].val; /* _mproject on <var155:nullable MGroup> */
+if (unlikely(var160 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproject");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__mproject, 69);
+fatal_exit(1);
 }
-} else {
-goto BREAK_label111;
+var158 = var160;
+RET_LABEL159:(void)0;
 }
 }
-BREAK_label111: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_14) on <var_14:Iterator[AParam]> */
-RET_LABEL112:(void)0;
+{ /* Inline kernel#Object#== (var146,var158) on <var146:MProject> */
+var_other = var158;
+{
+{ /* Inline kernel#Object#is_same_instance (var146,var_other) on <var146:MProject> */
+var165 = var146 == var_other;
+var163 = var165;
+goto RET_LABEL164;
+RET_LABEL164:(void)0;
 }
 }
-{
-{ /* Inline parser_nodes#ASignature#n_type (self) on <self:ASignature> */
-var115 = self->attrs[COLOR_nit__parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
-var113 = var115;
-RET_LABEL114:(void)0;
+var161 = var163;
+goto RET_LABEL162;
+RET_LABEL162:(void)0;
 }
 }
-var_ntype116 = var113;
-var117 = NULL;
-if (var_ntype116 == NULL) {
-var118 = 0; /* is null */
+var115 = var161;
 } else {
-var118 = 1; /* arg is null and recv is not */
+var115 = var_136;
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_ntype116,var117) on <var_ntype116:nullable AType> */
-var_other = var117;
+var_166 = var115;
+if (var115){
 {
-var121 = ((short int (*)(val* self, val* p0))(var_ntype116->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype116, var_other) /* == on <var_ntype116:nullable AType(AType)>*/;
+{ /* Inline model#MProperty#intro_mclassdef (var_other112) on <var_other112:MProperty> */
+var169 = var_other112->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other112:MProperty> */
+if (unlikely(var169 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var122 = !var121;
-var119 = var122;
-goto RET_LABEL120;
-RET_LABEL120:(void)0;
+var167 = var169;
+RET_LABEL168:(void)0;
 }
-var118 = var119;
 }
-if (var118){
 {
-var123 = nit__modelize_class___ModelBuilder___resolve_mtype(var_modelbuilder, var_mmodule, var_mclassdef, var_ntype116);
+{ /* Inline model#MClassDef#mclass (var167) on <var167:MClassDef> */
+var172 = var167->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var167:MClassDef> */
+if (unlikely(var172 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
-{
-{ /* Inline modelize_property#ASignature#ret_type= (self,var123) on <self:ASignature> */
-self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val = var123; /* _ret_type on <self:ASignature> */
-RET_LABEL124:(void)0;
+var170 = var172;
+RET_LABEL171:(void)0;
 }
 }
 {
-{ /* Inline modelize_property#ASignature#ret_type (self) on <self:ASignature> */
-var127 = self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val; /* _ret_type on <self:ASignature> */
-var125 = var127;
-RET_LABEL126:(void)0;
+{ /* Inline model#MClass#name (var170) on <var170:MClass> */
+var175 = var170->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var170:MClass> */
+if (unlikely(var175 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
+fatal_exit(1);
 }
+var173 = var175;
+RET_LABEL174:(void)0;
 }
-var128 = NULL;
-if (var125 == NULL) {
-var129 = 1; /* is null */
-} else {
-var129 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var125,var128) on <var125:nullable MType> */
-var_other35 = var128;
 {
-{ /* Inline kernel#Object#is_same_instance (var125,var_other35) on <var125:nullable MType(MType)> */
-var134 = var125 == var_other35;
-var132 = var134;
-goto RET_LABEL133;
-RET_LABEL133:(void)0;
+{ /* Inline model#MProperty#intro_mclassdef (var_mprop) on <var_mprop:MProperty> */
+var178 = var_mprop->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_mprop:MProperty> */
+if (unlikely(var178 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
+var176 = var178;
+RET_LABEL177:(void)0;
 }
-var130 = var132;
-goto RET_LABEL131;
-RET_LABEL131:(void)0;
 }
-var129 = var130;
+{
+{ /* Inline model#MClassDef#mclass (var176) on <var176:MClassDef> */
+var181 = var176->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var176:MClassDef> */
+if (unlikely(var181 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
-if (var129){
-var135 = 0;
-var = var135;
-goto RET_LABEL;
-} else {
+var179 = var181;
+RET_LABEL180:(void)0;
 }
-} else {
 }
-var136 = 1;
 {
-{ /* Inline modelize_property#ASignature#is_visited= (self,var136) on <self:ASignature> */
-self->attrs[COLOR_nit__modelize_property__ASignature___is_visited].s = var136; /* _is_visited on <self:ASignature> */
-RET_LABEL137:(void)0;
-}
+{ /* Inline model#MClass#name (var179) on <var179:MClass> */
+var184 = var179->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var179:MClass> */
+if (unlikely(var184 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
+fatal_exit(1);
 }
-var138 = 1;
-var = var138;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
+var182 = var184;
+RET_LABEL183:(void)0;
 }
-/* method modelize_property#AParam#mparameter= for (self: AParam, nullable MParameter) */
-void nit__modelize_property___AParam___mparameter_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__modelize_property__AParam___mparameter].val = p0; /* _mparameter on <self:AParam> */
-RET_LABEL:;
 }
-/* method modelize_property#AMethPropdef#look_like_a_root_init for (self: AMethPropdef, ModelBuilder, MClassDef): Bool */
-short int nit__modelize_property___AMethPropdef___look_like_a_root_init(val* self, val* p0, val* p1) {
-short int var /* : Bool */;
-val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
-val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var1 /* : nullable TKwinit */;
-val* var3 /* : nullable TKwinit */;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-short int var6 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var8 /* : Bool */;
-short int var10 /* : Bool */;
-short int var11 /* : Bool */;
-val* var12 /* : nullable AMethid */;
-val* var14 /* : nullable AMethid */;
-val* var15 /* : null */;
-short int var16 /* : Bool */;
-short int var17 /* : Bool */;
-val* var_other19 /* var other: nullable Object */;
-short int var20 /* : Bool */;
-short int var21 /* : Bool */;
-short int var22 /* : Bool */;
-static val* varonce;
-val* var23 /* : String */;
-char* var24 /* : NativeString */;
-long var25 /* : Int */;
-val* var26 /* : FlatString */;
-val* var27 /* : nullable AAnnotation */;
-val* var28 /* : null */;
-short int var29 /* : Bool */;
-short int var30 /* : Bool */;
-short int var32 /* : Bool */;
-short int var33 /* : Bool */;
-short int var34 /* : Bool */;
-val* var35 /* : nullable ANode */;
-val* var37 /* : nullable ANode */;
-val* var38 /* : nullable ANode */;
-val* var40 /* : nullable ANode */;
-short int var41 /* : Bool */;
-int cltype;
-int idtype;
-const char* var_class_name;
-val* var_amod /* var amod: AModule */;
-val* var42 /* : nullable AModuledecl */;
-val* var44 /* : nullable AModuledecl */;
-val* var_amoddecl /* var amoddecl: nullable AModuledecl */;
-val* var45 /* : null */;
-short int var46 /* : Bool */;
-short int var47 /* : Bool */;
-short int var49 /* : Bool */;
-short int var50 /* : Bool */;
-static val* varonce51;
-val* var52 /* : String */;
-char* var53 /* : NativeString */;
-long var54 /* : Int */;
-val* var55 /* : FlatString */;
-val* var56 /* : nullable AAnnotation */;
-val* var_old /* var old: nullable AAnnotation */;
-val* var57 /* : null */;
-short int var58 /* : Bool */;
-short int var59 /* : Bool */;
-short int var61 /* : Bool */;
-short int var62 /* : Bool */;
-short int var63 /* : Bool */;
-val* var64 /* : nullable ASignature */;
-val* var66 /* : nullable ASignature */;
-val* var67 /* : ANodes[AParam] */;
-val* var69 /* : ANodes[AParam] */;
-long var70 /* : Int */;
-long var71 /* : Int */;
-short int var72 /* : Bool */;
-short int var74 /* : Bool */;
-int cltype75;
-int idtype76;
-const char* var_class_name77;
-short int var78 /* : Bool */;
-static val* varonce79;
-val* var80 /* : String */;
-char* var81 /* : NativeString */;
-long var82 /* : Int */;
-val* var83 /* : FlatString */;
-static val* varonce84;
-val* var85 /* : String */;
-char* var86 /* : NativeString */;
-long var87 /* : Int */;
-val* var88 /* : FlatString */;
-val* var89 /* : Array[Object] */;
-long var90 /* : Int */;
-val* var91 /* : NativeArray[Object] */;
-val* var92 /* : String */;
-short int var93 /* : Bool */;
-val* var94 /* : nullable AVisibility */;
-val* var96 /* : nullable AVisibility */;
-short int var97 /* : Bool */;
-int cltype98;
-int idtype99;
-short int var100 /* : Bool */;
-static val* varonce101;
-val* var102 /* : String */;
-char* var103 /* : NativeString */;
-long var104 /* : Int */;
-val* var105 /* : FlatString */;
-static val* varonce106;
-val* var107 /* : String */;
-char* var108 /* : NativeString */;
-long var109 /* : Int */;
-val* var110 /* : FlatString */;
-val* var111 /* : Array[Object] */;
-long var112 /* : Int */;
-val* var113 /* : NativeArray[Object] */;
-val* var114 /* : String */;
-short int var115 /* : Bool */;
-short int var116 /* : Bool */;
-var_modelbuilder = p0;
-var_mclassdef = p1;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_kwinit (self) on <self:AMethPropdef> */
-var3 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_kwinit].val; /* _n_kwinit on <self:AMethPropdef> */
-var1 = var3;
-RET_LABEL2:(void)0;
+var185 = ((short int(*)(val* self, val* p0))(var173->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var173, var182); /* == on <var173:String>*/
 }
-}
-var4 = NULL;
-if (var1 == NULL) {
-var5 = 1; /* is null */
+var114 = var185;
 } else {
-var5 = 0; /* arg is null but recv is not */
+var114 = var_166;
 }
-if (0) {
-{ /* Inline kernel#Object#== (var1,var4) on <var1:nullable TKwinit> */
-var_other = var4;
+var_186 = var114;
+if (var114){
 {
-{ /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable TKwinit(TKwinit)> */
-var10 = var1 == var_other;
-var8 = var10;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
-}
-}
-var6 = var8;
-goto RET_LABEL7;
-RET_LABEL7:(void)0;
+{ /* Inline model#MProperty#visibility (var_other112) on <var_other112:MProperty> */
+var189 = var_other112->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var_other112:MProperty> */
+if (unlikely(var189 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
-var5 = var6;
+var187 = var189;
+RET_LABEL188:(void)0;
 }
-if (var5){
-var11 = 0;
-var = var11;
-goto RET_LABEL;
-} else {
 }
+var190 = glob_sys;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_methid (self) on <self:AMethPropdef> */
-var14 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
-var12 = var14;
-RET_LABEL13:(void)0;
+var191 = nit__model_base___standard__Sys___protected_visibility(var190);
 }
+{
+var192 = standard___standard__Comparable____62d_61d(var187, var191);
 }
-var15 = NULL;
-if (var12 == NULL) {
-var16 = 0; /* is null */
+var113 = var192;
 } else {
-var16 = 1; /* arg is null and recv is not */
-}
-if (0) {
-{ /* Inline kernel#Object#!= (var12,var15) on <var12:nullable AMethid> */
-var_other19 = var15;
-{
-var20 = ((short int (*)(val* self, val* p0))(var12->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var12, var_other19) /* == on <var12:nullable AMethid(AMethid)>*/;
+var113 = var_186;
 }
-var21 = !var20;
-var17 = var21;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
+if (var113){
+if (likely(varonce193!=NULL)) {
+var194 = varonce193;
+} else {
+var195 = "full-name-conflict";
+var196 = standard___standard__NativeString___to_s_with_length(var195, 18l);
+var194 = var196;
+varonce193 = var194;
 }
-var16 = var17;
+if (unlikely(varonce197==NULL)) {
+var198 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
+if (likely(varonce199!=NULL)) {
+var200 = varonce199;
+} else {
+var201 = "Warning: A property named `";
+var202 = standard___standard__NativeString___to_s_with_length(var201, 27l);
+var200 = var202;
+varonce199 = var200;
 }
-if (var16){
-var22 = 0;
-var = var22;
-goto RET_LABEL;
+((struct instance_standard__NativeArray*)var198)->values[0]=var200;
+if (likely(varonce203!=NULL)) {
+var204 = varonce203;
 } else {
+var205 = "` is already defined in module `";
+var206 = standard___standard__NativeString___to_s_with_length(var205, 32l);
+var204 = var206;
+varonce203 = var204;
 }
-if (varonce) {
-var23 = varonce;
+((struct instance_standard__NativeArray*)var198)->values[2]=var204;
+if (likely(varonce207!=NULL)) {
+var208 = varonce207;
 } else {
-var24 = "old_style_init";
-var25 = 14;
-var26 = standard___standard__NativeString___to_s_with_length(var24, var25);
-var23 = var26;
-varonce = var23;
+var209 = "` for the class `";
+var210 = standard___standard__NativeString___to_s_with_length(var209, 17l);
+var208 = var210;
+varonce207 = var208;
 }
-{
-var27 = nit__annotation___Prod___get_single_annotation(self, var23, var_modelbuilder);
+((struct instance_standard__NativeArray*)var198)->values[4]=var208;
+if (likely(varonce211!=NULL)) {
+var212 = varonce211;
+} else {
+var213 = "`.";
+var214 = standard___standard__NativeString___to_s_with_length(var213, 2l);
+var212 = var214;
+varonce211 = var212;
 }
-var28 = NULL;
-if (var27 == NULL) {
-var29 = 0; /* is null */
+((struct instance_standard__NativeArray*)var198)->values[6]=var212;
 } else {
-var29 = 1; /* arg is null and recv is not */
+var198 = varonce197;
+varonce197 = NULL;
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var27,var28) on <var27:nullable AAnnotation> */
-var_other19 = var28;
 {
-var32 = ((short int (*)(val* self, val* p0))(var27->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var27, var_other19) /* == on <var27:nullable AAnnotation(AAnnotation)>*/;
+var215 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_other112);
 }
-var33 = !var32;
-var30 = var33;
-goto RET_LABEL31;
-RET_LABEL31:(void)0;
+((struct instance_standard__NativeArray*)var198)->values[1]=var215;
+{
+{ /* Inline model#MProperty#intro_mclassdef (var_other112) on <var_other112:MProperty> */
+var218 = var_other112->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other112:MProperty> */
+if (unlikely(var218 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var29 = var30;
+var216 = var218;
+RET_LABEL217:(void)0;
 }
-if (var29){
-var34 = 0;
-var = var34;
-goto RET_LABEL;
-} else {
 }
 {
-{ /* Inline parser_nodes#ANode#parent (self) on <self:AMethPropdef> */
-var37 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <self:AMethPropdef> */
-var35 = var37;
-RET_LABEL36:(void)0;
-}
+{ /* Inline model#MClassDef#mmodule (var216) on <var216:MClassDef> */
+var221 = var216->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var216:MClassDef> */
+if (unlikely(var221 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
-if (var35 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 601);
-show_backtrace(1);
-} else {
-{ /* Inline parser_nodes#ANode#parent (var35) on <var35:nullable ANode> */
-if (unlikely(var35 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 36);
-show_backtrace(1);
+var219 = var221;
+RET_LABEL220:(void)0;
 }
-var40 = var35->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <var35:nullable ANode> */
-var38 = var40;
-RET_LABEL39:(void)0;
 }
+{
+var222 = ((val*(*)(val* self))(var219->class->vft[COLOR_standard__string__Object__to_s]))(var219); /* to_s on <var219:MModule>*/
 }
-/* <var38:nullable ANode> isa AModule */
-cltype = type_nit__AModule.color;
-idtype = type_nit__AModule.id;
-if(var38 == NULL) {
-var41 = 0;
-} else {
-if(cltype >= var38->type->table_size) {
-var41 = 0;
-} else {
-var41 = var38->type->type_table[cltype] == idtype;
+((struct instance_standard__NativeArray*)var198)->values[3]=var222;
+{
+{ /* Inline model#MProperty#intro_mclassdef (var_other112) on <var_other112:MProperty> */
+var225 = var_other112->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var_other112:MProperty> */
+if (unlikely(var225 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
+var223 = var225;
+RET_LABEL224:(void)0;
 }
-if (unlikely(!var41)) {
-var_class_name = var38 == NULL ? "null" : var38->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 601);
-show_backtrace(1);
 }
-var_amod = var38;
 {
-{ /* Inline parser_nodes#AModule#n_moduledecl (var_amod) on <var_amod:AModule> */
-var44 = var_amod->attrs[COLOR_nit__parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <var_amod:AModule> */
-var42 = var44;
-RET_LABEL43:(void)0;
+{ /* Inline model#MClassDef#mclass (var223) on <var223:MClassDef> */
+var228 = var223->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var223:MClassDef> */
+if (unlikely(var228 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
+var226 = var228;
+RET_LABEL227:(void)0;
 }
-var_amoddecl = var42;
-var45 = NULL;
-if (var_amoddecl == NULL) {
-var46 = 0; /* is null */
-} else {
-var46 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_amoddecl,var45) on <var_amoddecl:nullable AModuledecl> */
-var_other19 = var45;
 {
-var49 = ((short int (*)(val* self, val* p0))(var_amoddecl->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_amoddecl, var_other19) /* == on <var_amoddecl:nullable AModuledecl(AModuledecl)>*/;
+{ /* Inline model#MClass#name (var226) on <var226:MClass> */
+var231 = var226->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var226:MClass> */
+if (unlikely(var231 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
+fatal_exit(1);
 }
-var50 = !var49;
-var47 = var50;
-goto RET_LABEL48;
-RET_LABEL48:(void)0;
+var229 = var231;
+RET_LABEL230:(void)0;
 }
-var46 = var47;
 }
-if (var46){
-if (varonce51) {
-var52 = varonce51;
-} else {
-var53 = "old_style_init";
-var54 = 14;
-var55 = standard___standard__NativeString___to_s_with_length(var53, var54);
-var52 = var55;
-varonce51 = var52;
+((struct instance_standard__NativeArray*)var198)->values[5]=var229;
+{
+var232 = ((val*(*)(val* self))(var198->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var198); /* native_to_s on <var198:NativeArray[String]>*/
 }
+varonce197 = var198;
 {
-var56 = nit__annotation___Prod___get_single_annotation(var_amoddecl, var52, var_modelbuilder);
+nit___nit__ModelBuilder___advice(var_modelbuilder, self, var194, var232); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
 }
-var_old = var56;
-var57 = NULL;
-if (var_old == NULL) {
-var58 = 0; /* is null */
+goto BREAK_label;
 } else {
-var58 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_old,var57) on <var_old:nullable AAnnotation> */
-var_other19 = var57;
 {
-var61 = ((short int (*)(val* self, val* p0))(var_old->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_old, var_other19) /* == on <var_old:nullable AAnnotation(AAnnotation)>*/;
-}
-var62 = !var61;
-var59 = var62;
-goto RET_LABEL60;
-RET_LABEL60:(void)0;
-}
-var58 = var59;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_109); /* Direct call array#ArrayIterator#next on <var_109:ArrayIterator[MProperty]>*/
 }
-if (var58){
-var63 = 0;
-var = var63;
-goto RET_LABEL;
 } else {
+goto BREAK_label;
 }
-} else {
 }
+BREAK_label: (void)0;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
-var66 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
-var64 = var66;
-RET_LABEL65:(void)0;
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_109); /* Direct call array#ArrayIterator#finish on <var_109:ArrayIterator[MProperty]>*/
 }
+} else {
 }
-if (var64 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 608);
-show_backtrace(1);
 } else {
-{ /* Inline parser_nodes#ASignature#n_params (var64) on <var64:nullable ASignature> */
-if (unlikely(var64 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1506);
-show_backtrace(1);
 }
-var69 = var64->attrs[COLOR_nit__parser_nodes__ASignature___n_params].val; /* _n_params on <var64:nullable ASignature> */
-if (unlikely(var69 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1506);
-show_backtrace(1);
+} else {
+var233 = !var_need_redef;
+if (var233){
+if (unlikely(varonce234==NULL)) {
+var235 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce236!=NULL)) {
+var237 = varonce236;
+} else {
+var238 = "Error: no property `";
+var239 = standard___standard__NativeString___to_s_with_length(var238, 20l);
+var237 = var239;
+varonce236 = var237;
 }
-var67 = var69;
-RET_LABEL68:(void)0;
+((struct instance_standard__NativeArray*)var235)->values[0]=var237;
+if (likely(varonce240!=NULL)) {
+var241 = varonce240;
+} else {
+var242 = "::";
+var243 = standard___standard__NativeString___to_s_with_length(var242, 2l);
+var241 = var243;
+varonce240 = var241;
 }
+((struct instance_standard__NativeArray*)var235)->values[2]=var241;
+if (likely(varonce244!=NULL)) {
+var245 = varonce244;
+} else {
+var246 = "` is inherited. Remove the `redef` keyword to define a new property.";
+var247 = standard___standard__NativeString___to_s_with_length(var246, 68l);
+var245 = var247;
+varonce244 = var245;
 }
-{
-var70 = nit___nit__ANodes___standard__abstract_collection__Collection__length(var67);
+((struct instance_standard__NativeArray*)var235)->values[4]=var245;
+} else {
+var235 = varonce234;
+varonce234 = NULL;
 }
-var71 = 0;
 {
-{ /* Inline kernel#Int#> (var70,var71) on <var70:Int> */
-/* Covariant cast for argument 0 (i) <var71:Int> isa OTHER */
-/* <var71:Int> isa OTHER */
-var74 = 1; /* easy <var71:Int> isa OTHER*/
-if (unlikely(!var74)) {
-var_class_name77 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name77);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
-}
-var78 = var70 > var71;
-var72 = var78;
-goto RET_LABEL73;
-RET_LABEL73:(void)0;
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:MClassDef> */
+var250 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:MClassDef> */
+if (unlikely(var250 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
+var248 = var250;
+RET_LABEL249:(void)0;
 }
-if (var72){
-if (varonce79) {
-var80 = varonce79;
-} else {
-var81 = "old-init";
-var82 = 8;
-var83 = standard___standard__NativeString___to_s_with_length(var81, var82);
-var80 = var83;
-varonce79 = var80;
 }
-if (varonce84) {
-var85 = varonce84;
-} else {
-var86 = "Warning: init with signature in ";
-var87 = 32;
-var88 = standard___standard__NativeString___to_s_with_length(var86, var87);
-var85 = var88;
-varonce84 = var85;
+{
+var251 = ((val*(*)(val* self))(var248->class->vft[COLOR_standard__string__Object__to_s]))(var248); /* to_s on <var248:MClass>*/
 }
-var89 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var89 = array_instance Array[Object] */
-var90 = 2;
-var91 = NEW_standard__NativeArray(var90, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var91)->values[0] = (val*) var85;
-((struct instance_standard__NativeArray*)var91)->values[1] = (val*) var_mclassdef;
+((struct instance_standard__NativeArray*)var235)->values[1]=var251;
 {
-((void (*)(val* self, val* p0, long p1))(var89->class->vft[COLOR_standard__array__Array__with_native]))(var89, var91, var90) /* with_native on <var89:Array[Object]>*/;
+{ /* Inline model#MProperty#name (var_mprop) on <var_mprop:MProperty> */
+var254 = var_mprop->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_mprop:MProperty> */
+if (unlikely(var254 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
+}
+var252 = var254;
+RET_LABEL253:(void)0;
 }
 }
+((struct instance_standard__NativeArray*)var235)->values[3]=var252;
 {
-var92 = ((val* (*)(val* self))(var89->class->vft[COLOR_standard__string__Object__to_s]))(var89) /* to_s on <var89:Array[Object]>*/;
+var255 = ((val*(*)(val* self))(var235->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var235); /* native_to_s on <var235:NativeArray[String]>*/
 }
+varonce234 = var235;
 {
-nit___nit__ModelBuilder___advice(var_modelbuilder, self, var80, var92); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+nit___nit__ModelBuilder___error(var_modelbuilder, self, var255); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-var93 = 0;
-var = var93;
+var = 0;
 goto RET_LABEL;
 } else {
 }
-{
-{ /* Inline parser_nodes#ADefinition#n_visibility (self) on <self:AMethPropdef> */
-var96 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
-var94 = var96;
-RET_LABEL95:(void)0;
-}
 }
-/* <var94:nullable AVisibility> isa APublicVisibility */
-cltype98 = type_nit__APublicVisibility.color;
-idtype99 = type_nit__APublicVisibility.id;
-if(var94 == NULL) {
-var97 = 0;
-} else {
-if(cltype98 >= var94->type->table_size) {
-var97 = 0;
-} else {
-var97 = var94->type->type_table[cltype98] == idtype99;
+var = 1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
+/* method modelize_property#APropdef#check_repeated_types for (self: APropdef, ModelBuilder) */
+void nit__modelize_property___APropdef___check_repeated_types(val* self, val* p0) {
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+var_modelbuilder = p0;
+RET_LABEL:;
 }
-var100 = !var97;
-if (var100){
-if (varonce101) {
-var102 = varonce101;
-} else {
-var103 = "old-init";
-var104 = 8;
-var105 = standard___standard__NativeString___to_s_with_length(var103, var104);
-var102 = var105;
-varonce101 = var102;
+/* method modelize_property#ASignature#is_visited= for (self: ASignature, Bool) */
+void nit__modelize_property___ASignature___is_visited_61d(val* self, short int p0) {
+self->attrs[COLOR_nit__modelize_property__ASignature___is_visited].s = p0; /* _is_visited on <self:ASignature> */
+RET_LABEL:;
 }
-if (varonce106) {
-var107 = varonce106;
-} else {
-var108 = "Warning: non-public init in ";
-var109 = 28;
-var110 = standard___standard__NativeString___to_s_with_length(var108, var109);
-var107 = var110;
-varonce106 = var107;
+/* method modelize_property#ASignature#param_names for (self: ASignature): Array[String] */
+val* nit__modelize_property___ASignature___param_names(val* self) {
+val* var /* : Array[String] */;
+val* var1 /* : Array[String] */;
+var1 = self->attrs[COLOR_nit__modelize_property__ASignature___param_names].val; /* _param_names on <self:ASignature> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 660);
+fatal_exit(1);
 }
-var111 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var111 = array_instance Array[Object] */
-var112 = 2;
-var113 = NEW_standard__NativeArray(var112, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var113)->values[0] = (val*) var107;
-((struct instance_standard__NativeArray*)var113)->values[1] = (val*) var_mclassdef;
-{
-((void (*)(val* self, val* p0, long p1))(var111->class->vft[COLOR_standard__array__Array__with_native]))(var111, var113, var112) /* with_native on <var111:Array[Object]>*/;
+var = var1;
+RET_LABEL:;
+return var;
 }
+/* method modelize_property#ASignature#param_types for (self: ASignature): Array[MType] */
+val* nit__modelize_property___ASignature___param_types(val* self) {
+val* var /* : Array[MType] */;
+val* var1 /* : Array[MType] */;
+var1 = self->attrs[COLOR_nit__modelize_property__ASignature___param_types].val; /* _param_types on <self:ASignature> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 663);
+fatal_exit(1);
 }
-{
-var114 = ((val* (*)(val* self))(var111->class->vft[COLOR_standard__string__Object__to_s]))(var111) /* to_s on <var111:Array[Object]>*/;
+var = var1;
+RET_LABEL:;
+return var;
 }
-{
-nit___nit__ModelBuilder___advice(var_modelbuilder, self, var102, var114); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+/* method modelize_property#ASignature#vararg_rank for (self: ASignature): Int */
+long nit__modelize_property___ASignature___vararg_rank(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
+var = var1;
+RET_LABEL:;
+return var;
 }
-var115 = 0;
-var = var115;
-goto RET_LABEL;
-} else {
+/* method modelize_property#ASignature#vararg_rank= for (self: ASignature, Int) */
+void nit__modelize_property___ASignature___vararg_rank_61d(val* self, long p0) {
+self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l = p0; /* _vararg_rank on <self:ASignature> */
+RET_LABEL:;
 }
-var116 = 1;
-var = var116;
-goto RET_LABEL;
+/* method modelize_property#ASignature#ret_type for (self: ASignature): nullable MType */
+val* nit__modelize_property___ASignature___ret_type(val* self) {
+val* var /* : nullable MType */;
+val* var1 /* : nullable MType */;
+var1 = self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val; /* _ret_type on <self:ASignature> */
+var = var1;
 RET_LABEL:;
 return var;
 }
-/* method modelize_property#AMethPropdef#build_property for (self: AMethPropdef, ModelBuilder, MClassDef) */
-void nit__modelize_property___AMethPropdef___APropdef__build_property(val* self, val* p0, val* p1) {
+/* method modelize_property#ASignature#ret_type= for (self: ASignature, nullable MType) */
+void nit__modelize_property___ASignature___ret_type_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val = p0; /* _ret_type on <self:ASignature> */
+RET_LABEL:;
+}
+/* method modelize_property#ASignature#visit_signature for (self: ASignature, ModelBuilder, MClassDef): Bool */
+short int nit__modelize_property___ASignature___visit_signature(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
 val* var_mclassdef /* var mclassdef: MClassDef */;
-val* var /* : nullable TKwinit */;
-val* var2 /* : nullable TKwinit */;
-val* var_n_kwinit /* var n_kwinit: nullable TKwinit */;
-val* var3 /* : nullable TKwnew */;
-val* var5 /* : nullable TKwnew */;
-val* var_n_kwnew /* var n_kwnew: nullable TKwnew */;
-short int var6 /* : Bool */;
-val* var7 /* : null */;
-short int var8 /* : Bool */;
-short int var9 /* : Bool */;
-val* var_other /* var other: nullable Object */;
-short int var11 /* : Bool */;
-short int var12 /* : Bool */;
-short int var_ /* var : Bool */;
-val* var13 /* : null */;
-short int var14 /* : Bool */;
+val* var1 /* : MModule */;
+val* var3 /* : MModule */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var4 /* : Array[String] */;
+val* var6 /* : Array[String] */;
+val* var_param_names /* var param_names: Array[String] */;
+val* var7 /* : Array[MType] */;
+val* var9 /* : Array[MType] */;
+val* var_param_types /* var param_types: Array[MType] */;
+val* var10 /* : ANodes[AParam] */;
+val* var12 /* : ANodes[AParam] */;
+val* var_ /* var : ANodes[AParam] */;
+val* var13 /* : Iterator[ANode] */;
+val* var_14 /* var : Iterator[AParam] */;
 short int var15 /* : Bool */;
-short int var17 /* : Bool */;
-short int var18 /* : Bool */;
-short int var_is_init /* var is_init: Bool */;
-val* var19 /* : nullable AMethid */;
-val* var21 /* : nullable AMethid */;
-val* var_amethodid /* var amethodid: nullable AMethid */;
-val* var22 /* : null */;
-short int var23 /* : Bool */;
+val* var16 /* : nullable Object */;
+val* var_np /* var np: AParam */;
+val* var17 /* : TId */;
+val* var19 /* : TId */;
+val* var20 /* : String */;
+val* var21 /* : nullable AType */;
+val* var23 /* : nullable AType */;
+val* var_ntype /* var ntype: nullable AType */;
 short int var24 /* : Bool */;
-val* var_other26 /* var other: nullable Object */;
+short int var25 /* : Bool */;
+val* var_other /* var other: nullable Object */;
 short int var27 /* : Bool */;
-short int var29 /* : Bool */;
+short int var28 /* : Bool */;
+val* var29 /* : nullable MType */;
+val* var_mtype /* var mtype: nullable MType */;
 short int var30 /* : Bool */;
-static val* varonce;
-val* var31 /* : String */;
-char* var32 /* : NativeString */;
-long var33 /* : Int */;
-val* var34 /* : FlatString */;
-val* var_name /* var name: String */;
-val* var_name_node /* var name_node: ANode */;
-val* var35 /* : null */;
+short int var31 /* : Bool */;
+val* var_other33 /* var other: nullable Object */;
+short int var34 /* : Bool */;
 short int var36 /* : Bool */;
-short int var37 /* : Bool */;
-short int var39 /* : Bool */;
-short int var40 /* : Bool */;
-static val* varonce41;
-val* var42 /* : String */;
-char* var43 /* : NativeString */;
-long var44 /* : Int */;
-val* var45 /* : FlatString */;
-val* var46 /* : null */;
-short int var47 /* : Bool */;
+long var_i /* var i: Int */;
+long var37 /* : Int */;
+long var39 /* : Int */;
+long var40 /* : Int */;
+long var42 /* : Int */;
+long var43 /* : Int */;
+short int var45 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var46 /* : Int */;
+long var_47 /* var : Int */;
 short int var48 /* : Bool */;
 short int var50 /* : Bool */;
-short int var51 /* : Bool */;
-static val* varonce52;
-val* var53 /* : String */;
-char* var54 /* : NativeString */;
+int cltype51;
+int idtype52;
+const char* var_class_name53;
+short int var54 /* : Bool */;
 long var55 /* : Int */;
-val* var56 /* : FlatString */;
-short int var57 /* : Bool */;
-int cltype;
-int idtype;
-val* var58 /* : TId */;
-val* var60 /* : TId */;
-val* var61 /* : String */;
-val* var62 /* : String */;
+val* var56 /* : nullable TDotdotdot */;
+val* var58 /* : nullable TDotdotdot */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+short int var62 /* : Bool */;
 short int var63 /* : Bool */;
-static val* varonce64;
-val* var65 /* : String */;
-char* var66 /* : NativeString */;
+long var64 /* : Int */;
+long var66 /* : Int */;
 long var67 /* : Int */;
-val* var68 /* : FlatString */;
-short int var69 /* : Bool */;
-short int var_70 /* var : Bool */;
-val* var71 /* : nullable ASignature */;
-val* var73 /* : nullable ASignature */;
-val* var74 /* : ANodes[AParam] */;
-val* var76 /* : ANodes[AParam] */;
-long var77 /* : Int */;
-long var78 /* : Int */;
-short int var79 /* : Bool */;
-short int var81 /* : Bool */;
-static val* varonce82;
-val* var83 /* : String */;
-char* var84 /* : NativeString */;
+long var69 /* : Int */;
+short int var70 /* : Bool */;
+short int var72 /* : Bool */;
+short int var73 /* : Bool */;
+val* var74 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce75;
+val* var76 /* : String */;
+char* var77 /* : NativeString */;
+val* var78 /* : FlatString */;
+static val* varonce79;
+val* var80 /* : String */;
+char* var81 /* : NativeString */;
+val* var82 /* : FlatString */;
+long var83 /* : Int */;
 long var85 /* : Int */;
-val* var86 /* : FlatString */;
-short int var87 /* : Bool */;
-short int var_look_like_a_root_init /* var look_like_a_root_init: Bool */;
-val* var88 /* : null */;
-val* var_mprop /* var mprop: nullable MMethod */;
-short int var89 /* : Bool */;
-short int var90 /* : Bool */;
-short int var_91 /* var : Bool */;
-val* var92 /* : nullable TKwredef */;
-val* var94 /* : nullable TKwredef */;
-val* var95 /* : null */;
-short int var96 /* : Bool */;
-short int var97 /* : Bool */;
-short int var99 /* : Bool */;
-short int var100 /* : Bool */;
-val* var101 /* : nullable MProperty */;
-short int var102 /* : Bool */;
-int cltype103;
-int idtype104;
-const char* var_class_name;
+val* var86 /* : nullable Object */;
+val* var87 /* : String */;
+long var88 /* : Int */;
+long var90 /* : Int */;
+long var91 /* : Int */;
+short int var93 /* : Bool */;
+int cltype94;
+int idtype95;
+const char* var_class_name96;
+long var97 /* : Int */;
+val* var100 /* : nullable AType */;
+val* var102 /* : nullable AType */;
+val* var_ntype103 /* var ntype: nullable AType */;
+short int var104 /* : Bool */;
 short int var105 /* : Bool */;
-val* var106 /* : null */;
 short int var107 /* : Bool */;
 short int var108 /* : Bool */;
-short int var110 /* : Bool */;
-short int var112 /* : Bool */;
-short int var_113 /* var : Bool */;
-val* var114 /* : nullable MMethod */;
-val* var116 /* : nullable MMethod */;
-val* var117 /* : nullable AExpr */;
-val* var119 /* : nullable AExpr */;
-val* var_nb /* var nb: nullable AExpr */;
-short int var120 /* : Bool */;
-short int var121 /* : Bool */;
-short int var122 /* : Bool */;
-int cltype123;
-int idtype124;
-short int var_125 /* var : Bool */;
-val* var126 /* : ANodes[AExpr] */;
-val* var128 /* : ANodes[AExpr] */;
-short int var129 /* : Bool */;
-short int var_130 /* var : Bool */;
-val* var131 /* : nullable ADoc */;
-val* var133 /* : nullable ADoc */;
-val* var134 /* : null */;
-short int var135 /* : Bool */;
-short int var136 /* : Bool */;
-short int var138 /* : Bool */;
-short int var140 /* : Bool */;
-static val* varonce141;
-val* var142 /* : String */;
-char* var143 /* : NativeString */;
-long var144 /* : Int */;
-val* var145 /* : FlatString */;
-static val* varonce146;
-val* var147 /* : String */;
-char* var148 /* : NativeString */;
-long var149 /* : Int */;
-val* var150 /* : FlatString */;
-val* var151 /* : Array[Object] */;
-long var152 /* : Int */;
-val* var153 /* : NativeArray[Object] */;
-val* var154 /* : String */;
-val* var155 /* : null */;
-short int var156 /* : Bool */;
-short int var157 /* : Bool */;
-short int var159 /* : Bool */;
-short int var161 /* : Bool */;
-val* var162 /* : nullable AVisibility */;
-val* var164 /* : nullable AVisibility */;
-val* var165 /* : MVisibility */;
-val* var_mvisibility /* var mvisibility: MVisibility */;
-val* var166 /* : MMethod */;
-short int var167 /* : Bool */;
-short int var_168 /* var : Bool */;
-val* var169 /* : nullable MMethod */;
-val* var171 /* : nullable MMethod */;
-val* var172 /* : null */;
-short int var173 /* : Bool */;
-short int var174 /* : Bool */;
-short int var176 /* : Bool */;
-short int var178 /* : Bool */;
-short int var180 /* : Bool */;
-val* var183 /* : null */;
-short int var184 /* : Bool */;
-short int var185 /* : Bool */;
-short int var187 /* : Bool */;
-short int var188 /* : Bool */;
-val* var190 /* : nullable ANode */;
-val* var192 /* : nullable ANode */;
-short int var193 /* : Bool */;
-int cltype194;
-int idtype195;
-short int var196 /* : Bool */;
-val* var198 /* : nullable TKwredef */;
-val* var200 /* : nullable TKwredef */;
-short int var201 /* : Bool */;
-short int var202 /* : Bool */;
-val* var203 /* : nullable TKwredef */;
-val* var205 /* : nullable TKwredef */;
-short int var206 /* : Bool */;
-int cltype207;
-int idtype208;
-short int var209 /* : Bool */;
-short int var210 /* : Bool */;
-short int var211 /* : Bool */;
-val* var212 /* : nullable AVisibility */;
-val* var214 /* : nullable AVisibility */;
-val* var215 /* : Map[MProperty, APropdef] */;
-val* var217 /* : Map[MProperty, APropdef] */;
-val* var_218 /* var : Map[MProperty, APropdef] */;
-val* var219 /* : MapIterator[nullable Object, nullable Object] */;
-val* var_220 /* var : MapIterator[MProperty, APropdef] */;
-short int var221 /* : Bool */;
-val* var222 /* : nullable Object */;
-val* var_p /* var p: MProperty */;
-val* var223 /* : nullable Object */;
-val* var_n /* var n: APropdef */;
-short int var224 /* : Bool */;
-short int var225 /* : Bool */;
-short int var226 /* : Bool */;
-short int var228 /* : Bool */;
-short int var229 /* : Bool */;
-short int var_230 /* var : Bool */;
-short int var231 /* : Bool */;
-int cltype232;
-int idtype233;
-short int var_234 /* var : Bool */;
-val* var235 /* : String */;
-val* var237 /* : String */;
-short int var238 /* : Bool */;
-val* var239 /* : nullable TKwredef */;
-val* var241 /* : nullable TKwredef */;
-short int var242 /* : Bool */;
-short int var243 /* : Bool */;
-val* var245 /* : Map[MProperty, APropdef] */;
-val* var247 /* : Map[MProperty, APropdef] */;
-val* var248 /* : MMethodDef */;
-val* var249 /* : Location */;
-val* var251 /* : Location */;
-val* var_mpropdef /* var mpropdef: MMethodDef */;
-short int var252 /* : Bool */;
-int cltype253;
-int idtype254;
-const struct type* type_struct;
-const char* var_class_name255;
-short int var257 /* : Bool */;
-int cltype258;
-int idtype259;
-const struct type* type_struct260;
-const char* var_class_name261;
-val* var262 /* : HashMap[MPropDef, APropdef] */;
-val* var264 /* : HashMap[MPropDef, APropdef] */;
-short int var265 /* : Bool */;
-val* var266 /* : ToolContext */;
-val* var268 /* : ToolContext */;
-static val* varonce269;
-val* var270 /* : String */;
-char* var271 /* : NativeString */;
-long var272 /* : Int */;
-val* var273 /* : FlatString */;
-val* var274 /* : String */;
-val* var275 /* : Array[Object] */;
-long var276 /* : Int */;
-val* var277 /* : NativeArray[Object] */;
-val* var278 /* : String */;
-long var279 /* : Int */;
-val* var280 /* : ToolContext */;
-val* var282 /* : ToolContext */;
-static val* varonce283;
-val* var284 /* : String */;
-char* var285 /* : NativeString */;
-long var286 /* : Int */;
-val* var287 /* : FlatString */;
-val* var288 /* : String */;
-val* var289 /* : Array[Object] */;
-long var290 /* : Int */;
-val* var291 /* : NativeArray[Object] */;
-val* var292 /* : String */;
-long var293 /* : Int */;
+val* var109 /* : nullable MType */;
+val* var111 /* : nullable MType */;
+val* var113 /* : nullable MType */;
+short int var114 /* : Bool */;
+short int var115 /* : Bool */;
+short int var117 /* : Bool */;
+short int var119 /* : Bool */;
 var_modelbuilder = p0;
 var_mclassdef = p1;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_kwinit (self) on <self:AMethPropdef> */
-var2 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_kwinit].val; /* _n_kwinit on <self:AMethPropdef> */
-var = var2;
-RET_LABEL1:(void)0;
+{ /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
+var3 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
 }
 }
-var_n_kwinit = var;
+var_mmodule = var1;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_kwnew (self) on <self:AMethPropdef> */
-var5 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_kwnew].val; /* _n_kwnew on <self:AMethPropdef> */
-var3 = var5;
-RET_LABEL4:(void)0;
+{ /* Inline modelize_property#ASignature#param_names (self) on <self:ASignature> */
+var6 = self->attrs[COLOR_nit__modelize_property__ASignature___param_names].val; /* _param_names on <self:ASignature> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_names");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 660);
+fatal_exit(1);
 }
+var4 = var6;
+RET_LABEL5:(void)0;
 }
-var_n_kwnew = var3;
-var7 = NULL;
-if (var_n_kwinit == NULL) {
-var8 = 0; /* is null */
-} else {
-var8 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_n_kwinit,var7) on <var_n_kwinit:nullable TKwinit> */
-var_other = var7;
+var_param_names = var4;
 {
-var11 = ((short int (*)(val* self, val* p0))(var_n_kwinit->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n_kwinit, var_other) /* == on <var_n_kwinit:nullable TKwinit(TKwinit)>*/;
+{ /* Inline modelize_property#ASignature#param_types (self) on <self:ASignature> */
+var9 = self->attrs[COLOR_nit__modelize_property__ASignature___param_types].val; /* _param_types on <self:ASignature> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _param_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 663);
+fatal_exit(1);
 }
-var12 = !var11;
-var9 = var12;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
+var7 = var9;
+RET_LABEL8:(void)0;
 }
-var8 = var9;
 }
-var_ = var8;
-if (var8){
-var6 = var_;
-} else {
-var13 = NULL;
-if (var_n_kwnew == NULL) {
-var14 = 0; /* is null */
-} else {
-var14 = 1; /* arg is null and recv is not */
+var_param_types = var7;
+{
+{ /* Inline parser_nodes#ASignature#n_params (self) on <self:ASignature> */
+var12 = self->attrs[COLOR_nit__parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1693);
+fatal_exit(1);
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_n_kwnew,var13) on <var_n_kwnew:nullable TKwnew> */
-var_other = var13;
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+var_ = var10;
+{
+var13 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
+}
+var_14 = var13;
+for(;;) {
 {
-var17 = ((short int (*)(val* self, val* p0))(var_n_kwnew->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n_kwnew, var_other) /* == on <var_n_kwnew:nullable TKwnew(TKwnew)>*/;
+var15 = ((short int(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_14); /* is_ok on <var_14:Iterator[AParam]>*/
 }
-var18 = !var17;
-var15 = var18;
-goto RET_LABEL16;
-RET_LABEL16:(void)0;
+if (var15){
+{
+var16 = ((val*(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_14); /* item on <var_14:Iterator[AParam]>*/
+}
+var_np = var16;
+{
+{ /* Inline parser_nodes#AParam#n_id (var_np) on <var_np:AParam> */
+var19 = var_np->attrs[COLOR_nit__parser_nodes__AParam___n_id].val; /* _n_id on <var_np:AParam> */
+if (unlikely(var19 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1707);
+fatal_exit(1);
+}
+var17 = var19;
+RET_LABEL18:(void)0;
 }
-var14 = var15;
 }
-var6 = var14;
+{
+var20 = nit__lexer_work___Token___text(var17);
 }
-var_is_init = var6;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_methid (self) on <self:AMethPropdef> */
-var21 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
-var19 = var21;
-RET_LABEL20:(void)0;
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_param_names, var20); /* Direct call array#Array#add on <var_param_names:Array[String]>*/
+}
+{
+{ /* Inline parser_nodes#AParam#n_type (var_np) on <var_np:AParam> */
+var23 = var_np->attrs[COLOR_nit__parser_nodes__AParam___n_type].val; /* _n_type on <var_np:AParam> */
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
-var_amethodid = var19;
-var22 = NULL;
-if (var_amethodid == NULL) {
-var23 = 1; /* is null */
+var_ntype = var21;
+if (var_ntype == NULL) {
+var24 = 0; /* is null */
 } else {
-var23 = 0; /* arg is null but recv is not */
+var24 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var_amethodid,var22) on <var_amethodid:nullable AMethid> */
-var_other26 = var22;
+{ /* Inline kernel#Object#!= (var_ntype,((val*)NULL)) on <var_ntype:nullable AType> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var_amethodid,var_other26) on <var_amethodid:nullable AMethid(AMethid)> */
-var29 = var_amethodid == var_other26;
-var27 = var29;
-goto RET_LABEL28;
-RET_LABEL28:(void)0;
+var27 = ((short int(*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other); /* == on <var_ntype:nullable AType(AType)>*/
 }
+var28 = !var27;
+var25 = var28;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
 }
-var24 = var27;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
-}
-var23 = var24;
+var24 = var25;
 }
-if (var23){
-var30 = !var_is_init;
-if (var30){
-if (varonce) {
-var31 = varonce;
-} else {
-var32 = "main";
-var33 = 4;
-var34 = standard___standard__NativeString___to_s_with_length(var32, var33);
-var31 = var34;
-varonce = var31;
+if (var24){
+{
+var29 = nit___nit__ModelBuilder___resolve_mtype_unchecked(var_modelbuilder, var_mmodule, var_mclassdef, var_ntype, 1);
 }
-var_name = var31;
-var_name_node = self;
-} else {
-var35 = NULL;
-if (var_n_kwinit == NULL) {
-var36 = 0; /* is null */
+var_mtype = var29;
+if (var_mtype == NULL) {
+var30 = 1; /* is null */
 } else {
-var36 = 1; /* arg is null and recv is not */
+var30 = 0; /* arg is null but recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_n_kwinit,var35) on <var_n_kwinit:nullable TKwinit> */
-var_other = var35;
+{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
+var_other33 = ((val*)NULL);
 {
-var39 = ((short int (*)(val* self, val* p0))(var_n_kwinit->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n_kwinit, var_other) /* == on <var_n_kwinit:nullable TKwinit(TKwinit)>*/;
+{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other33) on <var_mtype:nullable MType(MType)> */
+var36 = var_mtype == var_other33;
+var34 = var36;
+goto RET_LABEL35;
+RET_LABEL35:(void)0;
 }
-var40 = !var39;
-var37 = var40;
-goto RET_LABEL38;
-RET_LABEL38:(void)0;
 }
-var36 = var37;
+var31 = var34;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
 }
-if (var36){
-if (varonce41) {
-var42 = varonce41;
-} else {
-var43 = "init";
-var44 = 4;
-var45 = standard___standard__NativeString___to_s_with_length(var43, var44);
-var42 = var45;
-varonce41 = var42;
+var30 = var31;
 }
-var_name = var42;
-var_name_node = var_n_kwinit;
-} else {
-var46 = NULL;
-if (var_n_kwnew == NULL) {
-var47 = 0; /* is null */
+if (var30){
+var = 0;
+goto RET_LABEL;
 } else {
-var47 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_n_kwnew,var46) on <var_n_kwnew:nullable TKwnew> */
-var_other = var46;
+var_i = 0l;
 {
-var50 = ((short int (*)(val* self, val* p0))(var_n_kwnew->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n_kwnew, var_other) /* == on <var_n_kwnew:nullable TKwnew(TKwnew)>*/;
-}
-var51 = !var50;
-var48 = var51;
-goto RET_LABEL49;
-RET_LABEL49:(void)0;
+{ /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
+var39 = var_param_names->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
+var37 = var39;
+RET_LABEL38:(void)0;
 }
-var47 = var48;
 }
-if (var47){
-if (varonce52) {
-var53 = varonce52;
-} else {
-var54 = "new";
-var55 = 3;
-var56 = standard___standard__NativeString___to_s_with_length(var54, var55);
-var53 = var56;
-varonce52 = var53;
+{
+{ /* Inline array#AbstractArrayRead#length (var_param_types) on <var_param_types:Array[MType]> */
+var42 = var_param_types->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_param_types:Array[MType]> */
+var40 = var42;
+RET_LABEL41:(void)0;
 }
-var_name = var53;
-var_name_node = var_n_kwnew;
-} else {
-PRINT_ERROR("Runtime error: %s", "Aborted");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 640);
-show_backtrace(1);
 }
+{
+{ /* Inline kernel#Int#- (var37,var40) on <var37:Int> */
+/* Covariant cast for argument 0 (i) <var40:Int> isa OTHER */
+/* <var40:Int> isa OTHER */
+var45 = 1; /* easy <var40:Int> isa OTHER*/
+if (unlikely(!var45)) {
+var_class_name = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
 }
+var46 = var37 - var40;
+var43 = var46;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
 }
-} else {
-/* <var_amethodid:nullable AMethid(AMethid)> isa AIdMethid */
-cltype = type_nit__AIdMethid.color;
-idtype = type_nit__AIdMethid.id;
-if(cltype >= var_amethodid->type->table_size) {
-var57 = 0;
-} else {
-var57 = var_amethodid->type->type_table[cltype] == idtype;
 }
-if (var57){
+var_47 = var43;
+for(;;) {
 {
-{ /* Inline parser_nodes#AIdMethid#n_id (var_amethodid) on <var_amethodid:nullable AMethid(AIdMethid)> */
-var60 = var_amethodid->attrs[COLOR_nit__parser_nodes__AIdMethid___n_id].val; /* _n_id on <var_amethodid:nullable AMethid(AIdMethid)> */
-if (unlikely(var60 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1339);
-show_backtrace(1);
-}
-var58 = var60;
-RET_LABEL59:(void)0;
+{ /* Inline kernel#Int#< (var_i,var_47) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <var_47:Int> isa OTHER */
+/* <var_47:Int> isa OTHER */
+var50 = 1; /* easy <var_47:Int> isa OTHER*/
+if (unlikely(!var50)) {
+var_class_name53 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name53);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
+}
+var54 = var_i < var_47;
+var48 = var54;
+goto RET_LABEL49;
+RET_LABEL49:(void)0;
 }
 }
+if (var48){
 {
-var61 = nit__lexer_work___Token___text(var58);
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_param_types, var_mtype); /* Direct call array#Array#add on <var_param_types:Array[MType]>*/
 }
-var_name = var61;
-var_name_node = var_amethodid;
-} else {
 {
-var62 = nit__parser_work___Prod___collect_text(var_amethodid);
+var55 = standard___standard__Int___Discrete__successor(var_i, 1l);
 }
-var_name = var62;
-var_name_node = var_amethodid;
-if (varonce64) {
-var65 = varonce64;
+var_i = var55;
 } else {
-var66 = "-";
-var67 = 1;
-var68 = standard___standard__NativeString___to_s_with_length(var66, var67);
-var65 = var68;
-varonce64 = var65;
+goto BREAK_label;
 }
-{
-var69 = ((short int (*)(val* self, val* p0))(var_name->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_name, var65) /* == on <var_name:String>*/;
 }
-var_70 = var69;
-if (var69){
+BREAK_label: (void)0;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
-var73 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
-var71 = var73;
-RET_LABEL72:(void)0;
+{ /* Inline parser_nodes#AParam#n_dotdotdot (var_np) on <var_np:AParam> */
+var58 = var_np->attrs[COLOR_nit__parser_nodes__AParam___n_dotdotdot].val; /* _n_dotdotdot on <var_np:AParam> */
+var56 = var58;
+RET_LABEL57:(void)0;
 }
 }
-if (var71 == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 650);
-show_backtrace(1);
+if (var56 == NULL) {
+var59 = 0; /* is null */
 } else {
-{ /* Inline parser_nodes#ASignature#n_params (var71) on <var71:nullable ASignature> */
-if (unlikely(var71 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1506);
-show_backtrace(1);
+var59 = 1; /* arg is null and recv is not */
 }
-var76 = var71->attrs[COLOR_nit__parser_nodes__ASignature___n_params].val; /* _n_params on <var71:nullable ASignature> */
-if (unlikely(var76 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1506);
-show_backtrace(1);
+if (0) {
+{ /* Inline kernel#Object#!= (var56,((val*)NULL)) on <var56:nullable TDotdotdot> */
+var_other = ((val*)NULL);
+{
+var62 = ((short int(*)(val* self, val* p0))(var56->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var56, var_other); /* == on <var56:nullable TDotdotdot(TDotdotdot)>*/
 }
-var74 = var76;
-RET_LABEL75:(void)0;
+var63 = !var62;
+var60 = var63;
+goto RET_LABEL61;
+RET_LABEL61:(void)0;
 }
+var59 = var60;
 }
+if (var59){
 {
-var77 = nit___nit__ANodes___standard__abstract_collection__Collection__length(var74);
+{ /* Inline modelize_property#ASignature#vararg_rank (self) on <self:ASignature> */
+var66 = self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
+var64 = var66;
+RET_LABEL65:(void)0;
+}
 }
-var78 = 0;
 {
-{ /* Inline kernel#Int#== (var77,var78) on <var77:Int> */
-var81 = var77 == var78;
-var79 = var81;
-goto RET_LABEL80;
-RET_LABEL80:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var69 = -1l;
+var67 = var69;
+goto RET_LABEL68;
+RET_LABEL68:(void)0;
 }
 }
-var63 = var79;
+{
+{ /* Inline kernel#Int#!= (var64,var67) on <var64:Int> */
+var72 = var64 == var67;
+var73 = !var72;
+var70 = var73;
+goto RET_LABEL71;
+RET_LABEL71:(void)0;
+}
+}
+if (var70){
+if (unlikely(varonce==NULL)) {
+var74 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce75!=NULL)) {
+var76 = varonce75;
 } else {
-var63 = var_70;
+var77 = "Error: `";
+var78 = standard___standard__NativeString___to_s_with_length(var77, 8l);
+var76 = var78;
+varonce75 = var76;
 }
-if (var63){
-if (varonce82) {
-var83 = varonce82;
+((struct instance_standard__NativeArray*)var74)->values[0]=var76;
+if (likely(varonce79!=NULL)) {
+var80 = varonce79;
 } else {
-var84 = "unary -";
-var85 = 7;
-var86 = standard___standard__NativeString___to_s_with_length(var84, var85);
-var83 = var86;
-varonce82 = var83;
+var81 = "` is already a vararg";
+var82 = standard___standard__NativeString___to_s_with_length(var81, 21l);
+var80 = var82;
+varonce79 = var80;
 }
-var_name = var83;
+((struct instance_standard__NativeArray*)var74)->values[2]=var80;
 } else {
+var74 = varonce;
+varonce = NULL;
 }
+{
+{ /* Inline modelize_property#ASignature#vararg_rank (self) on <self:ASignature> */
+var85 = self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l; /* _vararg_rank on <self:ASignature> */
+var83 = var85;
+RET_LABEL84:(void)0;
 }
 }
 {
-var87 = nit__modelize_property___AMethPropdef___look_like_a_root_init(self, var_modelbuilder, var_mclassdef);
+var86 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_param_names, var83);
 }
-var_look_like_a_root_init = var87;
-var88 = NULL;
-var_mprop = var88;
-var90 = !var_is_init;
-var_91 = var90;
-if (var90){
-var89 = var_91;
-} else {
+((struct instance_standard__NativeArray*)var74)->values[1]=var86;
 {
-{ /* Inline parser_nodes#ADefinition#n_kwredef (self) on <self:AMethPropdef> */
-var94 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
-var92 = var94;
-RET_LABEL93:(void)0;
+var87 = ((val*(*)(val* self))(var74->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var74); /* native_to_s on <var74:NativeArray[String]>*/
 }
+varonce = var74;
+{
+nit___nit__ModelBuilder___error(var_modelbuilder, var_np, var87); /* Direct call modelbuilder_base#ModelBuilder#error on <var_modelbuilder:ModelBuilder>*/
 }
-var95 = NULL;
-if (var92 == NULL) {
-var96 = 0; /* is null */
+var = 0;
+goto RET_LABEL;
 } else {
-var96 = 1; /* arg is null and recv is not */
-}
-if (0) {
-{ /* Inline kernel#Object#!= (var92,var95) on <var92:nullable TKwredef> */
-var_other = var95;
 {
-var99 = ((short int (*)(val* self, val* p0))(var92->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var92, var_other) /* == on <var92:nullable TKwredef(TKwredef)>*/;
+{ /* Inline array#AbstractArrayRead#length (var_param_names) on <var_param_names:Array[String]> */
+var90 = var_param_names->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_param_names:Array[String]> */
+var88 = var90;
+RET_LABEL89:(void)0;
 }
-var100 = !var99;
-var97 = var100;
-goto RET_LABEL98;
-RET_LABEL98:(void)0;
 }
-var96 = var97;
+{
+{ /* Inline kernel#Int#- (var88,1l) on <var88:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var93 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var93)) {
+var_class_name96 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name96);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+fatal_exit(1);
 }
-var89 = var96;
+var97 = var88 - 1l;
+var91 = var97;
+goto RET_LABEL92;
+RET_LABEL92:(void)0;
 }
-if (var89){
-{
-var101 = nit___nit__ModelBuilder___try_get_mproperty_by_name(var_modelbuilder, var_name_node, var_mclassdef, var_name);
 }
-/* <var101:nullable MProperty> isa nullable MMethod */
-cltype103 = type_nullable__nit__MMethod.color;
-idtype104 = type_nullable__nit__MMethod.id;
-if(var101 == NULL) {
-var102 = 1;
-} else {
-if(cltype103 >= var101->type->table_size) {
-var102 = 0;
-} else {
-var102 = var101->type->type_table[cltype103] == idtype104;
+{
+{ /* Inline modelize_property#ASignature#vararg_rank= (self,var91) on <self:ASignature> */
+self->attrs[COLOR_nit__modelize_property__ASignature___vararg_rank].l = var91; /* _vararg_rank on <self:ASignature> */
+RET_LABEL98:(void)0;
 }
 }
-if (unlikely(!var102)) {
-var_class_name = var101 == NULL ? "null" : var101->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 657);
-show_backtrace(1);
 }
-var_mprop = var101;
 } else {
 }
-var106 = NULL;
-if (var_mprop == NULL) {
-var107 = 1; /* is null */
 } else {
-var107 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var_mprop,var106) on <var_mprop:nullable MMethod> */
-var_other26 = var106;
 {
-{ /* Inline kernel#Object#is_same_instance (var_mprop,var_other26) on <var_mprop:nullable MMethod(MMethod)> */
-var112 = var_mprop == var_other26;
-var110 = var112;
-goto RET_LABEL111;
-RET_LABEL111:(void)0;
-}
-}
-var108 = var110;
-goto RET_LABEL109;
-RET_LABEL109:(void)0;
+((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_14); /* next on <var_14:Iterator[AParam]>*/
 }
-var107 = var108;
-}
-var_113 = var107;
-if (var107){
-var105 = var_look_like_a_root_init;
 } else {
-var105 = var_113;
+goto BREAK_label99;
 }
-if (var105){
-{
-{ /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
-var116 = var_modelbuilder->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <var_modelbuilder:ModelBuilder> */
-var114 = var116;
-RET_LABEL115:(void)0;
 }
+BREAK_label99: (void)0;
+{
+((void(*)(val* self))((((long)var_14&3)?class_info[((long)var_14&3)]:var_14->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_14); /* finish on <var_14:Iterator[AParam]>*/
 }
-var_mprop = var114;
 {
-{ /* Inline parser_nodes#AMethPropdef#n_block (self) on <self:AMethPropdef> */
-var119 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_block].val; /* _n_block on <self:AMethPropdef> */
-var117 = var119;
-RET_LABEL118:(void)0;
+{ /* Inline parser_nodes#ASignature#n_type (self) on <self:ASignature> */
+var102 = self->attrs[COLOR_nit__parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
+var100 = var102;
+RET_LABEL101:(void)0;
 }
 }
-var_nb = var117;
-/* <var_nb:nullable AExpr> isa ABlockExpr */
-cltype123 = type_nit__ABlockExpr.color;
-idtype124 = type_nit__ABlockExpr.id;
-if(var_nb == NULL) {
-var122 = 0;
+var_ntype103 = var100;
+if (var_ntype103 == NULL) {
+var104 = 0; /* is null */
 } else {
-if(cltype123 >= var_nb->type->table_size) {
-var122 = 0;
-} else {
-var122 = var_nb->type->type_table[cltype123] == idtype124;
-}
+var104 = 1; /* arg is null and recv is not */
 }
-var_125 = var122;
-if (var122){
+if (0) {
+{ /* Inline kernel#Object#!= (var_ntype103,((val*)NULL)) on <var_ntype103:nullable AType> */
+var_other = ((val*)NULL);
 {
-{ /* Inline parser_nodes#ABlockExpr#n_expr (var_nb) on <var_nb:nullable AExpr(ABlockExpr)> */
-var128 = var_nb->attrs[COLOR_nit__parser_nodes__ABlockExpr___n_expr].val; /* _n_expr on <var_nb:nullable AExpr(ABlockExpr)> */
-if (unlikely(var128 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_expr");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1565);
-show_backtrace(1);
+var107 = ((short int(*)(val* self, val* p0))(var_ntype103->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype103, var_other); /* == on <var_ntype103:nullable AType(AType)>*/
 }
-var126 = var128;
-RET_LABEL127:(void)0;
+var108 = !var107;
+var105 = var108;
+goto RET_LABEL106;
+RET_LABEL106:(void)0;
 }
+var104 = var105;
 }
+if (var104){
 {
-var129 = nit___nit__ANodes___standard__abstract_collection__Collection__is_empty(var126);
-}
-var121 = var129;
-} else {
-var121 = var_125;
+var109 = nit___nit__ModelBuilder___resolve_mtype_unchecked(var_modelbuilder, var_mmodule, var_mclassdef, var_ntype103, 1);
 }
-var_130 = var121;
-if (var121){
 {
-{ /* Inline parser_nodes#ADefinition#n_doc (self) on <self:AMethPropdef> */
-var133 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_doc].val; /* _n_doc on <self:AMethPropdef> */
-var131 = var133;
-RET_LABEL132:(void)0;
-}
+{ /* Inline modelize_property#ASignature#ret_type= (self,var109) on <self:ASignature> */
+self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val = var109; /* _ret_type on <self:ASignature> */
+RET_LABEL110:(void)0;
 }
-var134 = NULL;
-if (var131 == NULL) {
-var135 = 1; /* is null */
-} else {
-var135 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var131,var134) on <var131:nullable ADoc> */
-var_other26 = var134;
 {
-{ /* Inline kernel#Object#is_same_instance (var131,var_other26) on <var131:nullable ADoc(ADoc)> */
-var140 = var131 == var_other26;
-var138 = var140;
-goto RET_LABEL139;
-RET_LABEL139:(void)0;
-}
-}
-var136 = var138;
-goto RET_LABEL137;
-RET_LABEL137:(void)0;
-}
-var135 = var136;
-}
-var120 = var135;
-} else {
-var120 = var_130;
+{ /* Inline modelize_property#ASignature#ret_type (self) on <self:ASignature> */
+var113 = self->attrs[COLOR_nit__modelize_property__ASignature___ret_type].val; /* _ret_type on <self:ASignature> */
+var111 = var113;
+RET_LABEL112:(void)0;
 }
-if (var120){
-if (varonce141) {
-var142 = varonce141;
-} else {
-var143 = "useless-init";
-var144 = 12;
-var145 = standard___standard__NativeString___to_s_with_length(var143, var144);
-var142 = var145;
-varonce141 = var142;
 }
-if (varonce146) {
-var147 = varonce146;
+if (var111 == NULL) {
+var114 = 1; /* is null */
 } else {
-var148 = "Warning: useless empty init in ";
-var149 = 31;
-var150 = standard___standard__NativeString___to_s_with_length(var148, var149);
-var147 = var150;
-varonce146 = var147;
+var114 = 0; /* arg is null but recv is not */
 }
-var151 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var151 = array_instance Array[Object] */
-var152 = 2;
-var153 = NEW_standard__NativeArray(var152, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var153)->values[0] = (val*) var147;
-((struct instance_standard__NativeArray*)var153)->values[1] = (val*) var_mclassdef;
+if (0) {
+{ /* Inline kernel#Object#== (var111,((val*)NULL)) on <var111:nullable MType> */
+var_other33 = ((val*)NULL);
 {
-((void (*)(val* self, val* p0, long p1))(var151->class->vft[COLOR_standard__array__Array__with_native]))(var151, var153, var152) /* with_native on <var151:Array[Object]>*/;
-}
+{ /* Inline kernel#Object#is_same_instance (var111,var_other33) on <var111:nullable MType(MType)> */
+var119 = var111 == var_other33;
+var117 = var119;
+goto RET_LABEL118;
+RET_LABEL118:(void)0;
 }
-{
-var154 = ((val* (*)(val* self))(var151->class->vft[COLOR_standard__string__Object__to_s]))(var151) /* to_s on <var151:Array[Object]>*/;
 }
-{
-nit___nit__ModelBuilder___advice(var_modelbuilder, self, var142, var154); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+var115 = var117;
+goto RET_LABEL116;
+RET_LABEL116:(void)0;
 }
-} else {
+var114 = var115;
 }
+if (var114){
+var = 0;
+goto RET_LABEL;
 } else {
 }
-var155 = NULL;
-if (var_mprop == NULL) {
-var156 = 1; /* is null */
 } else {
-var156 = 0; /* arg is null but recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#== (var_mprop,var155) on <var_mprop:nullable MMethod> */
-var_other26 = var155;
 {
-{ /* Inline kernel#Object#is_same_instance (var_mprop,var_other26) on <var_mprop:nullable MMethod(MMethod)> */
-var161 = var_mprop == var_other26;
-var159 = var161;
-goto RET_LABEL160;
-RET_LABEL160:(void)0;
-}
+{ /* Inline modelize_property#ASignature#is_visited= (self,1) on <self:ASignature> */
+self->attrs[COLOR_nit__modelize_property__ASignature___is_visited].s = 1; /* _is_visited on <self:ASignature> */
+RET_LABEL120:(void)0;
 }
-var157 = var159;
-goto RET_LABEL158;
-RET_LABEL158:(void)0;
 }
-var156 = var157;
+var = 1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
-if (var156){
+/* method modelize_property#ASignature#check_signature for (self: ASignature, ModelBuilder, MClassDef): Bool */
+short int nit__modelize_property___ASignature___check_signature(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_mclassdef /* var mclassdef: MClassDef */;
+short int var_res /* var res: Bool */;
+val* var1 /* : ANodes[AParam] */;
+val* var3 /* : ANodes[AParam] */;
+val* var_ /* var : ANodes[AParam] */;
+val* var4 /* : Iterator[ANode] */;
+val* var_5 /* var : Iterator[AParam] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_np /* var np: AParam */;
+val* var8 /* : nullable AType */;
+val* var10 /* : nullable AType */;
+val* var_ntype /* var ntype: nullable AType */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+val* var16 /* : MModule */;
+val* var18 /* : MModule */;
+val* var19 /* : nullable MType */;
+short int var20 /* : Bool */;
+short int var21 /* : Bool */;
+val* var_other23 /* var other: nullable Object */;
+short int var24 /* : Bool */;
+short int var26 /* : Bool */;
+val* var27 /* : nullable AType */;
+val* var29 /* : nullable AType */;
+val* var_ntype30 /* var ntype: nullable AType */;
+short int var31 /* : Bool */;
+short int var32 /* : Bool */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+val* var36 /* : MModule */;
+val* var38 /* : MModule */;
+val* var39 /* : nullable MType */;
+short int var40 /* : Bool */;
+short int var41 /* : Bool */;
+short int var43 /* : Bool */;
+short int var45 /* : Bool */;
+var_modelbuilder = p0;
+var_mclassdef = p1;
+var_res = 1;
 {
-{ /* Inline parser_nodes#ADefinition#n_visibility (self) on <self:AMethPropdef> */
-var164 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
-var162 = var164;
-RET_LABEL163:(void)0;
-}
+{ /* Inline parser_nodes#ASignature#n_params (self) on <self:ASignature> */
+var3 = self->attrs[COLOR_nit__parser_nodes__ASignature___n_params].val; /* _n_params on <self:ASignature> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1693);
+fatal_exit(1);
 }
-{
-var165 = nit__modelize_property___APropdef___new_property_visibility(self, var_modelbuilder, var_mclassdef, var162);
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-var_mvisibility = var165;
-var166 = NEW_nit__MMethod(&type_nit__MMethod);
-{
-((void (*)(val* self, val* p0))(var166->class->vft[COLOR_nit__model__MProperty__intro_mclassdef_61d]))(var166, var_mclassdef) /* intro_mclassdef= on <var166:MMethod>*/;
 }
+var_ = var1;
 {
-((void (*)(val* self, val* p0))(var166->class->vft[COLOR_nit__model__MProperty__name_61d]))(var166, var_name) /* name= on <var166:MMethod>*/;
+var4 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_);
 }
+var_5 = var4;
+for(;;) {
 {
-((void (*)(val* self, val* p0))(var166->class->vft[COLOR_nit__model__MProperty__visibility_61d]))(var166, var_mvisibility) /* visibility= on <var166:MMethod>*/;
+var6 = ((short int(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_5); /* is_ok on <var_5:Iterator[AParam]>*/
 }
+if (var6){
 {
-((void (*)(val* self))(var166->class->vft[COLOR_standard__kernel__Object__init]))(var166) /* init on <var166:MMethod>*/;
+var7 = ((val*(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_5); /* item on <var_5:Iterator[AParam]>*/
 }
-var_mprop = var166;
-var_168 = var_look_like_a_root_init;
-if (var_look_like_a_root_init){
+var_np = var7;
 {
-{ /* Inline modelize_property#ModelBuilder#the_root_init_mmethod (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
-var171 = var_modelbuilder->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val; /* _the_root_init_mmethod on <var_modelbuilder:ModelBuilder> */
-var169 = var171;
-RET_LABEL170:(void)0;
+{ /* Inline parser_nodes#AParam#n_type (var_np) on <var_np:AParam> */
+var10 = var_np->attrs[COLOR_nit__parser_nodes__AParam___n_type].val; /* _n_type on <var_np:AParam> */
+var8 = var10;
+RET_LABEL9:(void)0;
 }
 }
-var172 = NULL;
-if (var169 == NULL) {
-var173 = 1; /* is null */
+var_ntype = var8;
+if (var_ntype == NULL) {
+var11 = 0; /* is null */
 } else {
-var173 = 0; /* arg is null but recv is not */
+var11 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#== (var169,var172) on <var169:nullable MMethod> */
-var_other26 = var172;
+{ /* Inline kernel#Object#!= (var_ntype,((val*)NULL)) on <var_ntype:nullable AType> */
+var_other = ((val*)NULL);
 {
-{ /* Inline kernel#Object#is_same_instance (var169,var_other26) on <var169:nullable MMethod(MMethod)> */
-var178 = var169 == var_other26;
-var176 = var178;
-goto RET_LABEL177;
-RET_LABEL177:(void)0;
+var14 = ((short int(*)(val* self, val* p0))(var_ntype->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype, var_other); /* == on <var_ntype:nullable AType(AType)>*/
+}
+var15 = !var14;
+var12 = var15;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
+var11 = var12;
 }
-var174 = var176;
-goto RET_LABEL175;
-RET_LABEL175:(void)0;
+if (var11){
+{
+{ /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
+var18 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
 }
-var173 = var174;
+var16 = var18;
+RET_LABEL17:(void)0;
 }
-var167 = var173;
-} else {
-var167 = var_168;
 }
-if (var167){
 {
-{ /* Inline modelize_property#ModelBuilder#the_root_init_mmethod= (var_modelbuilder,var_mprop) on <var_modelbuilder:ModelBuilder> */
-var_modelbuilder->attrs[COLOR_nit__modelize_property__ModelBuilder___the_root_init_mmethod].val = var_mprop; /* _the_root_init_mmethod on <var_modelbuilder:ModelBuilder> */
-RET_LABEL179:(void)0;
+var19 = nit___nit__ModelBuilder___resolve_mtype(var_modelbuilder, var16, var_mclassdef, var_ntype);
 }
+if (var19 == NULL) {
+var20 = 1; /* is null */
+} else {
+var20 = 0; /* arg is null but recv is not */
 }
-var180 = 1;
+if (0) {
+{ /* Inline kernel#Object#== (var19,((val*)NULL)) on <var19:nullable MType> */
+var_other23 = ((val*)NULL);
 {
-{ /* Inline model#MMethod#is_root_init= (var_mprop,var180) on <var_mprop:nullable MMethod(MMethod)> */
-var_mprop->attrs[COLOR_nit__model__MMethod___is_root_init].s = var180; /* _is_root_init on <var_mprop:nullable MMethod(MMethod)> */
-RET_LABEL181:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var19,var_other23) on <var19:nullable MType(MType)> */
+var26 = var19 == var_other23;
+var24 = var26;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
 }
 }
-} else {
+var21 = var24;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
-{
-{ /* Inline model#MMethod#is_init= (var_mprop,var_is_init) on <var_mprop:nullable MMethod(MMethod)> */
-var_mprop->attrs[COLOR_nit__model__MMethod___is_init].s = var_is_init; /* _is_init on <var_mprop:nullable MMethod(MMethod)> */
-RET_LABEL182:(void)0;
+var20 = var21;
 }
+if (var20){
+var_res = 0;
+} else {
 }
-var183 = NULL;
-if (var_n_kwnew == NULL) {
-var184 = 0; /* is null */
 } else {
-var184 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_n_kwnew,var183) on <var_n_kwnew:nullable TKwnew> */
-var_other = var183;
 {
-var187 = ((short int (*)(val* self, val* p0))(var_n_kwnew->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n_kwnew, var_other) /* == on <var_n_kwnew:nullable TKwnew(TKwnew)>*/;
+((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_5); /* next on <var_5:Iterator[AParam]>*/
 }
-var188 = !var187;
-var185 = var188;
-goto RET_LABEL186;
-RET_LABEL186:(void)0;
+} else {
+goto BREAK_label;
 }
-var184 = var185;
 }
+BREAK_label: (void)0;
 {
-{ /* Inline model#MMethod#is_new= (var_mprop,var184) on <var_mprop:nullable MMethod(MMethod)> */
-var_mprop->attrs[COLOR_nit__model__MMethod___is_new].s = var184; /* _is_new on <var_mprop:nullable MMethod(MMethod)> */
-RET_LABEL189:(void)0;
-}
+((void(*)(val* self))((((long)var_5&3)?class_info[((long)var_5&3)]:var_5->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_5); /* finish on <var_5:Iterator[AParam]>*/
 }
 {
-{ /* Inline parser_nodes#ANode#parent (self) on <self:AMethPropdef> */
-var192 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <self:AMethPropdef> */
-var190 = var192;
-RET_LABEL191:(void)0;
+{ /* Inline parser_nodes#ASignature#n_type (self) on <self:ASignature> */
+var29 = self->attrs[COLOR_nit__parser_nodes__ASignature___n_type].val; /* _n_type on <self:ASignature> */
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
-/* <var190:nullable ANode> isa ATopClassdef */
-cltype194 = type_nit__ATopClassdef.color;
-idtype195 = type_nit__ATopClassdef.id;
-if(var190 == NULL) {
-var193 = 0;
+var_ntype30 = var27;
+if (var_ntype30 == NULL) {
+var31 = 0; /* is null */
 } else {
-if(cltype194 >= var190->type->table_size) {
-var193 = 0;
-} else {
-var193 = var190->type->type_table[cltype194] == idtype195;
-}
+var31 = 1; /* arg is null and recv is not */
 }
-if (var193){
-var196 = 1;
+if (0) {
+{ /* Inline kernel#Object#!= (var_ntype30,((val*)NULL)) on <var_ntype30:nullable AType> */
+var_other = ((val*)NULL);
 {
-{ /* Inline model#MMethod#is_toplevel= (var_mprop,var196) on <var_mprop:nullable MMethod(MMethod)> */
-var_mprop->attrs[COLOR_nit__model__MMethod___is_toplevel].s = var196; /* _is_toplevel on <var_mprop:nullable MMethod(MMethod)> */
-RET_LABEL197:(void)0;
+var34 = ((short int(*)(val* self, val* p0))(var_ntype30->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ntype30, var_other); /* == on <var_ntype30:nullable AType(AType)>*/
 }
+var35 = !var34;
+var32 = var35;
+goto RET_LABEL33;
+RET_LABEL33:(void)0;
 }
-} else {
+var31 = var32;
 }
+if (var31){
 {
-{ /* Inline parser_nodes#ADefinition#n_kwredef (self) on <self:AMethPropdef> */
-var200 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
-var198 = var200;
-RET_LABEL199:(void)0;
+{ /* Inline model#MClassDef#mmodule (var_mclassdef) on <var_mclassdef:MClassDef> */
+var38 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_mclassdef:MClassDef> */
+if (unlikely(var38 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
+fatal_exit(1);
+}
+var36 = var38;
+RET_LABEL37:(void)0;
 }
 }
-var201 = 0;
 {
-var202 = nit__modelize_property___APropdef___check_redef_keyword(self, var_modelbuilder, var_mclassdef, var198, var201, var_mprop);
+var39 = nit___nit__ModelBuilder___resolve_mtype(var_modelbuilder, var36, var_mclassdef, var_ntype30);
 }
+if (var39 == NULL) {
+var40 = 1; /* is null */
 } else {
+var40 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var39,((val*)NULL)) on <var39:nullable MType> */
+var_other23 = ((val*)NULL);
 {
-{ /* Inline parser_nodes#ADefinition#n_kwredef (self) on <self:AMethPropdef> */
-var205 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
-var203 = var205;
-RET_LABEL204:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var39,var_other23) on <var39:nullable MType(MType)> */
+var45 = var39 == var_other23;
+var43 = var45;
+goto RET_LABEL44;
+RET_LABEL44:(void)0;
+}
+}
+var41 = var43;
+goto RET_LABEL42;
+RET_LABEL42:(void)0;
 }
+var40 = var41;
 }
-/* <self:AMethPropdef> isa AMainMethPropdef */
-cltype207 = type_nit__AMainMethPropdef.color;
-idtype208 = type_nit__AMainMethPropdef.id;
-if(cltype207 >= self->type->table_size) {
-var206 = 0;
+if (var40){
+var_res = 0;
 } else {
-var206 = self->type->type_table[cltype207] == idtype208;
 }
-var209 = !var206;
-{
-var210 = nit__modelize_property___APropdef___check_redef_keyword(self, var_modelbuilder, var_mclassdef, var203, var209, var_mprop);
+} else {
 }
-var211 = !var210;
-if (var211){
+var = var_res;
 goto RET_LABEL;
-} else {
+RET_LABEL:;
+return var;
 }
-{
-{ /* Inline parser_nodes#ADefinition#n_visibility (self) on <self:AMethPropdef> */
-var214 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
-var212 = var214;
-RET_LABEL213:(void)0;
+/* method modelize_property#AParam#mparameter= for (self: AParam, nullable MParameter) */
+void nit__modelize_property___AParam___mparameter_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__modelize_property__AParam___mparameter].val = p0; /* _mparameter on <self:AParam> */
+RET_LABEL:;
+}
+/* method modelize_property#AMethPropdef#is_autoinit for (self: AMethPropdef): Bool */
+short int nit__modelize_property___AMethPropdef___is_autoinit(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_nit__modelize_property__AMethPropdef___is_autoinit].s; /* _is_autoinit on <self:AMethPropdef> */
+var = var1;
+RET_LABEL:;
+return var;
 }
+/* method modelize_property#AMethPropdef#is_autoinit= for (self: AMethPropdef, Bool) */
+void nit__modelize_property___AMethPropdef___is_autoinit_61d(val* self, short int p0) {
+self->attrs[COLOR_nit__modelize_property__AMethPropdef___is_autoinit].s = p0; /* _is_autoinit on <self:AMethPropdef> */
+RET_LABEL:;
 }
+/* method modelize_property#AMethPropdef#look_like_a_root_init for (self: AMethPropdef, ModelBuilder, MClassDef): Bool */
+short int nit__modelize_property___AMethPropdef___look_like_a_root_init(val* self, val* p0, val* p1) {
+short int var /* : Bool */;
+val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
+val* var_mclassdef /* var mclassdef: MClassDef */;
+val* var1 /* : nullable TKwinit */;
+val* var3 /* : nullable TKwinit */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable AMethid */;
+val* var12 /* : nullable AMethid */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var_other16 /* var other: nullable Object */;
+short int var17 /* : Bool */;
+short int var18 /* : Bool */;
+static val* varonce;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+val* var21 /* : FlatString */;
+val* var22 /* : nullable AAnnotation */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+short int var26 /* : Bool */;
+short int var27 /* : Bool */;
+val* var28 /* : nullable ANode */;
+val* var30 /* : nullable ANode */;
+val* var31 /* : nullable ANode */;
+val* var33 /* : nullable ANode */;
+short int var34 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+val* var_amod /* var amod: AModule */;
+val* var35 /* : nullable AModuledecl */;
+val* var37 /* : nullable AModuledecl */;
+val* var_amoddecl /* var amoddecl: nullable AModuledecl */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
+short int var41 /* : Bool */;
+short int var42 /* : Bool */;
+static val* varonce43;
+val* var44 /* : String */;
+char* var45 /* : NativeString */;
+val* var46 /* : FlatString */;
+val* var47 /* : nullable AAnnotation */;
+val* var_old /* var old: nullable AAnnotation */;
+short int var48 /* : Bool */;
+short int var49 /* : Bool */;
+short int var51 /* : Bool */;
+short int var52 /* : Bool */;
+val* var53 /* : nullable ASignature */;
+val* var55 /* : nullable ASignature */;
+val* var56 /* : ANodes[AParam] */;
+val* var58 /* : ANodes[AParam] */;
+long var59 /* : Int */;
+short int var60 /* : Bool */;
+short int var62 /* : Bool */;
+int cltype63;
+int idtype64;
+const char* var_class_name65;
+short int var66 /* : Bool */;
+static val* varonce67;
+val* var68 /* : String */;
+char* var69 /* : NativeString */;
+val* var70 /* : FlatString */;
+val* var72 /* : NativeArray[String] */;
+static val* varonce71;
+static val* varonce73;
+val* var74 /* : String */;
+char* var75 /* : NativeString */;
+val* var76 /* : FlatString */;
+val* var77 /* : String */;
+val* var78 /* : String */;
+val* var79 /* : nullable AVisibility */;
+val* var81 /* : nullable AVisibility */;
+short int var82 /* : Bool */;
+int cltype83;
+int idtype84;
+short int var85 /* : Bool */;
+static val* varonce86;
+val* var87 /* : String */;
+char* var88 /* : NativeString */;
+val* var89 /* : FlatString */;
+val* var91 /* : NativeArray[String] */;
+static val* varonce90;
+static val* varonce92;
+val* var93 /* : String */;
+char* var94 /* : NativeString */;
+val* var95 /* : FlatString */;
+val* var96 /* : String */;
+val* var97 /* : String */;
+var_modelbuilder = p0;
+var_mclassdef = p1;
 {
-nit__modelize_property___APropdef___check_redef_property_visibility(self, var_modelbuilder, var212, var_mprop); /* Direct call modelize_property#APropdef#check_redef_property_visibility on <self:AMethPropdef>*/
+{ /* Inline parser_nodes#AMethPropdef#n_kwinit (self) on <self:AMethPropdef> */
+var3 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_kwinit].val; /* _n_kwinit on <self:AMethPropdef> */
+var1 = var3;
+RET_LABEL2:(void)0;
 }
 }
-if (var_is_init){
+if (var1 == NULL) {
+var4 = 1; /* is null */
+} else {
+var4 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var1,((val*)NULL)) on <var1:nullable TKwinit> */
+var_other = ((val*)NULL);
 {
-{ /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
-var217 = var_mclassdef->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
-if (unlikely(var217 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 352);
-show_backtrace(1);
+{ /* Inline kernel#Object#is_same_instance (var1,var_other) on <var1:nullable TKwinit(TKwinit)> */
+var9 = var1 == var_other;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
-var215 = var217;
-RET_LABEL216:(void)0;
 }
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
 }
-var_218 = var215;
-{
-var219 = ((val* (*)(val* self))(var_218->class->vft[COLOR_standard__abstract_collection__MapRead__iterator]))(var_218) /* iterator on <var_218:Map[MProperty, APropdef]>*/;
+var4 = var5;
 }
-var_220 = var219;
-for(;;) {
-{
-var221 = ((short int (*)(val* self))(var_220->class->vft[COLOR_standard__abstract_collection__MapIterator__is_ok]))(var_220) /* is_ok on <var_220:MapIterator[MProperty, APropdef]>*/;
+if (var4){
+var = 0;
+goto RET_LABEL;
+} else {
 }
-if (var221){
 {
-var222 = ((val* (*)(val* self))(var_220->class->vft[COLOR_standard__abstract_collection__MapIterator__key]))(var_220) /* key on <var_220:MapIterator[MProperty, APropdef]>*/;
+{ /* Inline parser_nodes#AMethPropdef#n_methid (self) on <self:AMethPropdef> */
+var12 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_methid].val; /* _n_methid on <self:AMethPropdef> */
+var10 = var12;
+RET_LABEL11:(void)0;
 }
-var_p = var222;
-{
-var223 = ((val* (*)(val* self))(var_220->class->vft[COLOR_standard__abstract_collection__MapIterator__item]))(var_220) /* item on <var_220:MapIterator[MProperty, APropdef]>*/;
 }
-var_n = var223;
-{
-{ /* Inline kernel#Object#!= (var_p,var_mprop) on <var_p:MProperty> */
-var_other = var_mprop;
+if (var10 == NULL) {
+var13 = 0; /* is null */
+} else {
+var13 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var10,((val*)NULL)) on <var10:nullable AMethid> */
+var_other16 = ((val*)NULL);
 {
-var228 = ((short int (*)(val* self, val* p0))(var_p->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_p, var_other) /* == on <var_p:MProperty>*/;
+var17 = ((short int(*)(val* self, val* p0))(var10->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var10, var_other16); /* == on <var10:nullable AMethid(AMethid)>*/
 }
-var229 = !var228;
-var226 = var229;
-goto RET_LABEL227;
-RET_LABEL227:(void)0;
+var18 = !var17;
+var14 = var18;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
+var13 = var14;
 }
-var_230 = var226;
-if (var226){
-/* <var_p:MProperty> isa MMethod */
-cltype232 = type_nit__MMethod.color;
-idtype233 = type_nit__MMethod.id;
-if(cltype232 >= var_p->type->table_size) {
-var231 = 0;
+if (var13){
+var = 0;
+goto RET_LABEL;
 } else {
-var231 = var_p->type->type_table[cltype232] == idtype233;
 }
-var225 = var231;
+if (likely(varonce!=NULL)) {
+var19 = varonce;
 } else {
-var225 = var_230;
-}
-var_234 = var225;
-if (var225){
-{
-{ /* Inline model#MProperty#name (var_p) on <var_p:MProperty(MMethod)> */
-var237 = var_p->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var_p:MProperty(MMethod)> */
-if (unlikely(var237 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1741);
-show_backtrace(1);
-}
-var235 = var237;
-RET_LABEL236:(void)0;
-}
+var20 = "old_style_init";
+var21 = standard___standard__NativeString___to_s_with_length(var20, 14l);
+var19 = var21;
+varonce = var19;
 }
 {
-var238 = ((short int (*)(val* self, val* p0))(var235->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var235, var_name) /* == on <var235:String>*/;
+var22 = nit__annotation___Prod___get_single_annotation(self, var19, var_modelbuilder);
 }
-var224 = var238;
+if (var22 == NULL) {
+var23 = 0; /* is null */
 } else {
-var224 = var_234;
+var23 = 1; /* arg is null and recv is not */
 }
-if (var224){
+if (0) {
+{ /* Inline kernel#Object#!= (var22,((val*)NULL)) on <var22:nullable AAnnotation> */
+var_other16 = ((val*)NULL);
 {
-{ /* Inline parser_nodes#ADefinition#n_kwredef (self) on <self:AMethPropdef> */
-var241 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_kwredef].val; /* _n_kwredef on <self:AMethPropdef> */
-var239 = var241;
-RET_LABEL240:(void)0;
+var26 = ((short int(*)(val* self, val* p0))(var22->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var22, var_other16); /* == on <var22:nullable AAnnotation(AAnnotation)>*/
 }
+var27 = !var26;
+var24 = var27;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
 }
-var242 = 0;
-{
-var243 = nit__modelize_property___APropdef___check_redef_keyword(self, var_modelbuilder, var_mclassdef, var239, var242, var_p);
+var23 = var24;
 }
-goto BREAK_label;
+if (var23){
+var = 0;
+goto RET_LABEL;
 } else {
 }
 {
-((void (*)(val* self))(var_220->class->vft[COLOR_standard__abstract_collection__MapIterator__next]))(var_220) /* next on <var_220:MapIterator[MProperty, APropdef]>*/;
+{ /* Inline parser_nodes#ANode#parent (self) on <self:AMethPropdef> */
+var30 = self->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <self:AMethPropdef> */
+var28 = var30;
+RET_LABEL29:(void)0;
 }
-} else {
-goto BREAK_label;
 }
+if (var28 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 749);
+fatal_exit(1);
+} else {
+{ /* Inline parser_nodes#ANode#parent (var28) on <var28:nullable ANode> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 46);
+fatal_exit(1);
 }
-BREAK_label: (void)0;
-{
-{ /* Inline abstract_collection#MapIterator#finish (var_220) on <var_220:MapIterator[MProperty, APropdef]> */
-RET_LABEL244:(void)0;
+var33 = var28->attrs[COLOR_nit__parser_nodes__ANode___parent].val; /* _parent on <var28:nullable ANode> */
+var31 = var33;
+RET_LABEL32:(void)0;
 }
 }
+/* <var31:nullable ANode> isa AModule */
+cltype = type_nit__AModule.color;
+idtype = type_nit__AModule.id;
+if(var31 == NULL) {
+var34 = 0;
+} else {
+if(cltype >= var31->type->table_size) {
+var34 = 0;
 } else {
+var34 = var31->type->type_table[cltype] == idtype;
 }
+}
+if (unlikely(!var34)) {
+var_class_name = var31 == NULL ? "null" : var31->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "AModule", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 749);
+fatal_exit(1);
+}
+var_amod = var31;
 {
-{ /* Inline modelize_property#MClassDef#mprop2npropdef (var_mclassdef) on <var_mclassdef:MClassDef> */
-var247 = var_mclassdef->attrs[COLOR_nit__modelize_property__MClassDef___mprop2npropdef].val; /* _mprop2npropdef on <var_mclassdef:MClassDef> */
-if (unlikely(var247 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mprop2npropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 352);
-show_backtrace(1);
+{ /* Inline parser_nodes#AModule#n_moduledecl (var_amod) on <var_amod:AModule> */
+var37 = var_amod->attrs[COLOR_nit__parser_nodes__AModule___n_moduledecl].val; /* _n_moduledecl on <var_amod:AModule> */
+var35 = var37;
+RET_LABEL36:(void)0;
 }
-var245 = var247;
-RET_LABEL246:(void)0;
 }
+var_amoddecl = var35;
+if (var_amoddecl == NULL) {
+var38 = 0; /* is null */
+} else {
+var38 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_amoddecl,((val*)NULL)) on <var_amoddecl:nullable AModuledecl> */
+var_other16 = ((val*)NULL);
 {
-((void (*)(val* self, val* p0, val* p1))(var245->class->vft[COLOR_standard__abstract_collection__Map___91d_93d_61d]))(var245, var_mprop, self) /* []= on <var245:Map[MProperty, APropdef]>*/;
+var41 = ((short int(*)(val* self, val* p0))(var_amoddecl->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_amoddecl, var_other16); /* == on <var_amoddecl:nullable AModuledecl(AModuledecl)>*/
 }
-var248 = NEW_nit__MMethodDef(&type_nit__MMethodDef);
-{
-{ /* Inline parser_nodes#ANode#location (self) on <self:AMethPropdef> */
-var251 = self->attrs[COLOR_nit__parser_nodes__ANode___location].val; /* _location on <self:AMethPropdef> */
-if (unlikely(var251 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 23);
-show_backtrace(1);
+var42 = !var41;
+var39 = var42;
+goto RET_LABEL40;
+RET_LABEL40:(void)0;
 }
-var249 = var251;
-RET_LABEL250:(void)0;
+var38 = var39;
 }
+if (var38){
+if (likely(varonce43!=NULL)) {
+var44 = varonce43;
+} else {
+var45 = "old_style_init";
+var46 = standard___standard__NativeString___to_s_with_length(var45, 14l);
+var44 = var46;
+varonce43 = var44;
 }
 {
-((void (*)(val* self, val* p0))(var248->class->vft[COLOR_nit__model__MPropDef__mclassdef_61d]))(var248, var_mclassdef) /* mclassdef= on <var248:MMethodDef>*/;
+var47 = nit__annotation___Prod___get_single_annotation(var_amoddecl, var44, var_modelbuilder);
 }
-{
-((void (*)(val* self, val* p0))(var248->class->vft[COLOR_nit__model__MPropDef__mproperty_61d]))(var248, var_mprop) /* mproperty= on <var248:MMethodDef>*/;
+var_old = var47;
+if (var_old == NULL) {
+var48 = 0; /* is null */
+} else {
+var48 = 1; /* arg is null and recv is not */
 }
+if (0) {
+{ /* Inline kernel#Object#!= (var_old,((val*)NULL)) on <var_old:nullable AAnnotation> */
+var_other16 = ((val*)NULL);
 {
-((void (*)(val* self, val* p0))(var248->class->vft[COLOR_nit__model__MPropDef__location_61d]))(var248, var249) /* location= on <var248:MMethodDef>*/;
+var51 = ((short int(*)(val* self, val* p0))(var_old->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_old, var_other16); /* == on <var_old:nullable AAnnotation(AAnnotation)>*/
 }
-{
-((void (*)(val* self))(var248->class->vft[COLOR_standard__kernel__Object__init]))(var248) /* init on <var248:MMethodDef>*/;
+var52 = !var51;
+var49 = var52;
+goto RET_LABEL50;
+RET_LABEL50:(void)0;
 }
-var_mpropdef = var248;
-{
-nit__modelize_property___APropdef___set_doc(self, var_mpropdef, var_modelbuilder); /* Direct call modelize_property#APropdef#set_doc on <self:AMethPropdef>*/
+var48 = var49;
 }
-/* <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
-type_struct = self->type->resolution_table->types[COLOR_nullable__nit__modelize_property__APropdef__MPROPDEF];
-cltype253 = type_struct->color;
-idtype254 = type_struct->id;
-if(cltype253 >= var_mpropdef->type->table_size) {
-var252 = 0;
+if (var48){
+var = 0;
+goto RET_LABEL;
 } else {
-var252 = var_mpropdef->type->type_table[cltype253] == idtype254;
 }
-if (unlikely(!var252)) {
-var_class_name255 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name255);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 697);
-show_backtrace(1);
-}
-{
-{ /* Inline modelize_property#APropdef#mpropdef= (self,var_mpropdef) on <self:AMethPropdef> */
-/* Covariant cast for argument 0 (mpropdef) <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
-/* <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
-type_struct260 = self->type->resolution_table->types[COLOR_nullable__nit__modelize_property__APropdef__MPROPDEF];
-cltype258 = type_struct260->color;
-idtype259 = type_struct260->id;
-if(cltype258 >= var_mpropdef->type->table_size) {
-var257 = 0;
 } else {
-var257 = var_mpropdef->type->type_table[cltype258] == idtype259;
 }
-if (unlikely(!var257)) {
-var_class_name261 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name261);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 405);
-show_backtrace(1);
+{
+{ /* Inline parser_nodes#AMethPropdef#n_signature (self) on <self:AMethPropdef> */
+var55 = self->attrs[COLOR_nit__parser_nodes__AMethPropdef___n_signature].val; /* _n_signature on <self:AMethPropdef> */
+var53 = var55;
+RET_LABEL54:(void)0;
 }
-self->attrs[COLOR_nit__modelize_property__APropdef___mpropdef].val = var_mpropdef; /* _mpropdef on <self:AMethPropdef> */
-RET_LABEL256:(void)0;
 }
+if (var53 == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 756);
+fatal_exit(1);
+} else {
+{ /* Inline parser_nodes#ASignature#n_params (var53) on <var53:nullable ASignature> */
+if (unlikely(var53 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1693);
+fatal_exit(1);
 }
-{
-{ /* Inline modelize_property#ModelBuilder#mpropdef2npropdef (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
-var264 = var_modelbuilder->attrs[COLOR_nit__modelize_property__ModelBuilder___mpropdef2npropdef].val; /* _mpropdef2npropdef on <var_modelbuilder:ModelBuilder> */
-if (unlikely(var264 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef2npropdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelize_property, 40);
-show_backtrace(1);
+var58 = var53->attrs[COLOR_nit__parser_nodes__ASignature___n_params].val; /* _n_params on <var53:nullable ASignature> */
+if (unlikely(var58 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_params");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1693);
+fatal_exit(1);
 }
-var262 = var264;
-RET_LABEL263:(void)0;
+var56 = var58;
+RET_LABEL57:(void)0;
 }
 }
 {
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var262, var_mpropdef, self); /* Direct call hash_collection#HashMap#[]= on <var262:HashMap[MPropDef, APropdef]>*/
+var59 = nit___nit__ANodes___standard__abstract_collection__Collection__length(var56);
 }
 {
-var265 = nit___nit__MPropDef___is_intro(var_mpropdef);
+{ /* Inline kernel#Int#> (var59,0l) on <var59:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var62 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var62)) {
+var_class_name65 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name65);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
+}
+var66 = var59 > 0l;
+var60 = var66;
+goto RET_LABEL61;
+RET_LABEL61:(void)0;
 }
-if (var265){
-{
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
-var268 = var_modelbuilder->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var_modelbuilder:ModelBuilder> */
-if (unlikely(var268 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
 }
-var266 = var268;
-RET_LABEL267:(void)0;
+if (var60){
+if (likely(varonce67!=NULL)) {
+var68 = varonce67;
+} else {
+var69 = "old-init";
+var70 = standard___standard__NativeString___to_s_with_length(var69, 8l);
+var68 = var70;
+varonce67 = var68;
 }
+if (unlikely(varonce71==NULL)) {
+var72 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce73!=NULL)) {
+var74 = varonce73;
+} else {
+var75 = "Warning: init with signature in ";
+var76 = standard___standard__NativeString___to_s_with_length(var75, 32l);
+var74 = var76;
+varonce73 = var74;
 }
-if (varonce269) {
-var270 = varonce269;
+((struct instance_standard__NativeArray*)var72)->values[0]=var74;
 } else {
-var271 = " introduces new method ";
-var272 = 23;
-var273 = standard___standard__NativeString___to_s_with_length(var271, var272);
-var270 = var273;
-varonce269 = var270;
+var72 = varonce71;
+varonce71 = NULL;
 }
 {
-var274 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_mprop);
+var77 = ((val*(*)(val* self))(var_mclassdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mclassdef); /* to_s on <var_mclassdef:MClassDef>*/
 }
-var275 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var275 = array_instance Array[Object] */
-var276 = 3;
-var277 = NEW_standard__NativeArray(var276, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var277)->values[0] = (val*) var_mpropdef;
-((struct instance_standard__NativeArray*)var277)->values[1] = (val*) var270;
-((struct instance_standard__NativeArray*)var277)->values[2] = (val*) var274;
+((struct instance_standard__NativeArray*)var72)->values[1]=var77;
 {
-((void (*)(val* self, val* p0, long p1))(var275->class->vft[COLOR_standard__array__Array__with_native]))(var275, var277, var276) /* with_native on <var275:Array[Object]>*/;
-}
+var78 = ((val*(*)(val* self))(var72->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var72); /* native_to_s on <var72:NativeArray[String]>*/
 }
+varonce71 = var72;
 {
-var278 = ((val* (*)(val* self))(var275->class->vft[COLOR_standard__string__Object__to_s]))(var275) /* to_s on <var275:Array[Object]>*/;
+nit___nit__ModelBuilder___advice(var_modelbuilder, self, var68, var78); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
+}
+var = 0;
+goto RET_LABEL;
+} else {
 }
-var279 = 4;
 {
-nit___nit__ToolContext___info(var266, var278, var279); /* Direct call toolcontext#ToolContext#info on <var266:ToolContext>*/
+{ /* Inline parser_nodes#ADefinition#n_visibility (self) on <self:AMethPropdef> */
+var81 = self->attrs[COLOR_nit__parser_nodes__ADefinition___n_visibility].val; /* _n_visibility on <self:AMethPropdef> */
+var79 = var81;
+RET_LABEL80:(void)0;
+}
 }
+/* <var79:nullable AVisibility> isa APublicVisibility */
+cltype83 = type_nit__APublicVisibility.color;
+idtype84 = type_nit__APublicVisibility.id;
+if(var79 == NULL) {
+var82 = 0;
 } else {
-{
-{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (var_modelbuilder) on <var_modelbuilder:ModelBuilder> */
-var282 = var_modelbuilder->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var_modelbuilder:ModelBuilder> */
-if (unlikely(var282 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
-show_backtrace(1);
+if(cltype83 >= var79->type->table_size) {
+var82 = 0;
+} else {
+var82 = var79->type->type_table[cltype83] == idtype84;
 }
-var280 = var282;
-RET_LABEL281:(void)0;
 }
+var85 = !var82;
+if (var85){
+if (likely(varonce86!=NULL)) {
+var87 = varonce86;
+} else {
+var88 = "old-init";
+var89 = standard___standard__NativeString___to_s_with_length(var88, 8l);
+var87 = var89;
+varonce86 = var87;
 }
-if (varonce283) {
-var284 = varonce283;
+if (unlikely(varonce90==NULL)) {
+var91 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce92!=NULL)) {
+var93 = varonce92;
 } else {
-var285 = " redefines method ";
-var286 = 18;
-var287 = standard___standard__NativeString___to_s_with_length(var285, var286);
-var284 = var287;
-varonce283 = var284;
+var94 = "Warning: non-public init in ";
+var95 = standard___standard__NativeString___to_s_with_length(var94, 28l);
+var93 = var95;
+varonce92 = var93;
 }
-{
-var288 = nit___nit__MProperty___nit__model_base__MEntity__full_name(var_mprop);
+((struct instance_standard__NativeArray*)var91)->values[0]=var93;
+} else {
+var91 = varonce90;
+varonce90 = NULL;
 }
-var289 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var289 = array_instance Array[Object] */
-var290 = 3;
-var291 = NEW_standard__NativeArray(var290, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var291)->values[0] = (val*) var_mpropdef;
-((struct instance_standard__NativeArray*)var291)->values[1] = (val*) var284;
-((struct instance_standard__NativeArray*)var291)->values[2] = (val*) var288;
 {
-((void (*)(val* self, val* p0, long p1))(var289->class->vft[COLOR_standard__array__Array__with_native]))(var289, var291, var290) /* with_native on <var289:Array[Object]>*/;
-}
+var96 = ((val*(*)(val* self))(var_mclassdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mclassdef); /* to_s on <var_mclassdef:MClassDef>*/
 }
+((struct instance_standard__NativeArray*)var91)->values[1]=var96;
 {
-var292 = ((val* (*)(val* self))(var289->class->vft[COLOR_standard__string__Object__to_s]))(var289) /* to_s on <var289:Array[Object]>*/;
+var97 = ((val*(*)(val* self))(var91->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var91); /* native_to_s on <var91:NativeArray[String]>*/
 }
-var293 = 4;
+varonce90 = var91;
 {
-nit___nit__ToolContext___info(var280, var292, var293); /* Direct call toolcontext#ToolContext#info on <var280:ToolContext>*/
+nit___nit__ModelBuilder___advice(var_modelbuilder, self, var87, var97); /* Direct call modelbuilder_base#ModelBuilder#advice on <var_modelbuilder:ModelBuilder>*/
 }
+var = 0;
+goto RET_LABEL;
+} else {
 }
+var = 1;
+goto RET_LABEL;
 RET_LABEL:;
+return var;
 }