regern c_src
[nit.git] / c_src / nit__model.sep.2.c
index 8a159af..3628c3f 100644 (file)
 #include "nit__model.sep.0.h"
-/* method model#MParameterType#resolve_for for (self: MParameterType, MType, nullable MClassType, MModule, Bool): MType */
-val* nit___nit__MParameterType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+/* method model#MParameterType#c_name for (self: MParameterType): String */
+val* nit___nit__MParameterType___nit__model_base__MEntity__c_name(val* self) {
+val* var /* : String */;
+short int var1 /* : Bool */;
+val* var2 /* : String */;
+val* var3 /* : String */;
+val* var5 /* : MClass */;
+val* var7 /* : MClass */;
+val* var8 /* : String */;
+static val* varonce;
+val* var9 /* : String */;
+char* var10 /* : NativeString */;
+val* var11 /* : FlatString */;
+val* var12 /* : String */;
+val* var14 /* : NativeArray[String] */;
+static val* varonce13;
+static val* varonce15;
+val* var16 /* : String */;
+char* var17 /* : NativeString */;
+val* var18 /* : FlatString */;
+val* var19 /* : String */;
+val* var21 /* : String */;
+val* var22 /* : String */;
+val* var23 /* : String */;
+val* var24 /* : String */;
+var1 = self->attrs[COLOR_nit__model__MParameterType___c_name].val != NULL; /* _c_name on <self:MParameterType> */
+if(likely(var1)) {
+var2 = self->attrs[COLOR_nit__model__MParameterType___c_name].val; /* _c_name on <self:MParameterType> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _c_name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1487);
+fatal_exit(1);
+}
+} else {
+{
+{
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var7 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1472);
+fatal_exit(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+{
+var8 = nit___nit__MClass___nit__model_base__MEntity__c_name(var5);
+}
+if (likely(varonce!=NULL)) {
+var9 = varonce;
+} else {
+var10 = "__";
+var11 = standard___standard__NativeString___to_s_with_length(var10, 2l);
+var9 = var11;
+varonce = var9;
+}
+{
+var12 = ((val*(*)(val* self, val* p0))(var8->class->vft[COLOR_standard__string__String___43d]))(var8, var9); /* + on <var8:String>*/
+}
+if (unlikely(varonce13==NULL)) {
+var14 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce15!=NULL)) {
+var16 = varonce15;
+} else {
+var17 = "#";
+var18 = standard___standard__NativeString___to_s_with_length(var17, 1l);
+var16 = var18;
+varonce15 = var16;
+}
+((struct instance_standard__NativeArray*)var14)->values[0]=var16;
+} else {
+var14 = varonce13;
+varonce13 = NULL;
+}
+{
+{ /* Inline model#MParameterType#name (self) on <self:MParameterType> */
+var21 = self->attrs[COLOR_nit__model__MParameterType___name].val; /* _name on <self:MParameterType> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1481);
+fatal_exit(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+((struct instance_standard__NativeArray*)var14)->values[1]=var19;
+{
+var22 = ((val*(*)(val* self))(var14->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var14); /* native_to_s on <var14:NativeArray[String]>*/
+}
+varonce13 = var14;
+{
+var23 = standard___standard__Text___to_cmangle(var22);
+}
+{
+var24 = ((val*(*)(val* self, val* p0))(var12->class->vft[COLOR_standard__string__String___43d]))(var12, var23); /* + on <var12:String>*/
+}
+var3 = var24;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+self->attrs[COLOR_nit__model__MParameterType___c_name].val = var3; /* _c_name on <self:MParameterType> */
+var2 = var3;
+}
+var = var2;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#lookup_bound for (self: MParameterType, MModule, MType): MType */
+val* nit___nit__MParameterType___MType__lookup_bound(val* self, val* p0, val* p1) {
 val* var /* : MType */;
-val* var_mtype /* var mtype: MType */;
-val* var_anchor /* var anchor: nullable MClassType */;
 val* var_mmodule /* var mmodule: MModule */;
-short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
+val* var_resolved_receiver /* var resolved_receiver: MType */;
 short int var1 /* : Bool */;
 short int var2 /* : Bool */;
-short int var3 /* : Bool */;
+val* var3 /* : MType */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
-short int var_ /* var : Bool */;
-val* var4 /* : MClass */;
-val* var6 /* : MClass */;
+val* var5 /* : MClass */;
 val* var7 /* : MClass */;
-val* var9 /* : MClass */;
-short int var10 /* : Bool */;
+val* var_goalclass /* var goalclass: MClass */;
+val* var8 /* : MClass */;
+val* var10 /* : MClass */;
+short int var11 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var12 /* : Bool */;
-short int var14 /* : Bool */;
-val* var15 /* : Array[MType] */;
-val* var17 /* : Array[MType] */;
-long var18 /* : Int */;
-long var20 /* : Int */;
-val* var21 /* : nullable Object */;
-val* var_res /* var res: MType */;
-short int var22 /* : Bool */;
-val* var23 /* : null */;
+short int var13 /* : Bool */;
+short int var15 /* : Bool */;
+val* var16 /* : Array[MType] */;
+long var17 /* : Int */;
+long var19 /* : Int */;
+val* var20 /* : nullable Object */;
+val* var21 /* : Set[MClassType] */;
+val* var_supertypes /* var supertypes: Set[MClassType] */;
+val* var_ /* var : Set[MClassType] */;
+val* var22 /* : Iterator[nullable Object] */;
+val* var_23 /* var : Iterator[MClassType] */;
 short int var24 /* : Bool */;
-short int var25 /* : Bool */;
-val* var_other27 /* var other: nullable Object */;
-short int var28 /* : Bool */;
+val* var25 /* : nullable Object */;
+val* var_t /* var t: MClassType */;
+val* var26 /* : MClass */;
+val* var28 /* : MClass */;
 short int var29 /* : Bool */;
-short int var_30 /* var : Bool */;
 short int var31 /* : Bool */;
-val* var32 /* : MType */;
-val* var_r2 /* var r2: MType */;
 short int var33 /* : Bool */;
-short int var34 /* : Bool */;
-int cltype35;
-int idtype36;
-short int var_37 /* var : Bool */;
-val* var38 /* : MClass */;
-val* var40 /* : MClass */;
-val* var41 /* : MClassKind */;
-val* var43 /* : MClassKind */;
-val* var44 /* : MClassKind */;
-short int var45 /* : Bool */;
-short int var47 /* : Bool */;
-short int var49 /* : Bool */;
-short int var50 /* : Bool */;
-val* var51 /* : null */;
-short int var52 /* : Bool */;
-short int var53 /* : Bool */;
-short int var55 /* : Bool */;
-short int var56 /* : Bool */;
-val* var57 /* : MClass */;
-val* var59 /* : MClass */;
-val* var60 /* : MClassType */;
-val* var62 /* : MClassType */;
-short int var63 /* : Bool */;
-val* var64 /* : MType */;
-val* var_resolved_receiver /* var resolved_receiver: nullable Object */;
-short int var65 /* : Bool */;
-int cltype66;
-int idtype67;
-val* var68 /* : MType */;
-val* var70 /* : MType */;
-short int var71 /* : Bool */;
-int cltype72;
-int idtype73;
-val* var74 /* : MClass */;
-val* var76 /* : MClass */;
-val* var77 /* : MClass */;
-val* var79 /* : MClass */;
-short int var80 /* : Bool */;
-short int var82 /* : Bool */;
-short int var84 /* : Bool */;
-val* var85 /* : Array[MType] */;
-long var86 /* : Int */;
-long var88 /* : Int */;
-val* var89 /* : nullable Object */;
-short int var90 /* : Bool */;
-int cltype91;
-int idtype92;
-val* var93 /* : MType */;
-val* var95 /* : MType */;
-short int var96 /* : Bool */;
-int cltype97;
-int idtype98;
-val* var99 /* : MClass */;
-val* var101 /* : MClass */;
-val* var102 /* : MClass */;
-val* var104 /* : MClass */;
-short int var105 /* : Bool */;
-short int var107 /* : Bool */;
-short int var109 /* : Bool */;
-val* var110 /* : Array[MType] */;
-long var111 /* : Int */;
-long var113 /* : Int */;
-val* var114 /* : nullable Object */;
-val* var_res115 /* var res: MType */;
-short int var116 /* : Bool */;
-val* var117 /* : null */;
-short int var118 /* : Bool */;
-short int var119 /* : Bool */;
-short int var121 /* : Bool */;
-short int var122 /* : Bool */;
-val* var123 /* : null */;
-short int var124 /* : Bool */;
-val* var125 /* : MType */;
-val* var126 /* : MType */;
-val* var_verbatim_bound /* var verbatim_bound: MType */;
-val* var127 /* : MType */;
-val* var_res128 /* var res: MType */;
-var_mtype = p0;
-var_anchor = p1;
-var_mmodule = p2;
-var_cleanup_virtual = p3;
+val* var34 /* : Array[MType] */;
+long var35 /* : Int */;
+long var37 /* : Int */;
+val* var38 /* : nullable Object */;
+val* var_res /* var res: MType */;
+var_mmodule = p0;
+var_resolved_receiver = p1;
 {
-var1 = nit___nit__MParameterType___MType__can_resolve_for(self, var_mtype, var_anchor, var_mmodule);
+var1 = ((short int(*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__need_anchor]))(var_resolved_receiver); /* need_anchor on <var_resolved_receiver:MType>*/
 }
-if (unlikely(!var1)) {
+var2 = !var1;
+if (unlikely(!var2)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1438);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1491);
+fatal_exit(1);
 }
-/* <var_mtype:MType> isa MGenericType */
-cltype = type_nit__MGenericType.color;
-idtype = type_nit__MGenericType.id;
-if(cltype >= var_mtype->type->table_size) {
-var3 = 0;
+{
+var3 = ((val*(*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__undecorate]))(var_resolved_receiver); /* undecorate on <var_resolved_receiver:MType>*/
+}
+var_resolved_receiver = var3;
+/* <var_resolved_receiver:MType> isa MClassType */
+cltype = type_nit__MClassType.color;
+idtype = type_nit__MClassType.id;
+if(cltype >= var_resolved_receiver->type->table_size) {
+var4 = 0;
 } else {
-var3 = var_mtype->type->type_table[cltype] == idtype;
+var4 = var_resolved_receiver->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1493);
+fatal_exit(1);
 }
-var_ = var3;
-if (var3){
 {
-{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MGenericType)> */
-var6 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MGenericType)> */
-if (unlikely(var6 == NULL)) {
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var7 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1472);
+fatal_exit(1);
 }
-var4 = var6;
-RET_LABEL5:(void)0;
+var5 = var7;
+RET_LABEL6:(void)0;
 }
 }
+var_goalclass = var5;
 {
-{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
-var9 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
-if (unlikely(var9 == NULL)) {
+{ /* Inline model#MClassType#mclass (var_resolved_receiver) on <var_resolved_receiver:MType(MClassType)> */
+var10 = var_resolved_receiver->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_resolved_receiver:MType(MClassType)> */
+if (unlikely(var10 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1382);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
 }
-var7 = var9;
-RET_LABEL8:(void)0;
+var8 = var10;
+RET_LABEL9:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var4,var7) on <var4:MClass> */
-var_other = var7;
+{ /* Inline kernel#Object#== (var8,var_goalclass) on <var8:MClass> */
+var_other = var_goalclass;
 {
-{ /* Inline kernel#Object#is_same_instance (var4,var_other) on <var4:MClass> */
-var14 = var4 == var_other;
-var12 = var14;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
-}
+{ /* Inline kernel#Object#is_same_instance (var8,var_other) on <var8:MClass> */
+var15 = var8 == var_other;
+var13 = var15;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
 }
-var10 = var12;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
 }
+var11 = var13;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
 }
-var2 = var10;
-} else {
-var2 = var_;
 }
-if (var2){
+if (var11){
 {
-{ /* Inline model#MGenericType#arguments (var_mtype) on <var_mtype:MType(MGenericType)> */
-var17 = var_mtype->attrs[COLOR_nit__model__MGenericType___arguments].val; /* _arguments on <var_mtype:MType(MGenericType)> */
-if (unlikely(var17 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1164);
-show_backtrace(1);
-}
-var15 = var17;
-RET_LABEL16:(void)0;
-}
+var16 = ((val*(*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MClassType__arguments]))(var_resolved_receiver); /* arguments on <var_resolved_receiver:MType(MClassType)>*/
 }
 {
 { /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
-var20 = self->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
-var18 = var20;
-RET_LABEL19:(void)0;
+var19 = self->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
-var21 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var15, var18);
+var20 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var16, var17);
 }
-var_res = var21;
-var23 = NULL;
-if (var_anchor == NULL) {
-var24 = 0; /* is null */
+var = var20;
+goto RET_LABEL;
 } else {
-var24 = 1; /* arg is null and recv is not */
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_anchor,var23) on <var_anchor:nullable MClassType> */
-var_other27 = var23;
 {
-var28 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other27) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
+var21 = nit___nit__MClassType___MType__collect_mtypes(var_resolved_receiver, var_mmodule);
 }
-var29 = !var28;
-var25 = var29;
-goto RET_LABEL26;
-RET_LABEL26:(void)0;
+var_supertypes = var21;
+var_ = var_supertypes;
+{
+var22 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:Set[MClassType]>*/
 }
-var24 = var25;
+var_23 = var22;
+for(;;) {
+{
+var24 = ((short int(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_23); /* is_ok on <var_23:Iterator[MClassType]>*/
 }
-var_30 = var24;
 if (var24){
 {
-var31 = ((short int (*)(val* self))(var_res->class->vft[COLOR_nit__model__MType__need_anchor]))(var_res) /* need_anchor on <var_res:MType>*/;
-}
-var22 = var31;
-} else {
-var22 = var_30;
+var25 = ((val*(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_23); /* item on <var_23:Iterator[MClassType]>*/
 }
-if (var22){
+var_t = var25;
 {
-var32 = ((val* (*)(val* self, val* p0, val* p1))(var_res->class->vft[COLOR_nit__model__MType__anchor_to]))(var_res, var_mmodule, var_anchor) /* anchor_to on <var_res:MType>*/;
+{ /* Inline model#MClassType#mclass (var_t) on <var_t:MClassType> */
+var28 = var_t->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_t:MClassType> */
+if (unlikely(var28 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var26 = var28;
+RET_LABEL27:(void)0;
 }
-var_r2 = var32;
-/* <var_r2:MType> isa MClassType */
-cltype35 = type_nit__MClassType.color;
-idtype36 = type_nit__MClassType.id;
-if(cltype35 >= var_r2->type->table_size) {
-var34 = 0;
-} else {
-var34 = var_r2->type->type_table[cltype35] == idtype36;
 }
-var_37 = var34;
-if (var34){
 {
-{ /* Inline model#MClassType#mclass (var_r2) on <var_r2:MType(MClassType)> */
-var40 = var_r2->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_r2:MType(MClassType)> */
-if (unlikely(var40 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+{ /* Inline kernel#Object#== (var26,var_goalclass) on <var26:MClass> */
+var_other = var_goalclass;
+{
+{ /* Inline kernel#Object#is_same_instance (var26,var_other) on <var26:MClass> */
+var33 = var26 == var_other;
+var31 = var33;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
 }
-var38 = var40;
-RET_LABEL39:(void)0;
+}
+var29 = var31;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
 }
 }
+if (var29){
 {
-{ /* Inline model#MClass#kind (var38) on <var38:MClass> */
-var43 = var38->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var38:MClass> */
-if (unlikely(var43 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 399);
-show_backtrace(1);
+var34 = ((val*(*)(val* self))(var_t->class->vft[COLOR_nit__model__MClassType__arguments]))(var_t); /* arguments on <var_t:MClassType>*/
 }
-var41 = var43;
-RET_LABEL42:(void)0;
+{
+{ /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
+var37 = self->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
+var35 = var37;
+RET_LABEL36:(void)0;
 }
 }
 {
-var44 = nit__model___standard__Object___enum_kind(self);
+var38 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var34, var35);
+}
+var_res = var38;
+var = var_res;
+goto RET_LABEL;
+} else {
 }
 {
-{ /* Inline kernel#Object#== (var41,var44) on <var41:MClassKind> */
-var_other = var44;
-{
-{ /* Inline kernel#Object#is_same_instance (var41,var_other) on <var41:MClassKind> */
-var49 = var41 == var_other;
-var47 = var49;
-goto RET_LABEL48;
-RET_LABEL48:(void)0;
+((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_23); /* next on <var_23:Iterator[MClassType]>*/
 }
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_23&3)?class_info[((long)var_23&3)]:var_23->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_23); /* finish on <var_23:Iterator[MClassType]>*/
+}
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1507);
+fatal_exit(1);
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#lookup_fixed for (self: MParameterType, MModule, MType): MType */
+val* nit___nit__MParameterType___MType__lookup_fixed(val* self, val* p0, val* p1) {
+val* var /* : MType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_resolved_receiver /* var resolved_receiver: MType */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var3 /* : MType */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var5 /* : MClass */;
+val* var7 /* : MClass */;
+val* var8 /* : MClassType */;
+val* var10 /* : MClassType */;
+val* var11 /* : MType */;
+val* var_res /* var res: MType */;
+var_mmodule = p0;
+var_resolved_receiver = p1;
+{
+var1 = ((short int(*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__need_anchor]))(var_resolved_receiver); /* need_anchor on <var_resolved_receiver:MType>*/
+}
+var2 = !var1;
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1519);
+fatal_exit(1);
+}
+{
+var3 = ((val*(*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__undecorate]))(var_resolved_receiver); /* undecorate on <var_resolved_receiver:MType>*/
+}
+var_resolved_receiver = var3;
+/* <var_resolved_receiver:MType> isa MClassType */
+cltype = type_nit__MClassType.color;
+idtype = type_nit__MClassType.id;
+if(cltype >= var_resolved_receiver->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_resolved_receiver->type->type_table[cltype] == idtype;
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1521);
+fatal_exit(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var_resolved_receiver) on <var_resolved_receiver:MType(MClassType)> */
+var7 = var_resolved_receiver->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_resolved_receiver:MType(MClassType)> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var5 = var7;
+RET_LABEL6:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#mclass_type (var5) on <var5:MClass> */
+var10 = var5->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var5:MClass> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+var11 = nit___nit__MParameterType___MType__resolve_for(self, var8, var_resolved_receiver, var_mmodule, 0);
+}
+var_res = var11;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#resolve_for for (self: MParameterType, MType, nullable MClassType, MModule, Bool): MType */
+val* nit___nit__MParameterType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+short int var_ /* var : Bool */;
+val* var4 /* : MClass */;
+val* var6 /* : MClass */;
+val* var7 /* : MClass */;
+val* var9 /* : MClass */;
+short int var10 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+val* var15 /* : Array[MType] */;
+val* var17 /* : Array[MType] */;
+long var18 /* : Int */;
+long var20 /* : Int */;
+val* var21 /* : nullable Object */;
+val* var_res /* var res: MType */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+short int var24 /* : Bool */;
+val* var_other26 /* var other: nullable Object */;
+short int var27 /* : Bool */;
+short int var28 /* : Bool */;
+short int var_29 /* var : Bool */;
+short int var30 /* : Bool */;
+val* var31 /* : MType */;
+val* var_r2 /* var r2: MType */;
+short int var32 /* : Bool */;
+short int var33 /* : Bool */;
+int cltype34;
+int idtype35;
+short int var_36 /* var : Bool */;
+val* var37 /* : MClass */;
+val* var39 /* : MClass */;
+val* var40 /* : MClassKind */;
+val* var42 /* : MClassKind */;
+val* var43 /* : Sys */;
+val* var44 /* : MClassKind */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+short int var51 /* : Bool */;
+short int var52 /* : Bool */;
+short int var54 /* : Bool */;
+short int var55 /* : Bool */;
+val* var56 /* : MClass */;
+val* var58 /* : MClass */;
+val* var59 /* : MClassType */;
+val* var61 /* : MClassType */;
+val* var62 /* : MType */;
+val* var_resolved_receiver /* var resolved_receiver: nullable Object */;
+short int var63 /* : Bool */;
+int cltype64;
+int idtype65;
+val* var66 /* : MType */;
+val* var68 /* : MType */;
+short int var69 /* : Bool */;
+int cltype70;
+int idtype71;
+val* var72 /* : MClass */;
+val* var74 /* : MClass */;
+val* var75 /* : MClass */;
+val* var77 /* : MClass */;
+short int var78 /* : Bool */;
+short int var80 /* : Bool */;
+short int var82 /* : Bool */;
+val* var83 /* : Array[MType] */;
+long var84 /* : Int */;
+long var86 /* : Int */;
+val* var87 /* : nullable Object */;
+short int var88 /* : Bool */;
+int cltype89;
+int idtype90;
+val* var91 /* : MType */;
+val* var93 /* : MType */;
+short int var94 /* : Bool */;
+int cltype95;
+int idtype96;
+val* var97 /* : MClass */;
+val* var99 /* : MClass */;
+val* var100 /* : MClass */;
+val* var102 /* : MClass */;
+short int var103 /* : Bool */;
+short int var105 /* : Bool */;
+short int var107 /* : Bool */;
+val* var108 /* : Array[MType] */;
+long var109 /* : Int */;
+long var111 /* : Int */;
+val* var112 /* : nullable Object */;
+val* var_res113 /* var res: MType */;
+short int var114 /* : Bool */;
+short int var115 /* : Bool */;
+short int var116 /* : Bool */;
+short int var118 /* : Bool */;
+short int var119 /* : Bool */;
+val* var120 /* : MType */;
+val* var121 /* : MType */;
+val* var_verbatim_bound /* var verbatim_bound: MType */;
+val* var122 /* : MType */;
+val* var_res123 /* var res: MType */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+var_cleanup_virtual = p3;
+{
+var1 = nit___nit__MParameterType___MType__can_resolve_for(self, var_mtype, var_anchor, var_mmodule);
+}
+if (unlikely(!var1)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1528);
+fatal_exit(1);
+}
+/* <var_mtype:MType> isa MGenericType */
+cltype = type_nit__MGenericType.color;
+idtype = type_nit__MGenericType.id;
+if(cltype >= var_mtype->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_mtype->type->type_table[cltype] == idtype;
+}
+var_ = var3;
+if (var3){
+{
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MGenericType)> */
+var6 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MGenericType)> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var9 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1472);
+fatal_exit(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var4,var7) on <var4:MClass> */
+var_other = var7;
+{
+{ /* Inline kernel#Object#is_same_instance (var4,var_other) on <var4:MClass> */
+var14 = var4 == var_other;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+var10 = var12;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+}
+var2 = var10;
+} else {
+var2 = var_;
+}
+if (var2){
+{
+{ /* Inline model#MGenericType#arguments (var_mtype) on <var_mtype:MType(MGenericType)> */
+var17 = var_mtype->attrs[COLOR_nit__model__MGenericType___arguments].val; /* _arguments on <var_mtype:MType(MGenericType)> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1244);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
+var20 = self->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+var21 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var15, var18);
+}
+var_res = var21;
+if (var_anchor == NULL) {
+var23 = 0; /* is null */
+} else {
+var23 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on <var_anchor:nullable MClassType> */
+var_other26 = ((val*)NULL);
+{
+var27 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other26); /* == on <var_anchor:nullable MClassType(MClassType)>*/
+}
+var28 = !var27;
+var24 = var28;
+goto RET_LABEL25;
+RET_LABEL25:(void)0;
+}
+var23 = var24;
+}
+var_29 = var23;
+if (var23){
+{
+var30 = ((short int(*)(val* self))(var_res->class->vft[COLOR_nit__model__MType__need_anchor]))(var_res); /* need_anchor on <var_res:MType>*/
+}
+var22 = var30;
+} else {
+var22 = var_29;
+}
+if (var22){
+{
+var31 = ((val*(*)(val* self, val* p0, val* p1))(var_res->class->vft[COLOR_nit__model__MType__anchor_to]))(var_res, var_mmodule, var_anchor); /* anchor_to on <var_res:MType>*/
+}
+var_r2 = var31;
+/* <var_r2:MType> isa MClassType */
+cltype34 = type_nit__MClassType.color;
+idtype35 = type_nit__MClassType.id;
+if(cltype34 >= var_r2->type->table_size) {
+var33 = 0;
+} else {
+var33 = var_r2->type->type_table[cltype34] == idtype35;
+}
+var_36 = var33;
+if (var33){
+{
+{ /* Inline model#MClassType#mclass (var_r2) on <var_r2:MType(MClassType)> */
+var39 = var_r2->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_r2:MType(MClassType)> */
+if (unlikely(var39 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var37 = var39;
+RET_LABEL38:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#kind (var37) on <var37:MClass> */
+var42 = var37->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var37:MClass> */
+if (unlikely(var42 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436);
+fatal_exit(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+var43 = glob_sys;
+{
+var44 = nit__model___standard__Sys___enum_kind(var43);
+}
+{
+{ /* Inline kernel#Object#== (var40,var44) on <var40:MClassKind> */
+var_other = var44;
+{
+{ /* Inline kernel#Object#is_same_instance (var40,var_other) on <var40:MClassKind> */
+var49 = var40 == var_other;
+var47 = var49;
+goto RET_LABEL48;
+RET_LABEL48:(void)0;
+}
+}
+var45 = var47;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
+}
+}
+var32 = var45;
+} else {
+var32 = var_36;
+}
+if (var32){
+var = var_r2;
+goto RET_LABEL;
+} else {
+}
+} else {
+}
+var = var_res;
+goto RET_LABEL;
+} else {
+}
+{
+var50 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
+}
+if (var50){
+if (var_anchor == NULL) {
+var51 = 0; /* is null */
+} else {
+var51 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on <var_anchor:nullable MClassType> */
+var_other26 = ((val*)NULL);
+{
+var54 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other26); /* == on <var_anchor:nullable MClassType(MClassType)>*/
+}
+var55 = !var54;
+var52 = var55;
+goto RET_LABEL53;
+RET_LABEL53:(void)0;
+}
+var51 = var52;
+}
+if (unlikely(!var51)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1547);
+fatal_exit(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType(MClassType)> */
+var58 = var_anchor->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType(MClassType)> */
+if (unlikely(var58 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var56 = var58;
+RET_LABEL57:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#mclass_type (var56) on <var56:MClass> */
+var61 = var56->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var56:MClass> */
+if (unlikely(var61 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
+}
+var59 = var61;
+RET_LABEL60:(void)0;
+}
+}
+{
+var62 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nit__model__MType__resolve_for]))(var_mtype, var59, var_anchor, var_mmodule, 1); /* resolve_for on <var_mtype:MType>*/
+}
+var_resolved_receiver = var62;
+} else {
+var_resolved_receiver = var_mtype;
+}
+/* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
+cltype64 = type_nit__MNullableType.color;
+idtype65 = type_nit__MNullableType.id;
+if(cltype64 >= var_resolved_receiver->type->table_size) {
+var63 = 0;
+} else {
+var63 = var_resolved_receiver->type->type_table[cltype64] == idtype65;
+}
+if (var63){
+{
+{ /* Inline model#MProxyType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
+var68 = var_resolved_receiver->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
+if (unlikely(var68 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var66 = var68;
+RET_LABEL67:(void)0;
+}
+}
+var_resolved_receiver = var66;
+} else {
+}
+/* <var_resolved_receiver:nullable Object(MType)> isa MParameterType */
+cltype70 = type_nit__MParameterType.color;
+idtype71 = type_nit__MParameterType.id;
+if(cltype70 >= var_resolved_receiver->type->table_size) {
+var69 = 0;
+} else {
+var69 = var_resolved_receiver->type->type_table[cltype70] == idtype71;
+}
+if (var69){
+{
+{ /* Inline model#MParameterType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
+var74 = var_resolved_receiver->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MParameterType)> */
+if (unlikely(var74 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1472);
+fatal_exit(1);
+}
+var72 = var74;
+RET_LABEL73:(void)0;
+}
+}
+if (var_anchor == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1554);
+fatal_exit(1);
+} else {
+{ /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType> */
+if (unlikely(var_anchor == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var77 = var_anchor->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType> */
+if (unlikely(var77 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var75 = var77;
+RET_LABEL76:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var72,var75) on <var72:MClass> */
+var_other = var75;
+{
+{ /* Inline kernel#Object#is_same_instance (var72,var_other) on <var72:MClass> */
+var82 = var72 == var_other;
+var80 = var82;
+goto RET_LABEL81;
+RET_LABEL81:(void)0;
+}
+}
+var78 = var80;
+goto RET_LABEL79;
+RET_LABEL79:(void)0;
+}
+}
+if (unlikely(!var78)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1554);
+fatal_exit(1);
+}
+if (var_anchor == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1555);
+fatal_exit(1);
+} else {
+var83 = ((val*(*)(val* self))(var_anchor->class->vft[COLOR_nit__model__MClassType__arguments]))(var_anchor); /* arguments on <var_anchor:nullable MClassType>*/
+}
+{
+{ /* Inline model#MParameterType#rank (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
+var86 = var_resolved_receiver->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <var_resolved_receiver:nullable Object(MParameterType)> */
+var84 = var86;
+RET_LABEL85:(void)0;
+}
+}
+{
+var87 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var83, var84);
+}
+var_resolved_receiver = var87;
+/* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
+cltype89 = type_nit__MNullableType.color;
+idtype90 = type_nit__MNullableType.id;
+if(cltype89 >= var_resolved_receiver->type->table_size) {
+var88 = 0;
+} else {
+var88 = var_resolved_receiver->type->type_table[cltype89] == idtype90;
+}
+if (var88){
+{
+{ /* Inline model#MProxyType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
+var93 = var_resolved_receiver->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
+if (unlikely(var93 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var91 = var93;
+RET_LABEL92:(void)0;
+}
+}
+var_resolved_receiver = var91;
+} else {
+}
+} else {
+}
+/* <var_resolved_receiver:nullable Object(MType)> isa MClassType */
+cltype95 = type_nit__MClassType.color;
+idtype96 = type_nit__MClassType.id;
+if(cltype95 >= var_resolved_receiver->type->table_size) {
+var94 = 0;
+} else {
+var94 = var_resolved_receiver->type->type_table[cltype95] == idtype96;
+}
+if (unlikely(!var94)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1558);
+fatal_exit(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MClassType)> */
+var99 = var_resolved_receiver->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MClassType)> */
+if (unlikely(var99 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
+fatal_exit(1);
+}
+var97 = var99;
+RET_LABEL98:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var102 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var102 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1472);
+fatal_exit(1);
+}
+var100 = var102;
+RET_LABEL101:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var97,var100) on <var97:MClass> */
+var_other = var100;
+{
+{ /* Inline kernel#Object#is_same_instance (var97,var_other) on <var97:MClass> */
+var107 = var97 == var_other;
+var105 = var107;
+goto RET_LABEL106;
+RET_LABEL106:(void)0;
+}
+}
+var103 = var105;
+goto RET_LABEL104;
+RET_LABEL104:(void)0;
+}
+}
+if (var103){
+{
+var108 = ((val*(*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MClassType__arguments]))(var_resolved_receiver); /* arguments on <var_resolved_receiver:nullable Object(MClassType)>*/
+}
+{
+{ /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
+var111 = self->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
+var109 = var111;
+RET_LABEL110:(void)0;
+}
+}
+{
+var112 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var108, var109);
+}
+var_res113 = var112;
+var = var_res113;
+goto RET_LABEL;
+} else {
+}
+{
+var114 = ((short int(*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__need_anchor]))(var_resolved_receiver); /* need_anchor on <var_resolved_receiver:nullable Object(MClassType)>*/
+}
+if (var114){
+if (var_anchor == NULL) {
+var115 = 0; /* is null */
+} else {
+var115 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on <var_anchor:nullable MClassType> */
+var_other26 = ((val*)NULL);
+{
+var118 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other26); /* == on <var_anchor:nullable MClassType(MClassType)>*/
+}
+var119 = !var118;
+var116 = var119;
+goto RET_LABEL117;
+RET_LABEL117:(void)0;
+}
+var115 = var116;
+}
+if (unlikely(!var115)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1569);
+fatal_exit(1);
+}
+{
+var120 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__resolve_for]))(var_resolved_receiver, var_anchor, ((val*)NULL), var_mmodule, 0); /* resolve_for on <var_resolved_receiver:nullable Object(MClassType)>*/
+}
+var_resolved_receiver = var120;
+} else {
+}
+{
+var121 = nit___nit__MParameterType___MType__lookup_bound(self, var_mmodule, var_resolved_receiver);
+}
+var_verbatim_bound = var121;
+{
+var122 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_verbatim_bound->class->vft[COLOR_nit__model__MType__resolve_for]))(var_verbatim_bound, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual); /* resolve_for on <var_verbatim_bound:MType>*/
+}
+var_res123 = var122;
+var = var_res123;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#can_resolve_for for (self: MParameterType, MType, nullable MClassType, MModule): Bool */
+short int nit___nit__MParameterType___MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
+short int var /* : Bool */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+val* var7 /* : MType */;
+val* var8 /* : Set[MClassDef] */;
+val* var9 /* : MClass */;
+val* var11 /* : MClass */;
+val* var12 /* : MClassDef */;
+val* var14 /* : MClassDef */;
+short int var15 /* : Bool */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+{
+var1 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
+}
+if (var1){
+if (var_anchor == NULL) {
+var2 = 0; /* is null */
+} else {
+var2 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,((val*)NULL)) on <var_anchor:nullable MClassType> */
+var_other = ((val*)NULL);
+{
+var5 = ((short int(*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other); /* == on <var_anchor:nullable MClassType(MClassType)>*/
+}
+var6 = !var5;
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
+}
+var2 = var3;
+}
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1585);
+fatal_exit(1);
+}
+{
+var7 = ((val*(*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor); /* anchor_to on <var_mtype:MType>*/
+}
+var_mtype = var7;
+} else {
+}
+{
+var8 = ((val*(*)(val* self, val* p0))(var_mtype->class->vft[COLOR_nit__model__MType__collect_mclassdefs]))(var_mtype, var_mmodule); /* collect_mclassdefs on <var_mtype:MType>*/
+}
+{
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var11 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var11 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1472);
+fatal_exit(1);
+}
+var9 = var11;
+RET_LABEL10:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#intro (var9) on <var9:MClass> */
+var14 = var9->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var9:MClass> */
+if (unlikely(var14 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
+fatal_exit(1);
+}
+var12 = var14;
+RET_LABEL13:(void)0;
+}
+}
+{
+var15 = ((short int(*)(val* self, val* p0))((((long)var8&3)?class_info[((long)var8&3)]:var8->class)->vft[COLOR_standard__abstract_collection__Collection__has]))(var8, var12); /* has on <var8:Set[MClassDef]>*/
+}
+var = var15;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#init for (self: MParameterType) */
+void nit___nit__MParameterType___standard__kernel__Object__init(val* self) {
+{
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MParameterType___standard__kernel__Object__init]))(self); /* init on <self:MParameterType>*/
+}
+RET_LABEL:;
+}
+/* method model#MProxyType#mtype for (self: MProxyType): MType */
+val* nit___nit__MProxyType___mtype(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+var1 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MProxyType#mtype= for (self: MProxyType, MType) */
+void nit___nit__MProxyType___mtype_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__model__MProxyType___mtype].val = p0; /* _mtype on <self:MProxyType> */
+RET_LABEL:;
+}
+/* method model#MProxyType#model for (self: MProxyType): Model */
+val* nit___nit__MProxyType___nit__model_base__MEntity__model(val* self) {
+val* var /* : Model */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : Model */;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((val*(*)(val* self))(var1->class->vft[COLOR_nit__model_base__MEntity__model]))(var1); /* model on <var1:MType>*/
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MProxyType#need_anchor for (self: MProxyType): Bool */
+short int nit___nit__MProxyType___MType__need_anchor(val* self) {
+short int var /* : Bool */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+short int var4 /* : Bool */;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((short int(*)(val* self))(var1->class->vft[COLOR_nit__model__MType__need_anchor]))(var1); /* need_anchor on <var1:MType>*/
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MProxyType#as_nullable for (self: MProxyType): MType */
+val* nit___nit__MProxyType___MType__as_nullable(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : MType */;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((val*(*)(val* self))(var1->class->vft[COLOR_nit__model__MType__as_nullable]))(var1); /* as_nullable on <var1:MType>*/
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MProxyType#as_notnull for (self: MProxyType): MType */
+val* nit___nit__MProxyType___MType__as_notnull(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : MType */;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((val*(*)(val* self))(var1->class->vft[COLOR_nit__model__MType__as_notnull]))(var1); /* as_notnull on <var1:MType>*/
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MProxyType#undecorate for (self: MProxyType): MType */
+val* nit___nit__MProxyType___MType__undecorate(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : MType */;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var45 = var47;
-goto RET_LABEL46;
-RET_LABEL46:(void)0;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
 }
-var33 = var45;
-} else {
-var33 = var_37;
+{
+var4 = ((val*(*)(val* self))(var1->class->vft[COLOR_nit__model__MType__undecorate]))(var1); /* undecorate on <var1:MType>*/
 }
-if (var33){
-var = var_r2;
+var = var4;
 goto RET_LABEL;
-} else {
+RET_LABEL:;
+return var;
 }
-} else {
+/* method model#MProxyType#resolve_for for (self: MProxyType, MType, nullable MClassType, MModule, Bool): MType */
+val* nit___nit__MProxyType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : MType */;
+val* var_res /* var res: MType */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+var_cleanup_virtual = p3;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-var = var_res;
-goto RET_LABEL;
-} else {
 }
 {
-var50 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var4 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var1->class->vft[COLOR_nit__model__MType__resolve_for]))(var1, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual); /* resolve_for on <var1:MType>*/
 }
-if (var50){
-var51 = NULL;
-if (var_anchor == NULL) {
-var52 = 0; /* is null */
-} else {
-var52 = 1; /* arg is null and recv is not */
+var_res = var4;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_anchor,var51) on <var_anchor:nullable MClassType> */
-var_other27 = var51;
+/* method model#MProxyType#can_resolve_for for (self: MProxyType, MType, nullable MClassType, MModule): Bool */
+short int nit___nit__MProxyType___MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
+short int var /* : Bool */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+short int var4 /* : Bool */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
 {
-var55 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other27) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
-}
-var56 = !var55;
-var53 = var56;
-goto RET_LABEL54;
-RET_LABEL54:(void)0;
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var52 = var53;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-if (unlikely(!var52)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1457);
-show_backtrace(1);
 }
 {
-{ /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType(MClassType)> */
-var59 = var_anchor->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType(MClassType)> */
-if (unlikely(var59 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
-}
-var57 = var59;
-RET_LABEL58:(void)0;
+var4 = ((short int(*)(val* self, val* p0, val* p1, val* p2))(var1->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var1, var_mtype, var_anchor, var_mmodule); /* can_resolve_for on <var1:MType>*/
 }
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
+/* method model#MProxyType#lookup_fixed for (self: MProxyType, MModule, MType): MType */
+val* nit___nit__MProxyType___MType__lookup_fixed(val* self, val* p0, val* p1) {
+val* var /* : MType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_resolved_receiver /* var resolved_receiver: MType */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : MType */;
+val* var_t /* var t: MType */;
+var_mmodule = p0;
+var_resolved_receiver = p1;
 {
-{ /* Inline model#MClass#mclass_type (var57) on <var57:MClass> */
-var62 = var57->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var57:MClass> */
-if (unlikely(var62 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var60 = var62;
-RET_LABEL61:(void)0;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
 }
-var63 = 1;
 {
-var64 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_mtype->class->vft[COLOR_nit__model__MType__resolve_for]))(var_mtype, var60, var_anchor, var_mmodule, var63) /* resolve_for on <var_mtype:MType>*/;
+var4 = ((val*(*)(val* self, val* p0, val* p1))(var1->class->vft[COLOR_nit__model__MType__lookup_fixed]))(var1, var_mmodule, var_resolved_receiver); /* lookup_fixed on <var1:MType>*/
 }
-var_resolved_receiver = var64;
-} else {
-var_resolved_receiver = var_mtype;
-}
-/* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
-cltype66 = type_nit__MNullableType.color;
-idtype67 = type_nit__MNullableType.id;
-if(cltype66 >= var_resolved_receiver->type->table_size) {
-var65 = 0;
-} else {
-var65 = var_resolved_receiver->type->type_table[cltype66] == idtype67;
+var_t = var4;
+var = var_t;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
-if (var65){
+/* method model#MProxyType#length for (self: MProxyType): Int */
+long nit___nit__MProxyType___MType__length(val* self) {
+long var /* : Int */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+long var4 /* : Int */;
 {
-{ /* Inline model#MNullableType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
-var70 = var_resolved_receiver->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
-if (unlikely(var70 == NULL)) {
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var3 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var68 = var70;
-RET_LABEL69:(void)0;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
 }
-var_resolved_receiver = var68;
-} else {
+{
+var4 = ((long(*)(val* self))(var1->class->vft[COLOR_nit__model__MType__length]))(var1); /* length on <var1:MType>*/
 }
-/* <var_resolved_receiver:nullable Object(MType)> isa MParameterType */
-cltype72 = type_nit__MParameterType.color;
-idtype73 = type_nit__MParameterType.id;
-if(cltype72 >= var_resolved_receiver->type->table_size) {
-var71 = 0;
-} else {
-var71 = var_resolved_receiver->type->type_table[cltype72] == idtype73;
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
-if (var71){
+/* method model#MProxyType#collect_mclassdefs for (self: MProxyType, MModule): Set[MClassDef] */
+val* nit___nit__MProxyType___MType__collect_mclassdefs(val* self, val* p0) {
+val* var /* : Set[MClassDef] */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var3 /* : MType */;
+val* var5 /* : MType */;
+val* var6 /* : Set[MClassDef] */;
+var_mmodule = p0;
 {
-{ /* Inline model#MParameterType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
-var76 = var_resolved_receiver->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MParameterType)> */
-if (unlikely(var76 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1382);
-show_backtrace(1);
+var1 = nit___nit__MProxyType___MType__need_anchor(self);
 }
-var74 = var76;
-RET_LABEL75:(void)0;
+var2 = !var1;
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1629);
+fatal_exit(1);
 }
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var5 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-if (var_anchor == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1464);
-show_backtrace(1);
-} else {
-{ /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType> */
-if (unlikely(var_anchor == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+var3 = var5;
+RET_LABEL4:(void)0;
 }
-var79 = var_anchor->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType> */
-if (unlikely(var79 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
 }
-var77 = var79;
-RET_LABEL78:(void)0;
+{
+var6 = ((val*(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__model__MType__collect_mclassdefs]))(var3, var_mmodule); /* collect_mclassdefs on <var3:MType>*/
 }
+var = var6;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
+/* method model#MProxyType#collect_mclasses for (self: MProxyType, MModule): Set[MClass] */
+val* nit___nit__MProxyType___MType__collect_mclasses(val* self, val* p0) {
+val* var /* : Set[MClass] */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var3 /* : MType */;
+val* var5 /* : MType */;
+val* var6 /* : Set[MClass] */;
+var_mmodule = p0;
 {
-{ /* Inline kernel#Object#== (var74,var77) on <var74:MClass> */
-var_other = var77;
-{
-{ /* Inline kernel#Object#is_same_instance (var74,var_other) on <var74:MClass> */
-var84 = var74 == var_other;
-var82 = var84;
-goto RET_LABEL83;
-RET_LABEL83:(void)0;
+var1 = nit___nit__MProxyType___MType__need_anchor(self);
 }
+var2 = !var1;
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1635);
+fatal_exit(1);
 }
-var80 = var82;
-goto RET_LABEL81;
-RET_LABEL81:(void)0;
-}
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var5 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-if (unlikely(!var80)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1464);
-show_backtrace(1);
+var3 = var5;
+RET_LABEL4:(void)0;
 }
-if (var_anchor == NULL) {
-PRINT_ERROR("Runtime error: %s", "Receiver is null");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1465);
-show_backtrace(1);
-} else {
-var85 = ((val* (*)(val* self))(var_anchor->class->vft[COLOR_nit__model__MClassType__arguments]))(var_anchor) /* arguments on <var_anchor:nullable MClassType>*/;
 }
 {
-{ /* Inline model#MParameterType#rank (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
-var88 = var_resolved_receiver->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <var_resolved_receiver:nullable Object(MParameterType)> */
-var86 = var88;
-RET_LABEL87:(void)0;
+var6 = ((val*(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__model__MType__collect_mclasses]))(var3, var_mmodule); /* collect_mclasses on <var3:MType>*/
 }
+var = var6;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
+/* method model#MProxyType#collect_mtypes for (self: MProxyType, MModule): Set[MClassType] */
+val* nit___nit__MProxyType___MType__collect_mtypes(val* self, val* p0) {
+val* var /* : Set[MClassType] */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var3 /* : MType */;
+val* var5 /* : MType */;
+val* var6 /* : Set[MClassType] */;
+var_mmodule = p0;
 {
-var89 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var85, var86);
+var1 = nit___nit__MProxyType___MType__need_anchor(self);
 }
-var_resolved_receiver = var89;
-/* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
-cltype91 = type_nit__MNullableType.color;
-idtype92 = type_nit__MNullableType.id;
-if(cltype91 >= var_resolved_receiver->type->table_size) {
-var90 = 0;
-} else {
-var90 = var_resolved_receiver->type->type_table[cltype91] == idtype92;
+var2 = !var1;
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1641);
+fatal_exit(1);
 }
-if (var90){
 {
-{ /* Inline model#MNullableType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
-var95 = var_resolved_receiver->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
-if (unlikely(var95 == NULL)) {
+{ /* Inline model#MProxyType#mtype (self) on <self:MProxyType> */
+var5 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MProxyType> */
+if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var93 = var95;
-RET_LABEL94:(void)0;
+var3 = var5;
+RET_LABEL4:(void)0;
 }
 }
-var_resolved_receiver = var93;
-} else {
+{
+var6 = ((val*(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__model__MType__collect_mtypes]))(var3, var_mmodule); /* collect_mtypes on <var3:MType>*/
 }
-} else {
+var = var6;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
-/* <var_resolved_receiver:nullable Object(MType)> isa MClassType */
-cltype97 = type_nit__MClassType.color;
-idtype98 = type_nit__MClassType.id;
-if(cltype97 >= var_resolved_receiver->type->table_size) {
-var96 = 0;
-} else {
-var96 = var_resolved_receiver->type->type_table[cltype97] == idtype98;
+/* method model#MProxyType#init for (self: MProxyType) */
+void nit___nit__MProxyType___standard__kernel__Object__init(val* self) {
+{
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MProxyType___standard__kernel__Object__init]))(self); /* init on <self:MProxyType>*/
 }
-if (unlikely(!var96)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1468);
-show_backtrace(1);
+RET_LABEL:;
 }
+/* method model#MNullableType#init for (self: MNullableType) */
+void nit___nit__MNullableType___standard__kernel__Object__init(val* self) {
+val* var /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce1;
+val* var2 /* : String */;
+char* var3 /* : NativeString */;
+val* var4 /* : FlatString */;
+val* var5 /* : MType */;
+val* var7 /* : MType */;
+val* var8 /* : String */;
+val* var9 /* : String */;
 {
-{ /* Inline model#MClassType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MClassType)> */
-var101 = var_resolved_receiver->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MClassType)> */
-if (unlikely(var101 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1058);
-show_backtrace(1);
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MNullableType___standard__kernel__Object__init]))(self); /* init on <self:MNullableType>*/
 }
-var99 = var101;
-RET_LABEL100:(void)0;
+if (unlikely(varonce==NULL)) {
+var = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce1!=NULL)) {
+var2 = varonce1;
+} else {
+var3 = "nullable ";
+var4 = standard___standard__NativeString___to_s_with_length(var3, 9l);
+var2 = var4;
+varonce1 = var2;
 }
+((struct instance_standard__NativeArray*)var)->values[0]=var2;
+} else {
+var = varonce;
+varonce = NULL;
 }
 {
-{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
-var104 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
-if (unlikely(var104 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1382);
-show_backtrace(1);
+{ /* Inline model#MProxyType#mtype (self) on <self:MNullableType> */
+var7 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var7 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var102 = var104;
-RET_LABEL103:(void)0;
+var5 = var7;
+RET_LABEL6:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var99,var102) on <var99:MClass> */
-var_other = var102;
+var8 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__Object__to_s]))(var5); /* to_s on <var5:MType>*/
+}
+((struct instance_standard__NativeArray*)var)->values[1]=var8;
 {
-{ /* Inline kernel#Object#is_same_instance (var99,var_other) on <var99:MClass> */
-var109 = var99 == var_other;
-var107 = var109;
-goto RET_LABEL108;
-RET_LABEL108:(void)0;
+var9 = ((val*(*)(val* self))(var->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var); /* native_to_s on <var:NativeArray[String]>*/
 }
+varonce = var;
+{
+{ /* Inline model#MNullableType#to_s= (self,var9) on <self:MNullableType> */
+self->attrs[COLOR_nit__model__MNullableType___to_s].val = var9; /* _to_s on <self:MNullableType> */
+RET_LABEL10:(void)0;
 }
-var105 = var107;
-goto RET_LABEL106;
-RET_LABEL106:(void)0;
 }
+RET_LABEL:;
 }
-if (var105){
-{
-var110 = ((val* (*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MClassType__arguments]))(var_resolved_receiver) /* arguments on <var_resolved_receiver:nullable Object(MClassType)>*/;
+/* method model#MNullableType#to_s for (self: MNullableType): String */
+val* nit___nit__MNullableType___standard__string__Object__to_s(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = self->attrs[COLOR_nit__model__MNullableType___to_s].val; /* _to_s on <self:MNullableType> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1655);
+fatal_exit(1);
 }
-{
-{ /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
-var113 = self->attrs[COLOR_nit__model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
-var111 = var113;
-RET_LABEL112:(void)0;
+var = var1;
+RET_LABEL:;
+return var;
 }
+/* method model#MNullableType#to_s= for (self: MNullableType, String) */
+void nit___nit__MNullableType___to_s_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__model__MNullableType___to_s].val = p0; /* _to_s on <self:MNullableType> */
+RET_LABEL:;
 }
-{
-var114 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var110, var111);
+/* method model#MNullableType#full_name for (self: MNullableType): String */
+val* nit___nit__MNullableType___nit__model_base__MEntity__full_name(val* self) {
+val* var /* : String */;
+short int var1 /* : Bool */;
+val* var2 /* : String */;
+val* var3 /* : String */;
+val* var5 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce6;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+val* var10 /* : MType */;
+val* var12 /* : MType */;
+val* var13 /* : String */;
+val* var14 /* : String */;
+var1 = self->attrs[COLOR_nit__model__MNullableType___full_name].val != NULL; /* _full_name on <self:MNullableType> */
+if(likely(var1)) {
+var2 = self->attrs[COLOR_nit__model__MNullableType___full_name].val; /* _full_name on <self:MNullableType> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _full_name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1657);
+fatal_exit(1);
 }
-var_res115 = var114;
-var = var_res115;
-goto RET_LABEL;
 } else {
-}
 {
-var116 = ((short int (*)(val* self))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:nullable Object(MClassType)>*/;
+if (unlikely(varonce==NULL)) {
+var5 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce6!=NULL)) {
+var7 = varonce6;
+} else {
+var8 = "nullable ";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 9l);
+var7 = var9;
+varonce6 = var7;
 }
-if (var116){
-var117 = NULL;
-if (var_anchor == NULL) {
-var118 = 0; /* is null */
+((struct instance_standard__NativeArray*)var5)->values[0]=var7;
 } else {
-var118 = 1; /* arg is null and recv is not */
+var5 = varonce;
+varonce = NULL;
 }
-if (0) {
-{ /* Inline kernel#Object#!= (var_anchor,var117) on <var_anchor:nullable MClassType> */
-var_other27 = var117;
 {
-var121 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other27) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
-}
-var122 = !var121;
-var119 = var122;
-goto RET_LABEL120;
-RET_LABEL120:(void)0;
+{ /* Inline model#MProxyType#mtype (self) on <self:MNullableType> */
+var12 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var118 = var119;
+var10 = var12;
+RET_LABEL11:(void)0;
 }
-if (unlikely(!var118)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1479);
-show_backtrace(1);
 }
-var123 = NULL;
-var124 = 0;
 {
-var125 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_resolved_receiver->class->vft[COLOR_nit__model__MType__resolve_for]))(var_resolved_receiver, var_anchor, var123, var_mmodule, var124) /* resolve_for on <var_resolved_receiver:nullable Object(MClassType)>*/;
-}
-var_resolved_receiver = var125;
-} else {
+var13 = ((val*(*)(val* self))(var10->class->vft[COLOR_nit__model_base__MEntity__full_name]))(var10); /* full_name on <var10:MType>*/
 }
+((struct instance_standard__NativeArray*)var5)->values[1]=var13;
 {
-var126 = nit___nit__MParameterType___MType__lookup_bound(self, var_mmodule, var_resolved_receiver);
+var14 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
 }
-var_verbatim_bound = var126;
-{
-var127 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_verbatim_bound->class->vft[COLOR_nit__model__MType__resolve_for]))(var_verbatim_bound, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_verbatim_bound:MType>*/;
+varonce = var5;
+var3 = var14;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
-var_res128 = var127;
-var = var_res128;
-goto RET_LABEL;
+self->attrs[COLOR_nit__model__MNullableType___full_name].val = var3; /* _full_name on <self:MNullableType> */
+var2 = var3;
+}
+var = var2;
 RET_LABEL:;
 return var;
 }
-/* method model#MParameterType#can_resolve_for for (self: MParameterType, MType, nullable MClassType, MModule): Bool */
-short int nit___nit__MParameterType___MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-val* var_mtype /* var mtype: MType */;
-val* var_anchor /* var anchor: nullable MClassType */;
-val* var_mmodule /* var mmodule: MModule */;
+/* method model#MNullableType#c_name for (self: MNullableType): String */
+val* nit___nit__MNullableType___nit__model_base__MEntity__c_name(val* self) {
+val* var /* : String */;
 short int var1 /* : Bool */;
-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 /* : MType */;
-val* var9 /* : Set[MClassDef] */;
-val* var10 /* : MClass */;
-val* var12 /* : MClass */;
-val* var13 /* : MClassDef */;
-val* var15 /* : MClassDef */;
-short int var16 /* : Bool */;
-var_mtype = p0;
-var_anchor = p1;
-var_mmodule = p2;
-{
-var1 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+val* var2 /* : String */;
+val* var3 /* : String */;
+val* var5 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce6;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+val* var10 /* : MType */;
+val* var12 /* : MType */;
+val* var13 /* : String */;
+val* var14 /* : String */;
+var1 = self->attrs[COLOR_nit__model__MNullableType___c_name].val != NULL; /* _c_name on <self:MNullableType> */
+if(likely(var1)) {
+var2 = self->attrs[COLOR_nit__model__MNullableType___c_name].val; /* _c_name on <self:MNullableType> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _c_name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1659);
+fatal_exit(1);
 }
-if (var1){
-var2 = NULL;
-if (var_anchor == NULL) {
-var3 = 0; /* is null */
 } else {
-var3 = 1; /* arg is null and recv is not */
-}
-if (0) {
-{ /* Inline kernel#Object#!= (var_anchor,var2) on <var_anchor:nullable MClassType> */
-var_other = var2;
-{
-var6 = ((short int (*)(val* self, val* p0))(var_anchor->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_anchor, var_other) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
-}
-var7 = !var6;
-var4 = var7;
-goto RET_LABEL5;
-RET_LABEL5:(void)0;
-}
-var3 = var4;
-}
-if (unlikely(!var3)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1495);
-show_backtrace(1);
-}
 {
-var8 = ((val* (*)(val* self, val* p0, val* p1))(var_mtype->class->vft[COLOR_nit__model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
-}
-var_mtype = var8;
+if (unlikely(varonce==NULL)) {
+var5 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce6!=NULL)) {
+var7 = varonce6;
 } else {
+var8 = "nullable__";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 10l);
+var7 = var9;
+varonce6 = var7;
 }
-{
-var9 = ((val* (*)(val* self, val* p0))(var_mtype->class->vft[COLOR_nit__model__MType__collect_mclassdefs]))(var_mtype, var_mmodule) /* collect_mclassdefs on <var_mtype:MType>*/;
+((struct instance_standard__NativeArray*)var5)->values[0]=var7;
+} else {
+var5 = varonce;
+varonce = NULL;
 }
 {
-{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
-var12 = self->attrs[COLOR_nit__model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+{ /* Inline model#MProxyType#mtype (self) on <self:MNullableType> */
+var12 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNullableType> */
 if (unlikely(var12 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1382);
-show_backtrace(1);
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#intro (var10) on <var10:MClass> */
-var15 = var10->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var10:MClass> */
-if (unlikely(var15 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 423);
-show_backtrace(1);
+var13 = ((val*(*)(val* self))(var10->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var10); /* c_name on <var10:MType>*/
 }
-var13 = var15;
-RET_LABEL14:(void)0;
+((struct instance_standard__NativeArray*)var5)->values[1]=var13;
+{
+var14 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
 }
+varonce = var5;
+var3 = var14;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
-{
-var16 = ((short int (*)(val* self, val* p0))(var9->class->vft[COLOR_standard__abstract_collection__Collection__has]))(var9, var13) /* has on <var9:Set[MClassDef]>*/;
+self->attrs[COLOR_nit__model__MNullableType___c_name].val = var3; /* _c_name on <self:MNullableType> */
+var2 = var3;
+}
+var = var2;
+RET_LABEL:;
+return var;
 }
-var = var16;
+/* method model#MNullableType#as_nullable for (self: MNullableType): MType */
+val* nit___nit__MNullableType___MType__as_nullable(val* self) {
+val* var /* : MType */;
+var = self;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MParameterType#init for (self: MParameterType) */
-void nit___nit__MParameterType___standard__kernel__Object__init(val* self) {
+/* method model#MNullableType#resolve_for for (self: MNullableType, MType, nullable MClassType, MModule, Bool): MType */
+val* nit___nit__MNullableType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
+val* var1 /* : MType */;
+val* var_res /* var res: MType */;
+val* var2 /* : MType */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+var_cleanup_virtual = p3;
+{
+var1 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(self->class->vft[COLOR_nit___nit__MNullableType___MType__resolve_for]))(self, p0, p1, p2, p3); /* resolve_for on <self:MNullableType>*/
+}
+var_res = var1;
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MParameterType___standard__kernel__Object__init]))(self) /* init on <self:MParameterType>*/;
+var2 = ((val*(*)(val* self))(var_res->class->vft[COLOR_nit__model__MType__as_nullable]))(var_res); /* as_nullable on <var_res:MType>*/
 }
+var = var2;
+goto RET_LABEL;
 RET_LABEL:;
+return var;
 }
-/* method model#MNullableType#mtype for (self: MNullableType): MType */
-val* nit___nit__MNullableType___mtype(val* self) {
+/* method model#MNullableType#lookup_fixed for (self: MNullableType, MModule, MType): MType */
+val* nit___nit__MNullableType___MType__lookup_fixed(val* self, val* p0, val* p1) {
 val* var /* : MType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_resolved_receiver /* var resolved_receiver: MType */;
 val* var1 /* : MType */;
-var1 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var1 == NULL)) {
+val* var_t /* var t: MType */;
+val* var2 /* : MType */;
+val* var4 /* : MType */;
+short int var5 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : MType */;
+var_mmodule = p0;
+var_resolved_receiver = p1;
+{
+var1 = ((val*(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_nit___nit__MNullableType___MType__lookup_fixed]))(self, p0, p1); /* lookup_fixed on <self:MNullableType>*/
+}
+var_t = var1;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MNullableType> */
+var4 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+var2 = var4;
+RET_LABEL3:(void)0;
 }
-/* method model#MNullableType#mtype= for (self: MNullableType, MType) */
-void nit___nit__MNullableType___mtype_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__model__MNullableType___mtype].val = p0; /* _mtype on <self:MNullableType> */
-RET_LABEL:;
 }
-/* method model#MNullableType#model for (self: MNullableType): Model */
-val* nit___nit__MNullableType___nit__model_base__MEntity__model(val* self) {
-val* var /* : Model */;
-val* var1 /* : MType */;
-val* var3 /* : MType */;
-val* var4 /* : Model */;
 {
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var3 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+{ /* Inline kernel#Object#== (var_t,var2) on <var_t:MType> */
+var_other = var2;
+{
+{ /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:MType> */
+var9 = var_t == var_other;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
-var1 = var3;
-RET_LABEL2:(void)0;
+}
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
 }
 }
+if (var5){
+var = self;
+goto RET_LABEL;
+} else {
+}
 {
-var4 = ((val* (*)(val* self))(var1->class->vft[COLOR_nit__model_base__MEntity__model]))(var1) /* model on <var1:MType>*/;
+var10 = ((val*(*)(val* self))(var_t->class->vft[COLOR_nit__model__MType__as_nullable]))(var_t); /* as_nullable on <var_t:MType>*/
 }
-var = var4;
+var = var10;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#init for (self: MNullableType) */
-void nit___nit__MNullableType___standard__kernel__Object__init(val* self) {
-static val* varonce;
+/* method model#MNotNullType#to_s for (self: MNotNullType): String */
+val* nit___nit__MNotNullType___standard__string__Object__to_s(val* self) {
 val* var /* : String */;
-char* var1 /* : NativeString */;
-long var2 /* : Int */;
-val* var3 /* : FlatString */;
-val* var4 /* : MType */;
+val* var1 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce2;
+val* var3 /* : String */;
+char* var4 /* : NativeString */;
+val* var5 /* : FlatString */;
 val* var6 /* : MType */;
-val* var7 /* : Array[Object] */;
-long var8 /* : Int */;
-val* var9 /* : NativeArray[Object] */;
+val* var8 /* : MType */;
+val* var9 /* : String */;
 val* var10 /* : String */;
-{
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MNullableType___standard__kernel__Object__init]))(self) /* init on <self:MNullableType>*/;
+if (unlikely(varonce==NULL)) {
+var1 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce2!=NULL)) {
+var3 = varonce2;
+} else {
+var4 = "not null ";
+var5 = standard___standard__NativeString___to_s_with_length(var4, 9l);
+var3 = var5;
+varonce2 = var3;
 }
-if (varonce) {
-var = varonce;
+((struct instance_standard__NativeArray*)var1)->values[0]=var3;
 } else {
-var1 = "nullable ";
-var2 = 9;
-var3 = standard___standard__NativeString___to_s_with_length(var1, var2);
-var = var3;
-varonce = var;
+var1 = varonce;
+varonce = NULL;
 }
 {
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var6 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var6 == NULL)) {
+{ /* Inline model#MProxyType#mtype (self) on <self:MNotNullType> */
+var8 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNotNullType> */
+if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var4 = var6;
-RET_LABEL5:(void)0;
-}
-}
-var7 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var7 = array_instance Array[Object] */
-var8 = 2;
-var9 = NEW_standard__NativeArray(var8, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var9)->values[0] = (val*) var;
-((struct instance_standard__NativeArray*)var9)->values[1] = (val*) var4;
-{
-((void (*)(val* self, val* p0, long p1))(var7->class->vft[COLOR_standard__array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Object]>*/;
+var6 = var8;
+RET_LABEL7:(void)0;
 }
 }
 {
-var10 = ((val* (*)(val* self))(var7->class->vft[COLOR_standard__string__Object__to_s]))(var7) /* to_s on <var7:Array[Object]>*/;
+var9 = ((val*(*)(val* self))(var6->class->vft[COLOR_standard__string__Object__to_s]))(var6); /* to_s on <var6:MType>*/
 }
+((struct instance_standard__NativeArray*)var1)->values[1]=var9;
 {
-{ /* Inline model#MNullableType#to_s= (self,var10) on <self:MNullableType> */
-self->attrs[COLOR_nit__model__MNullableType___to_s].val = var10; /* _to_s on <self:MNullableType> */
-RET_LABEL11:(void)0;
+var10 = ((val*(*)(val* self))(var1->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1); /* native_to_s on <var1:NativeArray[String]>*/
 }
-}
-RET_LABEL:;
-}
-/* method model#MNullableType#to_s for (self: MNullableType): String */
-val* nit___nit__MNullableType___standard__string__Object__to_s(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = self->attrs[COLOR_nit__model__MNullableType___to_s].val; /* _to_s on <self:MNullableType> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1516);
-show_backtrace(1);
-}
-var = var1;
+varonce = var1;
+var = var10;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#to_s= for (self: MNullableType, String) */
-void nit___nit__MNullableType___to_s_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__model__MNullableType___to_s].val = p0; /* _to_s on <self:MNullableType> */
-RET_LABEL:;
-}
-/* method model#MNullableType#full_name for (self: MNullableType): String */
-val* nit___nit__MNullableType___nit__model_base__MEntity__full_name(val* self) {
+/* method model#MNotNullType#full_name for (self: MNotNullType): String */
+val* nit___nit__MNotNullType___nit__model_base__MEntity__full_name(val* self) {
 val* var /* : String */;
 short int var1 /* : Bool */;
 val* var2 /* : String */;
 val* var3 /* : String */;
+val* var5 /* : NativeArray[String] */;
 static val* varonce;
-val* var5 /* : String */;
-char* var6 /* : NativeString */;
-long var7 /* : Int */;
-val* var8 /* : FlatString */;
-val* var9 /* : MType */;
-val* var11 /* : MType */;
-val* var12 /* : String */;
-val* var13 /* : Array[Object] */;
-long var14 /* : Int */;
-val* var15 /* : NativeArray[Object] */;
-val* var16 /* : String */;
-var1 = self->attrs[COLOR_nit__model__MNullableType___full_name].val != NULL; /* _full_name on <self:MNullableType> */
+static val* varonce6;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+val* var10 /* : MType */;
+val* var12 /* : MType */;
+val* var13 /* : String */;
+val* var14 /* : String */;
+var1 = self->attrs[COLOR_nit__model__MNotNullType___full_name].val != NULL; /* _full_name on <self:MNotNullType> */
 if(likely(var1)) {
-var2 = self->attrs[COLOR_nit__model__MNullableType___full_name].val; /* _full_name on <self:MNullableType> */
+var2 = self->attrs[COLOR_nit__model__MNotNullType___full_name].val; /* _full_name on <self:MNotNullType> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _full_name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1518);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1684);
+fatal_exit(1);
 }
 } else {
 {
-if (varonce) {
-var5 = varonce;
+if (unlikely(varonce==NULL)) {
+var5 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce6!=NULL)) {
+var7 = varonce6;
 } else {
-var6 = "nullable ";
-var7 = 9;
-var8 = standard___standard__NativeString___to_s_with_length(var6, var7);
-var5 = var8;
-varonce = var5;
+var8 = "not null ";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 9l);
+var7 = var9;
+varonce6 = var7;
+}
+((struct instance_standard__NativeArray*)var5)->values[0]=var7;
+} else {
+var5 = varonce;
+varonce = NULL;
 }
 {
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var11 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var11 == NULL)) {
+{ /* Inline model#MProxyType#mtype (self) on <self:MNotNullType> */
+var12 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNotNullType> */
+if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var9 = var11;
-RET_LABEL10:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
+var10 = var12;
+RET_LABEL11:(void)0;
 }
-{
-var12 = ((val* (*)(val* self))(var9->class->vft[COLOR_nit__model_base__MEntity__full_name]))(var9) /* full_name on <var9:MType>*/;
 }
-var13 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var13 = array_instance Array[Object] */
-var14 = 2;
-var15 = NEW_standard__NativeArray(var14, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var15)->values[0] = (val*) var5;
-((struct instance_standard__NativeArray*)var15)->values[1] = (val*) var12;
 {
-((void (*)(val* self, val* p0, long p1))(var13->class->vft[COLOR_standard__array__Array__with_native]))(var13, var15, var14) /* with_native on <var13:Array[Object]>*/;
-}
+var13 = ((val*(*)(val* self))(var10->class->vft[COLOR_nit__model_base__MEntity__full_name]))(var10); /* full_name on <var10:MType>*/
 }
+((struct instance_standard__NativeArray*)var5)->values[1]=var13;
 {
-var16 = ((val* (*)(val* self))(var13->class->vft[COLOR_standard__string__Object__to_s]))(var13) /* to_s on <var13:Array[Object]>*/;
+var14 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
 }
-var3 = var16;
+varonce = var5;
+var3 = var14;
 goto RET_LABEL4;
 RET_LABEL4:(void)0;
 }
-self->attrs[COLOR_nit__model__MNullableType___full_name].val = var3; /* _full_name on <self:MNullableType> */
+self->attrs[COLOR_nit__model__MNotNullType___full_name].val = var3; /* _full_name on <self:MNotNullType> */
 var2 = var3;
 }
 var = var2;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#c_name for (self: MNullableType): String */
-val* nit___nit__MNullableType___nit__model_base__MEntity__c_name(val* self) {
+/* method model#MNotNullType#c_name for (self: MNotNullType): String */
+val* nit___nit__MNotNullType___nit__model_base__MEntity__c_name(val* self) {
 val* var /* : String */;
 short int var1 /* : Bool */;
 val* var2 /* : String */;
 val* var3 /* : String */;
+val* var5 /* : NativeArray[String] */;
 static val* varonce;
-val* var5 /* : String */;
-char* var6 /* : NativeString */;
-long var7 /* : Int */;
-val* var8 /* : FlatString */;
-val* var9 /* : MType */;
-val* var11 /* : MType */;
-val* var12 /* : String */;
-val* var13 /* : Array[Object] */;
-long var14 /* : Int */;
-val* var15 /* : NativeArray[Object] */;
-val* var16 /* : String */;
-var1 = self->attrs[COLOR_nit__model__MNullableType___c_name].val != NULL; /* _c_name on <self:MNullableType> */
+static val* varonce6;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+val* var10 /* : MType */;
+val* var12 /* : MType */;
+val* var13 /* : String */;
+val* var14 /* : String */;
+var1 = self->attrs[COLOR_nit__model__MNotNullType___c_name].val != NULL; /* _c_name on <self:MNotNullType> */
 if(likely(var1)) {
-var2 = self->attrs[COLOR_nit__model__MNullableType___c_name].val; /* _c_name on <self:MNullableType> */
+var2 = self->attrs[COLOR_nit__model__MNotNullType___c_name].val; /* _c_name on <self:MNotNullType> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _c_name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1520);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1685);
+fatal_exit(1);
 }
 } else {
 {
-if (varonce) {
-var5 = varonce;
+if (unlikely(varonce==NULL)) {
+var5 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce6!=NULL)) {
+var7 = varonce6;
 } else {
-var6 = "nullable__";
-var7 = 10;
-var8 = standard___standard__NativeString___to_s_with_length(var6, var7);
-var5 = var8;
-varonce = var5;
+var8 = "notnull__";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 9l);
+var7 = var9;
+varonce6 = var7;
+}
+((struct instance_standard__NativeArray*)var5)->values[0]=var7;
+} else {
+var5 = varonce;
+varonce = NULL;
 }
 {
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var11 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var11 == NULL)) {
+{ /* Inline model#MProxyType#mtype (self) on <self:MNotNullType> */
+var12 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNotNullType> */
+if (unlikely(var12 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var9 = var11;
-RET_LABEL10:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
+var10 = var12;
+RET_LABEL11:(void)0;
 }
-{
-var12 = ((val* (*)(val* self))(var9->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var9) /* c_name on <var9:MType>*/;
 }
-var13 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var13 = array_instance Array[Object] */
-var14 = 2;
-var15 = NEW_standard__NativeArray(var14, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var15)->values[0] = (val*) var5;
-((struct instance_standard__NativeArray*)var15)->values[1] = (val*) var12;
 {
-((void (*)(val* self, val* p0, long p1))(var13->class->vft[COLOR_standard__array__Array__with_native]))(var13, var15, var14) /* with_native on <var13:Array[Object]>*/;
-}
+var13 = ((val*(*)(val* self))(var10->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var10); /* c_name on <var10:MType>*/
 }
+((struct instance_standard__NativeArray*)var5)->values[1]=var13;
 {
-var16 = ((val* (*)(val* self))(var13->class->vft[COLOR_standard__string__Object__to_s]))(var13) /* to_s on <var13:Array[Object]>*/;
+var14 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
 }
-var3 = var16;
+varonce = var5;
+var3 = var14;
 goto RET_LABEL4;
 RET_LABEL4:(void)0;
 }
-self->attrs[COLOR_nit__model__MNullableType___c_name].val = var3; /* _c_name on <self:MNullableType> */
+self->attrs[COLOR_nit__model__MNotNullType___c_name].val = var3; /* _c_name on <self:MNotNullType> */
 var2 = var3;
 }
 var = var2;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#need_anchor for (self: MNullableType): Bool */
-short int nit___nit__MNullableType___MType__need_anchor(val* self) {
-short int var /* : Bool */;
-val* var1 /* : MType */;
-val* var3 /* : MType */;
-short int var4 /* : Bool */;
-{
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var3 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-var4 = ((short int (*)(val* self))(var1->class->vft[COLOR_nit__model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
-}
-var = var4;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullableType#as_nullable for (self: MNullableType): MType */
-val* nit___nit__MNullableType___MType__as_nullable(val* self) {
+/* method model#MNotNullType#as_notnull for (self: MNotNullType): MType */
+val* nit___nit__MNotNullType___MType__as_notnull(val* self) {
 val* var /* : MType */;
 var = self;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#as_notnullable for (self: MNullableType): MType */
-val* nit___nit__MNullableType___MType__as_notnullable(val* self) {
-val* var /* : MType */;
-val* var1 /* : MType */;
-val* var3 /* : MType */;
-{
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var3 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-var = var1;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullableType#resolve_for for (self: MNullableType, MType, nullable MClassType, MModule, Bool): MType */
-val* nit___nit__MNullableType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+/* method model#MNotNullType#resolve_for for (self: MNotNullType, MType, nullable MClassType, MModule, Bool): MType */
+val* nit___nit__MNotNullType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
 val* var /* : MType */;
 val* var_mtype /* var mtype: MType */;
 val* var_anchor /* var anchor: nullable MClassType */;
 val* var_mmodule /* var mmodule: MModule */;
 short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
 val* var1 /* : MType */;
-val* var3 /* : MType */;
-val* var4 /* : MType */;
 val* var_res /* var res: MType */;
-val* var5 /* : MType */;
+val* var2 /* : MType */;
 var_mtype = p0;
 var_anchor = p1;
 var_mmodule = p2;
 var_cleanup_virtual = p3;
 {
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var3 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-var4 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var1->class->vft[COLOR_nit__model__MType__resolve_for]))(var1, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var1:MType>*/;
-}
-var_res = var4;
-{
-var5 = ((val* (*)(val* self))(var_res->class->vft[COLOR_nit__model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType>*/;
-}
-var = var5;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method model#MNullableType#can_resolve_for for (self: MNullableType, MType, nullable MClassType, MModule): Bool */
-short int nit___nit__MNullableType___MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
-short int var /* : Bool */;
-val* var_mtype /* var mtype: MType */;
-val* var_anchor /* var anchor: nullable MClassType */;
-val* var_mmodule /* var mmodule: MModule */;
-val* var1 /* : MType */;
-val* var3 /* : MType */;
-short int var4 /* : Bool */;
-var_mtype = p0;
-var_anchor = p1;
-var_mmodule = p2;
-{
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var3 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
+var1 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(self->class->vft[COLOR_nit___nit__MNotNullType___MType__resolve_for]))(self, p0, p1, p2, p3); /* resolve_for on <self:MNotNullType>*/
 }
+var_res = var1;
 {
-var4 = ((short int (*)(val* self, val* p0, val* p1, val* p2))(var1->class->vft[COLOR_nit__model__MType__can_resolve_for]))(var1, var_mtype, var_anchor, var_mmodule) /* can_resolve_for on <var1:MType>*/;
+var2 = ((val*(*)(val* self))(var_res->class->vft[COLOR_nit__model__MType__as_notnull]))(var_res); /* as_notnull on <var_res:MType>*/
 }
-var = var4;
+var = var2;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#lookup_fixed for (self: MNullableType, MModule, MType): MType */
-val* nit___nit__MNullableType___MType__lookup_fixed(val* self, val* p0, val* p1) {
+/* method model#MNotNullType#lookup_fixed for (self: MNotNullType, MModule, MType): MType */
+val* nit___nit__MNotNullType___MType__lookup_fixed(val* self, val* p0, val* p1) {
 val* var /* : MType */;
 val* var_mmodule /* var mmodule: MModule */;
 val* var_resolved_receiver /* var resolved_receiver: MType */;
 val* var1 /* : MType */;
-val* var3 /* : MType */;
-val* var4 /* : MType */;
 val* var_t /* var t: MType */;
-val* var5 /* : MType */;
-val* var7 /* : MType */;
-short int var8 /* : Bool */;
+val* var2 /* : MType */;
+val* var4 /* : MType */;
+short int var5 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var10 /* : Bool */;
-short int var12 /* : Bool */;
-val* var13 /* : MType */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : MType */;
 var_mmodule = p0;
 var_resolved_receiver = p1;
 {
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var3 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var3 == NULL)) {
+var1 = ((val*(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_nit___nit__MNotNullType___MType__lookup_fixed]))(self, p0, p1); /* lookup_fixed on <self:MNotNullType>*/
+}
+var_t = var1;
+{
+{ /* Inline model#MProxyType#mtype (self) on <self:MNotNullType> */
+var4 = self->attrs[COLOR_nit__model__MProxyType___mtype].val; /* _mtype on <self:MNotNullType> */
+if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1598);
+fatal_exit(1);
 }
-var1 = var3;
-RET_LABEL2:(void)0;
+var2 = var4;
+RET_LABEL3:(void)0;
 }
 }
 {
-var4 = ((val* (*)(val* self, val* p0, val* p1))(var1->class->vft[COLOR_nit__model__MType__lookup_fixed]))(var1, var_mmodule, var_resolved_receiver) /* lookup_fixed on <var1:MType>*/;
-}
-var_t = var4;
+{ /* Inline kernel#Object#== (var_t,var2) on <var_t:MType> */
+var_other = var2;
 {
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var7 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var7 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
+{ /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:MType> */
+var9 = var_t == var_other;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
 }
 var5 = var7;
+goto RET_LABEL6;
 RET_LABEL6:(void)0;
 }
 }
+if (var5){
+var = self;
+goto RET_LABEL;
+} else {
+}
 {
-{ /* Inline kernel#Object#== (var_t,var5) on <var_t:MType> */
-var_other = var5;
-{
-{ /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:MType> */
-var12 = var_t == var_other;
-var10 = var12;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var10 = ((val*(*)(val* self))(var_t->class->vft[COLOR_nit__model__MType__as_notnull]))(var_t); /* as_notnull on <var_t:MType>*/
+}
+var = var10;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullType#model for (self: MNullType): Model */
+val* nit___nit__MNullType___nit__model_base__MEntity__model(val* self) {
+val* var /* : Model */;
+val* var1 /* : Model */;
+var1 = self->attrs[COLOR_nit__model__MNullType___model].val; /* _model on <self:MNullType> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1709);
+fatal_exit(1);
 }
+var = var1;
+RET_LABEL:;
+return var;
 }
-var8 = var10;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+/* method model#MNullType#model= for (self: MNullType, Model) */
+void nit___nit__MNullType___model_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__model__MNullType___model].val = p0; /* _model on <self:MNullType> */
+RET_LABEL:;
 }
+/* method model#MNullType#to_s for (self: MNullType): String */
+val* nit___nit__MNullType___standard__string__Object__to_s(val* self) {
+val* var /* : String */;
+static val* varonce;
+val* var1 /* : String */;
+char* var2 /* : NativeString */;
+val* var3 /* : FlatString */;
+if (likely(varonce!=NULL)) {
+var1 = varonce;
+} else {
+var2 = "null";
+var3 = standard___standard__NativeString___to_s_with_length(var2, 4l);
+var1 = var3;
+varonce = var1;
 }
-if (var8){
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullType#full_name for (self: MNullType): String */
+val* nit___nit__MNullType___nit__model_base__MEntity__full_name(val* self) {
+val* var /* : String */;
+static val* varonce;
+val* var1 /* : String */;
+char* var2 /* : NativeString */;
+val* var3 /* : FlatString */;
+if (likely(varonce!=NULL)) {
+var1 = varonce;
+} else {
+var2 = "null";
+var3 = standard___standard__NativeString___to_s_with_length(var2, 4l);
+var1 = var3;
+varonce = var1;
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullType#c_name for (self: MNullType): String */
+val* nit___nit__MNullType___nit__model_base__MEntity__c_name(val* self) {
+val* var /* : String */;
+static val* varonce;
+val* var1 /* : String */;
+char* var2 /* : NativeString */;
+val* var3 /* : FlatString */;
+if (likely(varonce!=NULL)) {
+var1 = varonce;
+} else {
+var2 = "null";
+var3 = standard___standard__NativeString___to_s_with_length(var2, 4l);
+var1 = var3;
+varonce = var1;
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullType#as_nullable for (self: MNullType): MType */
+val* nit___nit__MNullType___MType__as_nullable(val* self) {
+val* var /* : MType */;
 var = self;
 goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullType#as_notnull for (self: MNullType): MType */
+val* nit___nit__MNullType___MType__as_notnull(val* self) {
+val* var /* : MType */;
+short int var1 /* : Bool */;
+val* var2 /* : MType */;
+val* var3 /* : MBottomType */;
+val* var4 /* : Model */;
+val* var6 /* : Model */;
+var1 = self->attrs[COLOR_nit__model__MNullType___as_notnull].val != NULL; /* _as_notnull on <self:MNullType> */
+if(likely(var1)) {
+var2 = self->attrs[COLOR_nit__model__MNullType___as_notnull].val; /* _as_notnull on <self:MNullType> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _as_notnull");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1715);
+fatal_exit(1);
+}
 } else {
+var3 = NEW_nit__MBottomType(&type_nit__MBottomType);
+{
+{ /* Inline model#MNullType#model (self) on <self:MNullType> */
+var6 = self->attrs[COLOR_nit__model__MNullType___model].val; /* _model on <self:MNullType> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1709);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+((void(*)(val* self, val* p0))(var3->class->vft[COLOR_nit__model__MBottomType__model_61d]))(var3, var4); /* model= on <var3:MBottomType>*/
 }
 {
-var13 = ((val* (*)(val* self))(var_t->class->vft[COLOR_nit__model__MType__as_nullable]))(var_t) /* as_nullable on <var_t:MType>*/;
+((void(*)(val* self))(var3->class->vft[COLOR_standard__kernel__Object__init]))(var3); /* init on <var3:MBottomType>*/
+}
+self->attrs[COLOR_nit__model__MNullType___as_notnull].val = var3; /* _as_notnull on <self:MNullType> */
+var2 = var3;
+}
+var = var2;
+RET_LABEL:;
+return var;
 }
-var = var13;
+/* method model#MNullType#need_anchor for (self: MNullType): Bool */
+short int nit___nit__MNullType___MType__need_anchor(val* self) {
+short int var /* : Bool */;
+var = 0;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#length for (self: MNullableType): Int */
-long nit___nit__MNullableType___MType__length(val* self) {
-long var /* : Int */;
-val* var1 /* : MType */;
-val* var3 /* : MType */;
-long var4 /* : Int */;
-{
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var3 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-var4 = ((long (*)(val* self))(var1->class->vft[COLOR_nit__model__MType__length]))(var1) /* length on <var1:MType>*/;
+/* method model#MNullType#resolve_for for (self: MNullType, MType, nullable MClassType, MModule, Bool): MType */
+val* nit___nit__MNullType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+var_cleanup_virtual = p3;
+var = self;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
-var = var4;
+/* method model#MNullType#can_resolve_for for (self: MNullType, MType, nullable MClassType, MModule): Bool */
+short int nit___nit__MNullType___MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
+short int var /* : Bool */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+var = 1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#collect_mclassdefs for (self: MNullableType, MModule): Set[MClassDef] */
-val* nit___nit__MNullableType___MType__collect_mclassdefs(val* self, val* p0) {
+/* method model#MNullType#collect_mclassdefs for (self: MNullType, MModule): Set[MClassDef] */
+val* nit___nit__MNullType___MType__collect_mclassdefs(val* self, val* p0) {
 val* var /* : Set[MClassDef] */;
 val* var_mmodule /* var mmodule: MModule */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-val* var3 /* : MType */;
-val* var5 /* : MType */;
-val* var6 /* : Set[MClassDef] */;
+val* var1 /* : HashSet[MClassDef] */;
 var_mmodule = p0;
+var1 = NEW_standard__HashSet(&type_standard__HashSet__nit__MClassDef);
 {
-var1 = nit___nit__MNullableType___MType__need_anchor(self);
-}
-var2 = !var1;
-if (unlikely(!var2)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1550);
-show_backtrace(1);
-}
-{
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var5 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var5 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var3 = var5;
-RET_LABEL4:(void)0;
-}
-}
-{
-var6 = ((val* (*)(val* self, val* p0))(var3->class->vft[COLOR_nit__model__MType__collect_mclassdefs]))(var3, var_mmodule) /* collect_mclassdefs on <var3:MType>*/;
+standard___standard__HashSet___standard__kernel__Object__init(var1); /* Direct call hash_collection#HashSet#init on <var1:HashSet[MClassDef]>*/
 }
-var = var6;
+var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#collect_mclasses for (self: MNullableType, MModule): Set[MClass] */
-val* nit___nit__MNullableType___MType__collect_mclasses(val* self, val* p0) {
+/* method model#MNullType#collect_mclasses for (self: MNullType, MModule): Set[MClass] */
+val* nit___nit__MNullType___MType__collect_mclasses(val* self, val* p0) {
 val* var /* : Set[MClass] */;
 val* var_mmodule /* var mmodule: MModule */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-val* var3 /* : MType */;
-val* var5 /* : MType */;
-val* var6 /* : Set[MClass] */;
+val* var1 /* : HashSet[MClass] */;
 var_mmodule = p0;
+var1 = NEW_standard__HashSet(&type_standard__HashSet__nit__MClass);
 {
-var1 = nit___nit__MNullableType___MType__need_anchor(self);
-}
-var2 = !var1;
-if (unlikely(!var2)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1556);
-show_backtrace(1);
-}
-{
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var5 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var5 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var3 = var5;
-RET_LABEL4:(void)0;
-}
-}
-{
-var6 = ((val* (*)(val* self, val* p0))(var3->class->vft[COLOR_nit__model__MType__collect_mclasses]))(var3, var_mmodule) /* collect_mclasses on <var3:MType>*/;
+standard___standard__HashSet___standard__kernel__Object__init(var1); /* Direct call hash_collection#HashSet#init on <var1:HashSet[MClass]>*/
 }
-var = var6;
+var = var1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullableType#collect_mtypes for (self: MNullableType, MModule): Set[MClassType] */
-val* nit___nit__MNullableType___MType__collect_mtypes(val* self, val* p0) {
+/* method model#MNullType#collect_mtypes for (self: MNullType, MModule): Set[MClassType] */
+val* nit___nit__MNullType___MType__collect_mtypes(val* self, val* p0) {
 val* var /* : Set[MClassType] */;
 val* var_mmodule /* var mmodule: MModule */;
-short int var1 /* : Bool */;
-short int var2 /* : Bool */;
-val* var3 /* : MType */;
-val* var5 /* : MType */;
-val* var6 /* : Set[MClassType] */;
+val* var1 /* : HashSet[MClassType] */;
 var_mmodule = p0;
+var1 = NEW_standard__HashSet(&type_standard__HashSet__nit__MClassType);
 {
-var1 = nit___nit__MNullableType___MType__need_anchor(self);
-}
-var2 = !var1;
-if (unlikely(!var2)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1562);
-show_backtrace(1);
-}
-{
-{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
-var5 = self->attrs[COLOR_nit__model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
-if (unlikely(var5 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1506);
-show_backtrace(1);
-}
-var3 = var5;
-RET_LABEL4:(void)0;
+standard___standard__HashSet___standard__kernel__Object__init(var1); /* Direct call hash_collection#HashSet#init on <var1:HashSet[MClassType]>*/
 }
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
 }
+/* method model#MNullType#init for (self: MNullType) */
+void nit___nit__MNullType___standard__kernel__Object__init(val* self) {
 {
-var6 = ((val* (*)(val* self, val* p0))(var3->class->vft[COLOR_nit__model__MType__collect_mtypes]))(var3, var_mmodule) /* collect_mtypes on <var3:MType>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MNullType___standard__kernel__Object__init]))(self); /* init on <self:MNullType>*/
 }
-var = var6;
-goto RET_LABEL;
 RET_LABEL:;
-return var;
 }
-/* method model#MNullType#model for (self: MNullType): Model */
-val* nit___nit__MNullType___nit__model_base__MEntity__model(val* self) {
+/* method model#MBottomType#model for (self: MBottomType): Model */
+val* nit___nit__MBottomType___nit__model_base__MEntity__model(val* self) {
 val* var /* : Model */;
 val* var1 /* : Model */;
-var1 = self->attrs[COLOR_nit__model__MNullType___model].val; /* _model on <self:MNullType> */
+var1 = self->attrs[COLOR_nit__model__MBottomType___model].val; /* _model on <self:MBottomType> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1572);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1735);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#model= for (self: MNullType, Model) */
-void nit___nit__MNullType___model_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__model__MNullType___model].val = p0; /* _model on <self:MNullType> */
+/* method model#MBottomType#model= for (self: MBottomType, Model) */
+void nit___nit__MBottomType___model_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__model__MBottomType___model].val = p0; /* _model on <self:MBottomType> */
 RET_LABEL:;
 }
-/* method model#MNullType#to_s for (self: MNullType): String */
-val* nit___nit__MNullType___standard__string__Object__to_s(val* self) {
+/* method model#MBottomType#to_s for (self: MBottomType): String */
+val* nit___nit__MBottomType___standard__string__Object__to_s(val* self) {
 val* var /* : String */;
 static val* varonce;
 val* var1 /* : String */;
 char* var2 /* : NativeString */;
-long var3 /* : Int */;
-val* var4 /* : FlatString */;
-if (varonce) {
+val* var3 /* : FlatString */;
+if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
-var2 = "null";
-var3 = 4;
-var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
-var1 = var4;
+var2 = "bottom";
+var3 = standard___standard__NativeString___to_s_with_length(var2, 6l);
+var1 = var3;
 varonce = var1;
 }
 var = var1;
@@ -1378,21 +2370,19 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#full_name for (self: MNullType): String */
-val* nit___nit__MNullType___nit__model_base__MEntity__full_name(val* self) {
+/* method model#MBottomType#full_name for (self: MBottomType): String */
+val* nit___nit__MBottomType___nit__model_base__MEntity__full_name(val* self) {
 val* var /* : String */;
 static val* varonce;
 val* var1 /* : String */;
 char* var2 /* : NativeString */;
-long var3 /* : Int */;
-val* var4 /* : FlatString */;
-if (varonce) {
+val* var3 /* : FlatString */;
+if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
-var2 = "null";
-var3 = 4;
-var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
-var1 = var4;
+var2 = "bottom";
+var3 = standard___standard__NativeString___to_s_with_length(var2, 6l);
+var1 = var3;
 varonce = var1;
 }
 var = var1;
@@ -1400,21 +2390,19 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#c_name for (self: MNullType): String */
-val* nit___nit__MNullType___nit__model_base__MEntity__c_name(val* self) {
+/* method model#MBottomType#c_name for (self: MBottomType): String */
+val* nit___nit__MBottomType___nit__model_base__MEntity__c_name(val* self) {
 val* var /* : String */;
 static val* varonce;
 val* var1 /* : String */;
 char* var2 /* : NativeString */;
-long var3 /* : Int */;
-val* var4 /* : FlatString */;
-if (varonce) {
+val* var3 /* : FlatString */;
+if (likely(varonce!=NULL)) {
 var1 = varonce;
 } else {
-var2 = "null";
-var3 = 4;
-var4 = standard___standard__NativeString___to_s_with_length(var2, var3);
-var1 = var4;
+var2 = "bottom";
+var3 = standard___standard__NativeString___to_s_with_length(var2, 6l);
+var1 = var3;
 varonce = var1;
 }
 var = var1;
@@ -1422,26 +2410,60 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#as_nullable for (self: MNullType): MType */
-val* nit___nit__MNullType___MType__as_nullable(val* self) {
+/* method model#MBottomType#as_nullable for (self: MBottomType): MType */
+val* nit___nit__MBottomType___MType__as_nullable(val* self) {
+val* var /* : MType */;
+val* var1 /* : Model */;
+val* var3 /* : Model */;
+val* var4 /* : MNullType */;
+val* var6 /* : MNullType */;
+{
+{ /* Inline model#MBottomType#model (self) on <self:MBottomType> */
+var3 = self->attrs[COLOR_nit__model__MBottomType___model].val; /* _model on <self:MBottomType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1735);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline model#Model#null_type (var1) on <var1:Model> */
+var6 = var1->attrs[COLOR_nit__model__Model___null_type].val; /* _null_type on <var1:Model> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _null_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 94);
+fatal_exit(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MBottomType#as_notnull for (self: MBottomType): MType */
+val* nit___nit__MBottomType___MType__as_notnull(val* self) {
 val* var /* : MType */;
 var = self;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#need_anchor for (self: MNullType): Bool */
-short int nit___nit__MNullType___MType__need_anchor(val* self) {
+/* method model#MBottomType#need_anchor for (self: MBottomType): Bool */
+short int nit___nit__MBottomType___MType__need_anchor(val* self) {
 short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = 0;
-var = var1;
+var = 0;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#resolve_for for (self: MNullType, MType, nullable MClassType, MModule, Bool): MType */
-val* nit___nit__MNullType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+/* method model#MBottomType#resolve_for for (self: MBottomType, MType, nullable MClassType, MModule, Bool): MType */
+val* nit___nit__MBottomType___MType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
 val* var /* : MType */;
 val* var_mtype /* var mtype: MType */;
 val* var_anchor /* var anchor: nullable MClassType */;
@@ -1456,24 +2478,22 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#can_resolve_for for (self: MNullType, MType, nullable MClassType, MModule): Bool */
-short int nit___nit__MNullType___MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
+/* method model#MBottomType#can_resolve_for for (self: MBottomType, MType, nullable MClassType, MModule): Bool */
+short int nit___nit__MBottomType___MType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
 short int var /* : Bool */;
 val* var_mtype /* var mtype: MType */;
 val* var_anchor /* var anchor: nullable MClassType */;
 val* var_mmodule /* var mmodule: MModule */;
-short int var1 /* : Bool */;
 var_mtype = p0;
 var_anchor = p1;
 var_mmodule = p2;
-var1 = 1;
-var = var1;
+var = 1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#collect_mclassdefs for (self: MNullType, MModule): Set[MClassDef] */
-val* nit___nit__MNullType___MType__collect_mclassdefs(val* self, val* p0) {
+/* method model#MBottomType#collect_mclassdefs for (self: MBottomType, MModule): Set[MClassDef] */
+val* nit___nit__MBottomType___MType__collect_mclassdefs(val* self, val* p0) {
 val* var /* : Set[MClassDef] */;
 val* var_mmodule /* var mmodule: MModule */;
 val* var1 /* : HashSet[MClassDef] */;
@@ -1487,8 +2507,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#collect_mclasses for (self: MNullType, MModule): Set[MClass] */
-val* nit___nit__MNullType___MType__collect_mclasses(val* self, val* p0) {
+/* method model#MBottomType#collect_mclasses for (self: MBottomType, MModule): Set[MClass] */
+val* nit___nit__MBottomType___MType__collect_mclasses(val* self, val* p0) {
 val* var /* : Set[MClass] */;
 val* var_mmodule /* var mmodule: MModule */;
 val* var1 /* : HashSet[MClass] */;
@@ -1502,8 +2522,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#collect_mtypes for (self: MNullType, MModule): Set[MClassType] */
-val* nit___nit__MNullType___MType__collect_mtypes(val* self, val* p0) {
+/* method model#MBottomType#collect_mtypes for (self: MBottomType, MModule): Set[MClassType] */
+val* nit___nit__MBottomType___MType__collect_mtypes(val* self, val* p0) {
 val* var /* : Set[MClassType] */;
 val* var_mmodule /* var mmodule: MModule */;
 val* var1 /* : HashSet[MClassType] */;
@@ -1517,10 +2537,10 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#MNullType#init for (self: MNullType) */
-void nit___nit__MNullType___standard__kernel__Object__init(val* self) {
+/* method model#MBottomType#init for (self: MBottomType) */
+void nit___nit__MBottomType___standard__kernel__Object__init(val* self) {
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MNullType___standard__kernel__Object__init]))(self) /* init on <self:MNullType>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MBottomType___standard__kernel__Object__init]))(self); /* init on <self:MBottomType>*/
 }
 RET_LABEL:;
 }
@@ -1531,17 +2551,95 @@ val* var1 /* : Array[MParameter] */;
 var1 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
 if (unlikely(var1 == 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);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MSignature#mparameters= for (self: MSignature, Array[MParameter]) */
+void nit___nit__MSignature___mparameters_61d(val* self, val* p0) {
+self->attrs[COLOR_nit__model__MSignature___mparameters].val = p0; /* _mparameters on <self:MSignature> */
+RET_LABEL:;
+}
+/* method model#MSignature#mparameter_by_name for (self: MSignature, String): nullable MParameter */
+val* nit___nit__MSignature___mparameter_by_name(val* self, val* p0) {
+val* var /* : nullable MParameter */;
+val* var_name /* var name: String */;
+val* var1 /* : Array[MParameter] */;
+val* var3 /* : Array[MParameter] */;
+val* var_ /* var : Array[MParameter] */;
+val* var4 /* : ArrayIterator[nullable Object] */;
+val* var_5 /* var : ArrayIterator[MParameter] */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable Object */;
+val* var_p /* var p: MParameter */;
+val* var8 /* : String */;
+val* var10 /* : String */;
+short int var11 /* : Bool */;
+var_name = p0;
+{
+{ /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
+var3 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+var_ = var1;
+{
+var4 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+}
+var_5 = var4;
+for(;;) {
+{
+var6 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_5);
+}
+if (var6){
+{
+var7 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_5);
+}
+var_p = var7;
+{
+{ /* Inline model#MParameter#name (var_p) on <var_p:MParameter> */
+var10 = var_p->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <var_p:MParameter> */
+if (unlikely(var10 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1876);
+fatal_exit(1);
+}
+var8 = var10;
+RET_LABEL9:(void)0;
+}
+}
+{
+var11 = ((short int(*)(val* self, val* p0))(var8->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var8, var_name); /* == on <var8:String>*/
+}
+if (var11){
+var = var_p;
+goto RET_LABEL;
+} else {
+}
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_5); /* Direct call array#ArrayIterator#next on <var_5:ArrayIterator[MParameter]>*/
+}
+} else {
+goto BREAK_label;
+}
 }
-var = var1;
-RET_LABEL:;
-return var;
+BREAK_label: (void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_5); /* Direct call array#ArrayIterator#finish on <var_5:ArrayIterator[MParameter]>*/
 }
-/* method model#MSignature#mparameters= for (self: MSignature, Array[MParameter]) */
-void nit___nit__MSignature___mparameters_61d(val* self, val* p0) {
-self->attrs[COLOR_nit__model__MSignature___mparameters].val = p0; /* _mparameters on <self:MSignature> */
+var = ((val*)NULL);
+goto RET_LABEL;
 RET_LABEL:;
+return var;
 }
 /* method model#MSignature#return_mtype for (self: MSignature): nullable MType */
 val* nit___nit__MSignature___return_mtype(val* self) {
@@ -1560,155 +2658,151 @@ RET_LABEL:;
 /* method model#MSignature#length for (self: MSignature): Int */
 long nit___nit__MSignature___MType__length(val* self) {
 long var /* : Int */;
-long var1 /* : Int */;
 long var_res /* var res: Int */;
-val* var2 /* : nullable MType */;
-val* var4 /* : nullable MType */;
+val* var1 /* : nullable MType */;
+val* var3 /* : nullable MType */;
 val* var_t /* var t: nullable MType */;
-val* var5 /* : null */;
-short int var6 /* : Bool */;
-short int var7 /* : Bool */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var9 /* : Bool */;
-short int var10 /* : Bool */;
-long var11 /* : Int */;
-long var12 /* : Int */;
-short int var14 /* : Bool */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+long var9 /* : Int */;
+long var10 /* : Int */;
+short int var12 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var15 /* : Int */;
+long var13 /* : Int */;
+val* var14 /* : Array[MParameter] */;
 val* var16 /* : Array[MParameter] */;
-val* var18 /* : Array[MParameter] */;
 val* var_ /* var : Array[MParameter] */;
-val* var19 /* : ArrayIterator[nullable Object] */;
-val* var_20 /* var : ArrayIterator[MParameter] */;
-short int var21 /* : Bool */;
-val* var22 /* : nullable Object */;
+val* var17 /* : ArrayIterator[nullable Object] */;
+val* var_18 /* var : ArrayIterator[MParameter] */;
+short int var19 /* : Bool */;
+val* var20 /* : nullable Object */;
 val* var_p /* var p: MParameter */;
+val* var21 /* : MType */;
 val* var23 /* : MType */;
-val* var25 /* : MType */;
-long var26 /* : Int */;
-long var27 /* : Int */;
-short int var29 /* : Bool */;
-int cltype30;
-int idtype31;
-const char* var_class_name32;
-long var33 /* : Int */;
-var1 = 1;
-var_res = var1;
+long var24 /* : Int */;
+long var25 /* : Int */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+const char* var_class_name30;
+long var31 /* : Int */;
+var_res = 1l;
 {
 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
-var4 = self->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
-var2 = var4;
-RET_LABEL3:(void)0;
+var3 = self->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
+var1 = var3;
+RET_LABEL2:(void)0;
 }
 }
-var_t = var2;
-var5 = NULL;
+var_t = var1;
 if (var_t == NULL) {
-var6 = 0; /* is null */
+var4 = 0; /* is null */
 } else {
-var6 = 1; /* arg is null and recv is not */
+var4 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_t,var5) on <var_t:nullable MType> */
-var_other = var5;
+{ /* Inline kernel#Object#!= (var_t,((val*)NULL)) on <var_t:nullable MType> */
+var_other = ((val*)NULL);
 {
-var9 = ((short int (*)(val* self, val* p0))(var_t->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_t, var_other) /* == on <var_t:nullable MType(MType)>*/;
+var7 = ((short int(*)(val* self, val* p0))(var_t->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_t, var_other); /* == on <var_t:nullable MType(MType)>*/
 }
-var10 = !var9;
-var7 = var10;
-goto RET_LABEL8;
-RET_LABEL8:(void)0;
+var8 = !var7;
+var5 = var8;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
 }
-var6 = var7;
+var4 = var5;
 }
-if (var6){
+if (var4){
 {
-var11 = ((long (*)(val* self))(var_t->class->vft[COLOR_nit__model__MType__length]))(var_t) /* length on <var_t:nullable MType(MType)>*/;
+var9 = ((long(*)(val* self))(var_t->class->vft[COLOR_nit__model__MType__length]))(var_t); /* length on <var_t:nullable MType(MType)>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_res,var11) on <var_res:Int> */
-/* Covariant cast for argument 0 (i) <var11:Int> isa OTHER */
-/* <var11:Int> isa OTHER */
-var14 = 1; /* easy <var11:Int> isa OTHER*/
-if (unlikely(!var14)) {
+{ /* Inline kernel#Int#+ (var_res,var9) on <var_res:Int> */
+/* Covariant cast for argument 0 (i) <var9:Int> isa OTHER */
+/* <var9:Int> isa OTHER */
+var12 = 1; /* easy <var9:Int> isa OTHER*/
+if (unlikely(!var12)) {
 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, 413);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var15 = var_res + var11;
-var12 = var15;
-goto RET_LABEL13;
-RET_LABEL13:(void)0;
+var13 = var_res + var9;
+var10 = var13;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
 }
 }
-var_res = var12;
+var_res = var10;
 } else {
 }
 {
 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
-var18 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
-if (unlikely(var18 == NULL)) {
+var16 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var16 == 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);
 }
-var16 = var18;
-RET_LABEL17:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
-var_ = var16;
+var_ = var14;
 {
-var19 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var17 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_20 = var19;
+var_18 = var17;
 for(;;) {
 {
-var21 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_20);
+var19 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_18);
 }
-if (var21){
+if (var19){
 {
-var22 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_20);
+var20 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_18);
 }
-var_p = var22;
+var_p = var20;
 {
 { /* Inline model#MParameter#mtype (var_p) on <var_p:MParameter> */
-var25 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
-if (unlikely(var25 == NULL)) {
+var23 = var_p->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_p:MParameter> */
+if (unlikely(var23 == 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);
 }
-var23 = var25;
-RET_LABEL24:(void)0;
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
 {
-var26 = ((long (*)(val* self))(var23->class->vft[COLOR_nit__model__MType__length]))(var23) /* length on <var23:MType>*/;
+var24 = ((long(*)(val* self))(var21->class->vft[COLOR_nit__model__MType__length]))(var21); /* length on <var21:MType>*/
 }
 {
-{ /* Inline kernel#Int#+ (var_res,var26) on <var_res:Int> */
-/* Covariant cast for argument 0 (i) <var26:Int> isa OTHER */
-/* <var26:Int> isa OTHER */
-var29 = 1; /* easy <var26:Int> isa OTHER*/
-if (unlikely(!var29)) {
-var_class_name32 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 413);
-show_backtrace(1);
+{ /* Inline kernel#Int#+ (var_res,var24) on <var_res:Int> */
+/* Covariant cast for argument 0 (i) <var24:Int> isa OTHER */
+/* <var24:Int> isa OTHER */
+var27 = 1; /* easy <var24:Int> isa OTHER*/
+if (unlikely(!var27)) {
+var_class_name30 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+fatal_exit(1);
 }
-var33 = var_res + var26;
-var27 = var33;
-goto RET_LABEL28;
-RET_LABEL28:(void)0;
+var31 = var_res + var24;
+var25 = var31;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
 }
 }
-var_res = var27;
+var_res = var25;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_20); /* Direct call array#ArrayIterator#next on <var_20:ArrayIterator[MParameter]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_18); /* Direct call array#ArrayIterator#next on <var_18:ArrayIterator[MParameter]>*/
 }
 } else {
 goto BREAK_label;
@@ -1716,9 +2810,7 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_20) on <var_20:ArrayIterator[MParameter]> */
-RET_LABEL34:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_18); /* Direct call array#ArrayIterator#finish on <var_18:ArrayIterator[MParameter]>*/
 }
 var = var_res;
 goto RET_LABEL;
@@ -1728,197 +2820,322 @@ return var;
 /* method model#MSignature#init for (self: MSignature) */
 void nit___nit__MSignature___standard__kernel__Object__init(val* self) {
 long var /* : Int */;
-long var1 /* : Int */;
-long var3 /* : Int */;
+long var2 /* : Int */;
 long var_vararg_rank /* var vararg_rank: Int */;
-long var4 /* : Int */;
 long var_i /* var i: Int */;
+val* var3 /* : Array[MParameter] */;
 val* var5 /* : Array[MParameter] */;
-val* var7 /* : Array[MParameter] */;
+long var6 /* : Int */;
 long var8 /* : Int */;
-long var10 /* : Int */;
 long var_ /* var : Int */;
+short int var9 /* : Bool */;
 short int var11 /* : Bool */;
-short int var13 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var14 /* : Bool */;
+short int var12 /* : Bool */;
+val* var13 /* : Array[MParameter] */;
 val* var15 /* : Array[MParameter] */;
-val* var17 /* : Array[MParameter] */;
-val* var18 /* : nullable Object */;
+val* var16 /* : nullable Object */;
 val* var_parameter /* var parameter: MParameter */;
+short int var17 /* : Bool */;
 short int var19 /* : Bool */;
-short int var21 /* : Bool */;
+long var20 /* : Int */;
 long var22 /* : Int */;
-long var23 /* : Int */;
-long var25 /* : Int */;
-short int var26 /* : Bool */;
-short int var28 /* : Bool */;
-long var29 /* : Int */;
-long var30 /* : Int */;
+short int var23 /* : Bool */;
+short int var25 /* : Bool */;
+long var26 /* : Int */;
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MSignature___standard__kernel__Object__init]))(self) /* init on <self:MSignature>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MSignature___standard__kernel__Object__init]))(self); /* init on <self:MSignature>*/
 }
-var = 1;
 {
-{ /* Inline kernel#Int#unary - (var) on <var:Int> */
-var3 = -var;
-var1 = var3;
-goto RET_LABEL2;
-RET_LABEL2:(void)0;
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var2 = -1l;
+var = var2;
+goto RET_LABEL1;
+RET_LABEL1:(void)0;
 }
 }
-var_vararg_rank = var1;
-var4 = 0;
-var_i = var4;
+var_vararg_rank = var;
+var_i = 0l;
 {
 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
-var7 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
-if (unlikely(var7 == NULL)) {
+var5 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var5 == 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);
 }
-var5 = var7;
-RET_LABEL6:(void)0;
+var3 = var5;
+RET_LABEL4:(void)0;
 }
 }
 {
-{ /* Inline array#AbstractArrayRead#length (var5) on <var5:Array[MParameter]> */
-var10 = var5->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var5:Array[MParameter]> */
-var8 = var10;
-RET_LABEL9:(void)0;
+{ /* Inline array#AbstractArrayRead#length (var3) on <var3:Array[MParameter]> */
+var8 = var3->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var3:Array[MParameter]> */
+var6 = var8;
+RET_LABEL7:(void)0;
 }
 }
-var_ = var8;
+var_ = var6;
 for(;;) {
 {
 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
 /* <var_:Int> isa OTHER */
-var13 = 1; /* easy <var_:Int> isa OTHER*/
-if (unlikely(!var13)) {
+var11 = 1; /* easy <var_:Int> isa OTHER*/
+if (unlikely(!var11)) {
 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, 410);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
 }
-var14 = var_i < var_;
-var11 = var14;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+var12 = var_i < var_;
+var9 = var12;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+}
+if (var9){
+{
+{ /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
+var15 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var15 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
+}
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+{
+var16 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var13, var_i);
+}
+var_parameter = var16;
+{
+{ /* Inline model#MParameter#is_vararg (var_parameter) on <var_parameter:MParameter> */
+var19 = var_parameter->attrs[COLOR_nit__model__MParameter___is_vararg].s; /* _is_vararg on <var_parameter:MParameter> */
+var17 = var19;
+RET_LABEL18:(void)0;
+}
+}
+if (var17){
+{
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var22 = -1l;
+var20 = var22;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#== (var_vararg_rank,var20) on <var_vararg_rank:Int> */
+var25 = var_vararg_rank == var20;
+var23 = var25;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
+}
+}
+if (unlikely(!var23)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1801);
+fatal_exit(1);
+}
+var_vararg_rank = var_i;
+} else {
+}
+{
+var26 = standard___standard__Int___Discrete__successor(var_i, 1l);
+}
+var_i = var26;
+} else {
+goto BREAK_label;
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline model#MSignature#vararg_rank= (self,var_vararg_rank) on <self:MSignature> */
+self->attrs[COLOR_nit__model__MSignature___vararg_rank].l = var_vararg_rank; /* _vararg_rank on <self:MSignature> */
+RET_LABEL27:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method model#MSignature#vararg_rank for (self: MSignature): Int */
+long nit___nit__MSignature___vararg_rank(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = self->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <self:MSignature> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MSignature#vararg_rank= for (self: MSignature, Int) */
+void nit___nit__MSignature___vararg_rank_61d(val* self, long p0) {
+self->attrs[COLOR_nit__model__MSignature___vararg_rank].l = p0; /* _vararg_rank on <self:MSignature> */
+RET_LABEL:;
+}
+/* method model#MSignature#arity for (self: MSignature): Int */
+long nit___nit__MSignature___arity(val* self) {
+long var /* : Int */;
+val* var1 /* : Array[MParameter] */;
+val* var3 /* : Array[MParameter] */;
+long var4 /* : Int */;
+long var6 /* : Int */;
+{
+{ /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
+var3 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline array#AbstractArrayRead#length (var1) on <var1:Array[MParameter]> */
+var6 = var1->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var1:Array[MParameter]> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MSignature#min_arity for (self: MSignature): Int */
+long nit___nit__MSignature___min_arity(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+long var3 /* : Int */;
+long var4 /* : Int */;
+long var6 /* : Int */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+long var11 /* : Int */;
+long var_res /* var res: Int */;
+val* var12 /* : Array[MParameter] */;
+val* var14 /* : Array[MParameter] */;
+val* var_ /* var : Array[MParameter] */;
+val* var15 /* : ArrayIterator[nullable Object] */;
+val* var_16 /* var : ArrayIterator[MParameter] */;
+short int var17 /* : Bool */;
+val* var18 /* : nullable Object */;
+val* var_p /* var p: MParameter */;
+short int var19 /* : Bool */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+long var23 /* : Int */;
+short int var25 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+long var26 /* : Int */;
+{
+{ /* Inline model#MSignature#vararg_rank (self) on <self:MSignature> */
+var3 = self->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <self:MSignature> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#unary - (1l) on <1l:Int> */
+var6 = -1l;
+var4 = var6;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#!= (var1,var4) on <var1:Int> */
+var9 = var1 == var4;
+var10 = !var9;
+var7 = var10;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+}
+if (var7){
+{
+var11 = nit___nit__MSignature___arity(self);
 }
+var = var11;
+goto RET_LABEL;
+} else {
 }
-if (var11){
+var_res = 0l;
 {
 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
-var17 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
-if (unlikely(var17 == NULL)) {
+var14 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var14 == 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);
 }
-var15 = var17;
-RET_LABEL16:(void)0;
+var12 = var14;
+RET_LABEL13:(void)0;
 }
 }
+var_ = var12;
 {
-var18 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var15, var_i);
+var15 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_parameter = var18;
+var_16 = var15;
+for(;;) {
 {
-{ /* Inline model#MParameter#is_vararg (var_parameter) on <var_parameter:MParameter> */
-var21 = var_parameter->attrs[COLOR_nit__model__MParameter___is_vararg].s; /* _is_vararg on <var_parameter:MParameter> */
-var19 = var21;
-RET_LABEL20:(void)0;
+var17 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_16);
 }
+if (var17){
+{
+var18 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_16);
 }
-if (var19){
-var22 = 1;
+var_p = var18;
 {
-{ /* Inline kernel#Int#unary - (var22) on <var22:Int> */
-var25 = -var22;
-var23 = var25;
-goto RET_LABEL24;
-RET_LABEL24:(void)0;
+{ /* Inline model#MParameter#is_default (var_p) on <var_p:MParameter> */
+var21 = var_p->attrs[COLOR_nit__model__MParameter___is_default].s; /* _is_default on <var_p:MParameter> */
+var19 = var21;
+RET_LABEL20:(void)0;
 }
 }
+var22 = !var19;
+if (var22){
 {
-{ /* Inline kernel#Int#== (var_vararg_rank,var23) on <var_vararg_rank:Int> */
-var28 = var_vararg_rank == var23;
-var26 = var28;
-goto RET_LABEL27;
-RET_LABEL27:(void)0;
+{ /* Inline kernel#Int#+ (var_res,1l) on <var_res:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var25 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var25)) {
+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, 537);
+fatal_exit(1);
 }
+var26 = var_res + 1l;
+var23 = var26;
+goto RET_LABEL24;
+RET_LABEL24:(void)0;
 }
-if (unlikely(!var26)) {
-PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1628);
-show_backtrace(1);
 }
-var_vararg_rank = var_i;
+var_res = var23;
 } else {
 }
-var29 = 1;
 {
-var30 = standard___standard__Int___Discrete__successor(var_i, var29);
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_16); /* Direct call array#ArrayIterator#next on <var_16:ArrayIterator[MParameter]>*/
 }
-var_i = var30;
 } else {
 goto BREAK_label;
 }
 }
 BREAK_label: (void)0;
 {
-{ /* Inline model#MSignature#vararg_rank= (self,var_vararg_rank) on <self:MSignature> */
-self->attrs[COLOR_nit__model__MSignature___vararg_rank].l = var_vararg_rank; /* _vararg_rank on <self:MSignature> */
-RET_LABEL31:(void)0;
-}
-}
-RET_LABEL:;
-}
-/* method model#MSignature#vararg_rank for (self: MSignature): Int */
-long nit___nit__MSignature___vararg_rank(val* self) {
-long var /* : Int */;
-long var1 /* : Int */;
-var1 = self->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <self:MSignature> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method model#MSignature#vararg_rank= for (self: MSignature, Int) */
-void nit___nit__MSignature___vararg_rank_61d(val* self, long p0) {
-self->attrs[COLOR_nit__model__MSignature___vararg_rank].l = p0; /* _vararg_rank on <self:MSignature> */
-RET_LABEL:;
-}
-/* method model#MSignature#arity for (self: MSignature): Int */
-long nit___nit__MSignature___arity(val* self) {
-long var /* : Int */;
-val* var1 /* : Array[MParameter] */;
-val* var3 /* : Array[MParameter] */;
-long var4 /* : Int */;
-long var6 /* : Int */;
-{
-{ /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
-var3 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1592);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-{ /* Inline array#AbstractArrayRead#length (var1) on <var1:Array[MParameter]> */
-var6 = var1->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var1:Array[MParameter]> */
-var4 = var6;
-RET_LABEL5:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_16); /* Direct call array#ArrayIterator#finish on <var_16:ArrayIterator[MParameter]>*/
 }
-var = var4;
+var = var_res;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -1935,82 +3152,72 @@ short int var7 /* : Bool */;
 static val* varonce;
 val* var8 /* : String */;
 char* var9 /* : NativeString */;
-long var10 /* : Int */;
-val* var11 /* : FlatString */;
-long var12 /* : Int */;
+val* var10 /* : FlatString */;
 long var_i /* var i: Int */;
+val* var11 /* : Array[MParameter] */;
 val* var13 /* : Array[MParameter] */;
-val* var15 /* : Array[MParameter] */;
+long var14 /* : Int */;
 long var16 /* : Int */;
-long var18 /* : Int */;
 long var_ /* var : Int */;
+short int var17 /* : Bool */;
 short int var19 /* : Bool */;
-short int var21 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var22 /* : Bool */;
+short int var20 /* : Bool */;
+val* var21 /* : Array[MParameter] */;
 val* var23 /* : Array[MParameter] */;
-val* var25 /* : Array[MParameter] */;
-val* var26 /* : nullable Object */;
+val* var24 /* : nullable Object */;
 val* var_mparameter /* var mparameter: MParameter */;
-long var27 /* : Int */;
-short int var28 /* : Bool */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-const char* var_class_name33;
-short int var34 /* : Bool */;
-static val* varonce35;
+short int var25 /* : Bool */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+const char* var_class_name30;
+short int var31 /* : Bool */;
+static val* varonce32;
+val* var33 /* : String */;
+char* var34 /* : NativeString */;
+val* var35 /* : FlatString */;
 val* var36 /* : String */;
-char* var37 /* : NativeString */;
-long var38 /* : Int */;
-val* var39 /* : FlatString */;
+val* var38 /* : String */;
+static val* varonce39;
 val* var40 /* : String */;
-val* var42 /* : String */;
-static val* varonce43;
-val* var44 /* : String */;
-char* var45 /* : NativeString */;
-long var46 /* : Int */;
-val* var47 /* : FlatString */;
-val* var48 /* : MType */;
-val* var50 /* : MType */;
+char* var41 /* : NativeString */;
+val* var42 /* : FlatString */;
+val* var43 /* : MType */;
+val* var45 /* : MType */;
+val* var46 /* : String */;
+short int var47 /* : Bool */;
+short int var49 /* : Bool */;
+static val* varonce50;
 val* var51 /* : String */;
-short int var52 /* : Bool */;
-short int var54 /* : Bool */;
+char* var52 /* : NativeString */;
+val* var53 /* : FlatString */;
+long var54 /* : Int */;
 static val* varonce55;
 val* var56 /* : String */;
 char* var57 /* : NativeString */;
-long var58 /* : Int */;
-val* var59 /* : FlatString */;
-long var60 /* : Int */;
-long var61 /* : Int */;
-static val* varonce62;
-val* var63 /* : String */;
-char* var64 /* : NativeString */;
-long var65 /* : Int */;
-val* var66 /* : FlatString */;
-val* var67 /* : nullable MType */;
-val* var69 /* : nullable MType */;
+val* var58 /* : FlatString */;
+val* var59 /* : nullable MType */;
+val* var61 /* : nullable MType */;
 val* var_ret /* var ret: nullable MType */;
-val* var70 /* : null */;
-short int var71 /* : Bool */;
-short int var72 /* : Bool */;
+short int var62 /* : Bool */;
+short int var63 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var74 /* : Bool */;
-short int var75 /* : Bool */;
-static val* varonce76;
-val* var77 /* : String */;
-char* var78 /* : NativeString */;
-long var79 /* : Int */;
-val* var80 /* : FlatString */;
-val* var81 /* : String */;
-val* var82 /* : String */;
+short int var65 /* : Bool */;
+short int var66 /* : Bool */;
+static val* varonce67;
+val* var68 /* : String */;
+char* var69 /* : NativeString */;
+val* var70 /* : FlatString */;
+val* var71 /* : String */;
+val* var72 /* : String */;
 var1 = NEW_standard__FlatBuffer(&type_standard__FlatBuffer);
 {
 { /* Inline string#FlatBuffer#init (var1) on <var1:FlatBuffer> */
 {
-((void (*)(val* self))(var1->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var1) /* init on <var1:FlatBuffer>*/;
+((void(*)(val* self))(var1->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var1); /* init on <var1:FlatBuffer>*/
 }
 RET_LABEL2:(void)0;
 }
@@ -2021,8 +3228,8 @@ var_b = var1;
 var5 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
 if (unlikely(var5 == 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);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -2033,251 +3240,241 @@ var6 = standard___standard__AbstractArrayRead___standard__abstract_collection__C
 }
 var7 = !var6;
 if (var7){
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var8 = varonce;
 } else {
 var9 = "(";
-var10 = 1;
-var11 = standard___standard__NativeString___to_s_with_length(var9, var10);
-var8 = var11;
+var10 = standard___standard__NativeString___to_s_with_length(var9, 1l);
+var8 = var10;
 varonce = var8;
 }
 {
 standard___standard__FlatBuffer___Buffer__append(var_b, var8); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
-var12 = 0;
-var_i = var12;
+var_i = 0l;
 {
 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
-var15 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
-if (unlikely(var15 == NULL)) {
+var13 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var13 == 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);
 }
-var13 = var15;
-RET_LABEL14:(void)0;
+var11 = var13;
+RET_LABEL12:(void)0;
 }
 }
 {
-{ /* Inline array#AbstractArrayRead#length (var13) on <var13:Array[MParameter]> */
-var18 = var13->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var13:Array[MParameter]> */
-var16 = var18;
-RET_LABEL17:(void)0;
+{ /* Inline array#AbstractArrayRead#length (var11) on <var11:Array[MParameter]> */
+var16 = var11->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var11:Array[MParameter]> */
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
-var_ = var16;
+var_ = var14;
 for(;;) {
 {
 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
 /* <var_:Int> isa OTHER */
-var21 = 1; /* easy <var_:Int> isa OTHER*/
-if (unlikely(!var21)) {
+var19 = 1; /* easy <var_:Int> isa OTHER*/
+if (unlikely(!var19)) {
 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, 410);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+fatal_exit(1);
 }
-var22 = var_i < var_;
-var19 = var22;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
+var20 = var_i < var_;
+var17 = var20;
+goto RET_LABEL18;
+RET_LABEL18:(void)0;
 }
 }
-if (var19){
+if (var17){
 {
 { /* Inline model#MSignature#mparameters (self) on <self:MSignature> */
-var25 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
-if (unlikely(var25 == NULL)) {
+var23 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
+if (unlikely(var23 == 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);
 }
-var23 = var25;
-RET_LABEL24:(void)0;
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
 {
-var26 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var23, var_i);
+var24 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var21, var_i);
 }
-var_mparameter = var26;
-var27 = 0;
+var_mparameter = var24;
 {
-{ /* Inline kernel#Int#> (var_i,var27) on <var_i:Int> */
-/* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
-/* <var27:Int> isa OTHER */
-var30 = 1; /* easy <var27:Int> isa OTHER*/
-if (unlikely(!var30)) {
-var_class_name33 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 412);
-show_backtrace(1);
+{ /* Inline kernel#Int#> (var_i,0l) on <var_i:Int> */
+/* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
+/* <0l:Int> isa OTHER */
+var27 = 1; /* easy <0l:Int> isa OTHER*/
+if (unlikely(!var27)) {
+var_class_name30 = type_standard__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name30);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+fatal_exit(1);
 }
-var34 = var_i > var27;
-var28 = var34;
-goto RET_LABEL29;
-RET_LABEL29:(void)0;
+var31 = var_i > 0l;
+var25 = var31;
+goto RET_LABEL26;
+RET_LABEL26:(void)0;
 }
 }
-if (var28){
-if (varonce35) {
-var36 = varonce35;
+if (var25){
+if (likely(varonce32!=NULL)) {
+var33 = varonce32;
 } else {
-var37 = ", ";
-var38 = 2;
-var39 = standard___standard__NativeString___to_s_with_length(var37, var38);
-var36 = var39;
-varonce35 = var36;
+var34 = ", ";
+var35 = standard___standard__NativeString___to_s_with_length(var34, 2l);
+var33 = var35;
+varonce32 = var33;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var36); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var33); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
 } else {
 }
 {
 { /* Inline model#MParameter#name (var_mparameter) on <var_mparameter:MParameter> */
-var42 = var_mparameter->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <var_mparameter:MParameter> */
-if (unlikely(var42 == NULL)) {
+var38 = var_mparameter->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <var_mparameter:MParameter> */
+if (unlikely(var38 == 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);
 }
-var40 = var42;
-RET_LABEL41:(void)0;
+var36 = var38;
+RET_LABEL37:(void)0;
 }
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var40); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var36); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
-if (varonce43) {
-var44 = varonce43;
+if (likely(varonce39!=NULL)) {
+var40 = varonce39;
 } else {
-var45 = ": ";
-var46 = 2;
-var47 = standard___standard__NativeString___to_s_with_length(var45, var46);
-var44 = var47;
-varonce43 = var44;
+var41 = ": ";
+var42 = standard___standard__NativeString___to_s_with_length(var41, 2l);
+var40 = var42;
+varonce39 = var40;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var44); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var40); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
 {
 { /* Inline model#MParameter#mtype (var_mparameter) on <var_mparameter:MParameter> */
-var50 = var_mparameter->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_mparameter:MParameter> */
-if (unlikely(var50 == NULL)) {
+var45 = var_mparameter->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var_mparameter:MParameter> */
+if (unlikely(var45 == 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);
 }
-var48 = var50;
-RET_LABEL49:(void)0;
+var43 = var45;
+RET_LABEL44:(void)0;
 }
 }
 {
-var51 = ((val* (*)(val* self))(var48->class->vft[COLOR_standard__string__Object__to_s]))(var48) /* to_s on <var48:MType>*/;
+var46 = ((val*(*)(val* self))(var43->class->vft[COLOR_standard__string__Object__to_s]))(var43); /* to_s on <var43:MType>*/
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var51); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var46); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
 {
 { /* Inline model#MParameter#is_vararg (var_mparameter) on <var_mparameter:MParameter> */
-var54 = var_mparameter->attrs[COLOR_nit__model__MParameter___is_vararg].s; /* _is_vararg on <var_mparameter:MParameter> */
-var52 = var54;
-RET_LABEL53:(void)0;
+var49 = var_mparameter->attrs[COLOR_nit__model__MParameter___is_vararg].s; /* _is_vararg on <var_mparameter:MParameter> */
+var47 = var49;
+RET_LABEL48:(void)0;
 }
 }
-if (var52){
-if (varonce55) {
-var56 = varonce55;
+if (var47){
+if (likely(varonce50!=NULL)) {
+var51 = varonce50;
 } else {
-var57 = "...";
-var58 = 3;
-var59 = standard___standard__NativeString___to_s_with_length(var57, var58);
-var56 = var59;
-varonce55 = var56;
+var52 = "...";
+var53 = standard___standard__NativeString___to_s_with_length(var52, 3l);
+var51 = var53;
+varonce50 = var51;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var56); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var51); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
 } else {
 }
-var60 = 1;
 {
-var61 = standard___standard__Int___Discrete__successor(var_i, var60);
+var54 = standard___standard__Int___Discrete__successor(var_i, 1l);
 }
-var_i = var61;
+var_i = var54;
 } else {
 goto BREAK_label;
 }
 }
 BREAK_label: (void)0;
-if (varonce62) {
-var63 = varonce62;
+if (likely(varonce55!=NULL)) {
+var56 = varonce55;
 } else {
-var64 = ")";
-var65 = 1;
-var66 = standard___standard__NativeString___to_s_with_length(var64, var65);
-var63 = var66;
-varonce62 = var63;
+var57 = ")";
+var58 = standard___standard__NativeString___to_s_with_length(var57, 1l);
+var56 = var58;
+varonce55 = var56;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var63); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var56); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
 } else {
 }
 {
 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
-var69 = self->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
-var67 = var69;
-RET_LABEL68:(void)0;
+var61 = self->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
+var59 = var61;
+RET_LABEL60:(void)0;
 }
 }
-var_ret = var67;
-var70 = NULL;
+var_ret = var59;
 if (var_ret == NULL) {
-var71 = 0; /* is null */
+var62 = 0; /* is null */
 } else {
-var71 = 1; /* arg is null and recv is not */
+var62 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_ret,var70) on <var_ret:nullable MType> */
-var_other = var70;
+{ /* Inline kernel#Object#!= (var_ret,((val*)NULL)) on <var_ret:nullable MType> */
+var_other = ((val*)NULL);
 {
-var74 = ((short int (*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
+var65 = ((short int(*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other); /* == on <var_ret:nullable MType(MType)>*/
 }
-var75 = !var74;
-var72 = var75;
-goto RET_LABEL73;
-RET_LABEL73:(void)0;
+var66 = !var65;
+var63 = var66;
+goto RET_LABEL64;
+RET_LABEL64:(void)0;
 }
-var71 = var72;
+var62 = var63;
 }
-if (var71){
-if (varonce76) {
-var77 = varonce76;
+if (var62){
+if (likely(varonce67!=NULL)) {
+var68 = varonce67;
 } else {
-var78 = ": ";
-var79 = 2;
-var80 = standard___standard__NativeString___to_s_with_length(var78, var79);
-var77 = var80;
-varonce76 = var77;
+var69 = ": ";
+var70 = standard___standard__NativeString___to_s_with_length(var69, 2l);
+var68 = var70;
+varonce67 = var68;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var77); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var68); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
 {
-var81 = ((val* (*)(val* self))(var_ret->class->vft[COLOR_standard__string__Object__to_s]))(var_ret) /* to_s on <var_ret:nullable MType(MType)>*/;
+var71 = ((val*(*)(val* self))(var_ret->class->vft[COLOR_standard__string__Object__to_s]))(var_ret); /* to_s on <var_ret:nullable MType(MType)>*/
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_b, var81); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_b, var71); /* Direct call string#FlatBuffer#append on <var_b:FlatBuffer>*/
 }
 } else {
 }
 {
-var82 = standard___standard__FlatBuffer___Object__to_s(var_b);
+var72 = standard___standard__FlatBuffer___Object__to_s(var_b);
 }
-var = var82;
+var = var72;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -2300,17 +3497,16 @@ short int var7 /* : Bool */;
 val* var8 /* : nullable Object */;
 val* var_p /* var p: MParameter */;
 val* var9 /* : MParameter */;
-val* var11 /* : nullable MType */;
-val* var13 /* : nullable MType */;
+val* var10 /* : nullable MType */;
+val* var12 /* : nullable MType */;
 val* var_ret /* var ret: nullable MType */;
-val* var14 /* : null */;
-short int var15 /* : Bool */;
-short int var16 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var18 /* : Bool */;
-short int var19 /* : Bool */;
-val* var20 /* : MType */;
-val* var21 /* : MSignature */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+val* var18 /* : MType */;
+val* var19 /* : MSignature */;
 val* var_res /* var res: MSignature */;
 var_mtype = p0;
 var_anchor = p1;
@@ -2326,8 +3522,8 @@ var_params = var1;
 var4 = self->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <self:MSignature> */
 if (unlikely(var4 == 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);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -2362,55 +3558,52 @@ goto BREAK_label;
 }
 BREAK_label: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_6) on <var_6:ArrayIterator[MParameter]> */
-RET_LABEL10:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_6); /* Direct call array#ArrayIterator#finish on <var_6:ArrayIterator[MParameter]>*/
 }
 {
 { /* Inline model#MSignature#return_mtype (self) on <self:MSignature> */
-var13 = self->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
-var11 = var13;
-RET_LABEL12:(void)0;
+var12 = self->attrs[COLOR_nit__model__MSignature___return_mtype].val; /* _return_mtype on <self:MSignature> */
+var10 = var12;
+RET_LABEL11:(void)0;
 }
 }
-var_ret = var11;
-var14 = NULL;
+var_ret = var10;
 if (var_ret == NULL) {
-var15 = 0; /* is null */
+var13 = 0; /* is null */
 } else {
-var15 = 1; /* arg is null and recv is not */
+var13 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_ret,var14) on <var_ret:nullable MType> */
-var_other = var14;
+{ /* Inline kernel#Object#!= (var_ret,((val*)NULL)) on <var_ret:nullable MType> */
+var_other = ((val*)NULL);
 {
-var18 = ((short int (*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other) /* == on <var_ret:nullable MType(MType)>*/;
+var16 = ((short int(*)(val* self, val* p0))(var_ret->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_ret, var_other); /* == on <var_ret:nullable MType(MType)>*/
 }
-var19 = !var18;
-var16 = var19;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
+var17 = !var16;
+var14 = var17;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
-var15 = var16;
+var13 = var14;
 }
-if (var15){
+if (var13){
 {
-var20 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_ret->class->vft[COLOR_nit__model__MType__resolve_for]))(var_ret, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_ret:nullable MType(MType)>*/;
+var18 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_ret->class->vft[COLOR_nit__model__MType__resolve_for]))(var_ret, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual); /* resolve_for on <var_ret:nullable MType(MType)>*/
 }
-var_ret = var20;
+var_ret = var18;
 } else {
 }
-var21 = NEW_nit__MSignature(&type_nit__MSignature);
+var19 = NEW_nit__MSignature(&type_nit__MSignature);
 {
-((void (*)(val* self, val* p0))(var21->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var21, var_params) /* mparameters= on <var21:MSignature>*/;
+((void(*)(val* self, val* p0))(var19->class->vft[COLOR_nit__model__MSignature__mparameters_61d]))(var19, var_params); /* mparameters= on <var19:MSignature>*/
 }
 {
-((void (*)(val* self, val* p0))(var21->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var21, var_ret) /* return_mtype= on <var21:MSignature>*/;
+((void(*)(val* self, val* p0))(var19->class->vft[COLOR_nit__model__MSignature__return_mtype_61d]))(var19, var_ret); /* return_mtype= on <var19:MSignature>*/
 }
 {
-((void (*)(val* self))(var21->class->vft[COLOR_standard__kernel__Object__init]))(var21) /* init on <var21:MSignature>*/;
+((void(*)(val* self))(var19->class->vft[COLOR_standard__kernel__Object__init]))(var19); /* init on <var19:MSignature>*/
 }
-var_res = var21;
+var_res = var19;
 var = var_res;
 goto RET_LABEL;
 RET_LABEL:;
@@ -2423,8 +3616,8 @@ val* var1 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <self:MParameter> */
 if (unlikely(var1 == 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);
 }
 var = var1;
 RET_LABEL:;
@@ -2442,8 +3635,8 @@ val* var1 /* : MType */;
 var1 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
 if (unlikely(var1 == 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);
 }
 var = var1;
 RET_LABEL:;
@@ -2468,42 +3661,53 @@ void nit___nit__MParameter___is_vararg_61d(val* self, short int p0) {
 self->attrs[COLOR_nit__model__MParameter___is_vararg].s = p0; /* _is_vararg on <self:MParameter> */
 RET_LABEL:;
 }
+/* method model#MParameter#is_default for (self: MParameter): Bool */
+short int nit___nit__MParameter___is_default(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_nit__model__MParameter___is_default].s; /* _is_default on <self:MParameter> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameter#is_default= for (self: MParameter, Bool) */
+void nit___nit__MParameter___is_default_61d(val* self, short int p0) {
+self->attrs[COLOR_nit__model__MParameter___is_default].s = p0; /* _is_default on <self:MParameter> */
+RET_LABEL:;
+}
 /* method model#MParameter#to_s for (self: MParameter): String */
 val* nit___nit__MParameter___standard__string__Object__to_s(val* self) {
 val* var /* : String */;
 short int var1 /* : Bool */;
 short int var3 /* : Bool */;
-val* var4 /* : String */;
-val* var6 /* : String */;
+val* var4 /* : NativeArray[String] */;
 static val* varonce;
-val* var7 /* : String */;
-char* var8 /* : NativeString */;
-long var9 /* : Int */;
-val* var10 /* : FlatString */;
-val* var11 /* : MType */;
-val* var13 /* : MType */;
-static val* varonce14;
+static val* varonce5;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+val* var8 /* : FlatString */;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+val* var12 /* : FlatString */;
+val* var13 /* : String */;
 val* var15 /* : String */;
-char* var16 /* : NativeString */;
-long var17 /* : Int */;
-val* var18 /* : FlatString */;
-val* var19 /* : Array[Object] */;
-long var20 /* : Int */;
-val* var21 /* : NativeArray[Object] */;
-val* var22 /* : String */;
-val* var23 /* : String */;
-val* var25 /* : String */;
-static val* varonce26;
+val* var16 /* : MType */;
+val* var18 /* : MType */;
+val* var19 /* : String */;
+val* var20 /* : String */;
+val* var22 /* : NativeArray[String] */;
+static val* varonce21;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+val* var26 /* : FlatString */;
 val* var27 /* : String */;
-char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : FlatString */;
-val* var31 /* : MType */;
-val* var33 /* : MType */;
-val* var34 /* : Array[Object] */;
-long var35 /* : Int */;
-val* var36 /* : NativeArray[Object] */;
-val* var37 /* : String */;
+val* var29 /* : String */;
+val* var30 /* : MType */;
+val* var32 /* : MType */;
+val* var33 /* : String */;
+val* var34 /* : String */;
 {
 { /* Inline model#MParameter#is_vararg (self) on <self:MParameter> */
 var3 = self->attrs[COLOR_nit__model__MParameter___is_vararg].s; /* _is_vararg on <self:MParameter> */
@@ -2512,114 +3716,115 @@ RET_LABEL2:(void)0;
 }
 }
 if (var1){
+if (unlikely(varonce==NULL)) {
+var4 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
+if (likely(varonce5!=NULL)) {
+var6 = varonce5;
+} else {
+var7 = ": ";
+var8 = standard___standard__NativeString___to_s_with_length(var7, 2l);
+var6 = var8;
+varonce5 = var6;
+}
+((struct instance_standard__NativeArray*)var4)->values[1]=var6;
+if (likely(varonce9!=NULL)) {
+var10 = varonce9;
+} else {
+var11 = "...";
+var12 = standard___standard__NativeString___to_s_with_length(var11, 3l);
+var10 = var12;
+varonce9 = var10;
+}
+((struct instance_standard__NativeArray*)var4)->values[3]=var10;
+} else {
+var4 = varonce;
+varonce = NULL;
+}
 {
 { /* Inline model#MParameter#name (self) on <self:MParameter> */
-var6 = self->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <self:MParameter> */
-if (unlikely(var6 == NULL)) {
+var15 = self->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <self:MParameter> */
+if (unlikely(var15 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1687);
-show_backtrace(1);
-}
-var4 = var6;
-RET_LABEL5:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1876);
+fatal_exit(1);
 }
+var13 = var15;
+RET_LABEL14:(void)0;
 }
-if (varonce) {
-var7 = varonce;
-} else {
-var8 = ": ";
-var9 = 2;
-var10 = standard___standard__NativeString___to_s_with_length(var8, var9);
-var7 = var10;
-varonce = var7;
 }
+((struct instance_standard__NativeArray*)var4)->values[0]=var13;
 {
 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
-var13 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
-if (unlikely(var13 == NULL)) {
+var18 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1690);
-show_backtrace(1);
-}
-var11 = var13;
-RET_LABEL12:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
+fatal_exit(1);
 }
+var16 = var18;
+RET_LABEL17:(void)0;
 }
-if (varonce14) {
-var15 = varonce14;
-} else {
-var16 = "...";
-var17 = 3;
-var18 = standard___standard__NativeString___to_s_with_length(var16, var17);
-var15 = var18;
-varonce14 = var15;
 }
-var19 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var19 = array_instance Array[Object] */
-var20 = 4;
-var21 = NEW_standard__NativeArray(var20, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var21)->values[0] = (val*) var4;
-((struct instance_standard__NativeArray*)var21)->values[1] = (val*) var7;
-((struct instance_standard__NativeArray*)var21)->values[2] = (val*) var11;
-((struct instance_standard__NativeArray*)var21)->values[3] = (val*) var15;
 {
-((void (*)(val* self, val* p0, long p1))(var19->class->vft[COLOR_standard__array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
-}
+var19 = ((val*(*)(val* self))(var16->class->vft[COLOR_standard__string__Object__to_s]))(var16); /* to_s on <var16:MType>*/
 }
+((struct instance_standard__NativeArray*)var4)->values[2]=var19;
 {
-var22 = ((val* (*)(val* self))(var19->class->vft[COLOR_standard__string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
+var20 = ((val*(*)(val* self))(var4->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var4); /* native_to_s on <var4:NativeArray[String]>*/
 }
-var = var22;
+varonce = var4;
+var = var20;
 goto RET_LABEL;
 } else {
+if (unlikely(varonce21==NULL)) {
+var22 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
+} else {
+var25 = ": ";
+var26 = standard___standard__NativeString___to_s_with_length(var25, 2l);
+var24 = var26;
+varonce23 = var24;
+}
+((struct instance_standard__NativeArray*)var22)->values[1]=var24;
+} else {
+var22 = varonce21;
+varonce21 = NULL;
+}
 {
 { /* Inline model#MParameter#name (self) on <self:MParameter> */
-var25 = self->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <self:MParameter> */
-if (unlikely(var25 == NULL)) {
+var29 = self->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <self:MParameter> */
+if (unlikely(var29 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1687);
-show_backtrace(1);
-}
-var23 = var25;
-RET_LABEL24:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1876);
+fatal_exit(1);
 }
+var27 = var29;
+RET_LABEL28:(void)0;
 }
-if (varonce26) {
-var27 = varonce26;
-} else {
-var28 = ": ";
-var29 = 2;
-var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
-var27 = var30;
-varonce26 = var27;
 }
+((struct instance_standard__NativeArray*)var22)->values[0]=var27;
 {
 { /* Inline model#MParameter#mtype (self) on <self:MParameter> */
-var33 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
-if (unlikely(var33 == NULL)) {
+var32 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
+if (unlikely(var32 == 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);
 }
-var31 = var33;
-RET_LABEL32:(void)0;
+var30 = var32;
+RET_LABEL31:(void)0;
 }
 }
-var34 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var34 = array_instance Array[Object] */
-var35 = 3;
-var36 = NEW_standard__NativeArray(var35, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var36)->values[0] = (val*) var23;
-((struct instance_standard__NativeArray*)var36)->values[1] = (val*) var27;
-((struct instance_standard__NativeArray*)var36)->values[2] = (val*) var31;
 {
-((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]>*/;
-}
+var33 = ((val*(*)(val* self))(var30->class->vft[COLOR_standard__string__Object__to_s]))(var30); /* to_s on <var30:MType>*/
 }
+((struct instance_standard__NativeArray*)var22)->values[2]=var33;
 {
-var37 = ((val* (*)(val* self))(var34->class->vft[COLOR_standard__string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
+var34 = ((val*(*)(val* self))(var22->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var22); /* native_to_s on <var22:NativeArray[String]>*/
 }
-var = var37;
+varonce21 = var22;
+var = var34;
 goto RET_LABEL;
 }
 RET_LABEL:;
@@ -2645,6 +3850,8 @@ val* var11 /* : String */;
 val* var13 /* : String */;
 short int var14 /* : Bool */;
 short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+short int var19 /* : Bool */;
 val* var_res /* var res: MParameter */;
 var_mtype = p0;
 var_anchor = p1;
@@ -2655,15 +3862,15 @@ var_cleanup_virtual = p3;
 var3 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
 if (unlikely(var3 == 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);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
 }
 }
 {
-var4 = ((short int (*)(val* self))(var1->class->vft[COLOR_nit__model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
+var4 = ((short int(*)(val* self))(var1->class->vft[COLOR_nit__model__MType__need_anchor]))(var1); /* need_anchor on <var1:MType>*/
 }
 var5 = !var4;
 if (var5){
@@ -2676,15 +3883,15 @@ goto RET_LABEL;
 var8 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
 if (unlikely(var8 == 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);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
 }
 }
 {
-var9 = ((val* (*)(val* self, val* p0, val* p1, val* p2, short int p3))(var6->class->vft[COLOR_nit__model__MType__resolve_for]))(var6, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var6:MType>*/;
+var9 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var6->class->vft[COLOR_nit__model__MType__resolve_for]))(var6, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual); /* resolve_for on <var6:MType>*/
 }
 var_newtype = var9;
 var10 = NEW_nit__MParameter(&type_nit__MParameter);
@@ -2693,8 +3900,8 @@ var10 = NEW_nit__MParameter(&type_nit__MParameter);
 var13 = self->attrs[COLOR_nit__model__MParameter___name].val; /* _name on <self:MParameter> */
 if (unlikely(var13 == 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);
 }
 var11 = var13;
 RET_LABEL12:(void)0;
@@ -2708,16 +3915,26 @@ RET_LABEL15:(void)0;
 }
 }
 {
-((void (*)(val* self, val* p0))(var10->class->vft[COLOR_nit__model__MParameter__name_61d]))(var10, var11) /* name= on <var10:MParameter>*/;
+{ /* Inline model#MParameter#is_default (self) on <self:MParameter> */
+var19 = self->attrs[COLOR_nit__model__MParameter___is_default].s; /* _is_default on <self:MParameter> */
+var17 = var19;
+RET_LABEL18:(void)0;
+}
+}
+{
+((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nit__model__MParameter__name_61d]))(var10, var11); /* name= on <var10:MParameter>*/
+}
+{
+((void(*)(val* self, val* p0))(var10->class->vft[COLOR_nit__model__MParameter__mtype_61d]))(var10, var_newtype); /* mtype= on <var10:MParameter>*/
 }
 {
-((void (*)(val* self, val* p0))(var10->class->vft[COLOR_nit__model__MParameter__mtype_61d]))(var10, var_newtype) /* mtype= on <var10:MParameter>*/;
+((void(*)(val* self, short int p0))(var10->class->vft[COLOR_nit__model__MParameter__is_vararg_61d]))(var10, var14); /* is_vararg= on <var10:MParameter>*/
 }
 {
-((void (*)(val* self, short int p0))(var10->class->vft[COLOR_nit__model__MParameter__is_vararg_61d]))(var10, var14) /* is_vararg= on <var10:MParameter>*/;
+((void(*)(val* self, short int p0))(var10->class->vft[COLOR_nit__model__MParameter__is_default_61d]))(var10, var17); /* is_default= on <var10:MParameter>*/
 }
 {
-((void (*)(val* self))(var10->class->vft[COLOR_standard__kernel__Object__init]))(var10) /* init on <var10:MParameter>*/;
+((void(*)(val* self))(var10->class->vft[COLOR_standard__kernel__Object__init]))(var10); /* init on <var10:MParameter>*/
 }
 var_res = var10;
 var = var_res;
@@ -2736,15 +3953,15 @@ val* var4 /* : Model */;
 var3 = self->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <self:MParameter> */
 if (unlikely(var3 == 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);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
 }
 }
 {
-var4 = ((val* (*)(val* self))(var1->class->vft[COLOR_nit__model_base__MEntity__model]))(var1) /* model on <var1:MType>*/;
+var4 = ((val*(*)(val* self))(var1->class->vft[COLOR_nit__model_base__MEntity__model]))(var1); /* model on <var1:MType>*/
 }
 var = var4;
 goto RET_LABEL;
@@ -2754,7 +3971,7 @@ return var;
 /* method model#MParameter#init for (self: MParameter) */
 void nit___nit__MParameter___standard__kernel__Object__init(val* self) {
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MParameter___standard__kernel__Object__init]))(self) /* init on <self:MParameter>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MParameter___standard__kernel__Object__init]))(self); /* init on <self:MParameter>*/
 }
 RET_LABEL:;
 }
@@ -2765,8 +3982,8 @@ val* var1 /* : MClassDef */;
 var1 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -2784,8 +4001,8 @@ val* var1 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MProperty> */
 if (unlikely(var1 == 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);
 }
 var = var1;
 RET_LABEL:;
@@ -2802,167 +4019,161 @@ val* var /* : String */;
 short int var1 /* : Bool */;
 val* var2 /* : String */;
 val* var3 /* : String */;
-val* var5 /* : MClassDef */;
-val* var7 /* : MClassDef */;
-val* var8 /* : MModule */;
-val* var10 /* : MModule */;
-val* var11 /* : MVisibility */;
-val* var13 /* : MVisibility */;
-val* var14 /* : String */;
+val* var5 /* : NativeArray[String] */;
 static val* varonce;
-val* var15 /* : String */;
-char* var16 /* : NativeString */;
-long var17 /* : Int */;
-val* var18 /* : FlatString */;
-val* var19 /* : MClassDef */;
-val* var21 /* : MClassDef */;
-val* var22 /* : MClass */;
-val* var24 /* : MClass */;
-val* var25 /* : String */;
-val* var27 /* : String */;
-static val* varonce28;
-val* var29 /* : String */;
-char* var30 /* : NativeString */;
-long var31 /* : Int */;
-val* var32 /* : FlatString */;
+static val* varonce6;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+static val* varonce10;
+val* var11 /* : String */;
+char* var12 /* : NativeString */;
+val* var13 /* : FlatString */;
+val* var14 /* : MClassDef */;
+val* var16 /* : MClassDef */;
+val* var17 /* : MModule */;
+val* var19 /* : MModule */;
+val* var20 /* : MVisibility */;
+val* var22 /* : MVisibility */;
+val* var23 /* : String */;
+val* var24 /* : MClassDef */;
+val* var26 /* : MClassDef */;
+val* var27 /* : MClass */;
+val* var29 /* : MClass */;
+val* var30 /* : String */;
+val* var32 /* : String */;
 val* var33 /* : String */;
 val* var35 /* : String */;
-val* var36 /* : Array[Object] */;
-long var37 /* : Int */;
-val* var38 /* : NativeArray[Object] */;
-val* var39 /* : String */;
+val* var36 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MProperty___full_name].val != NULL; /* _full_name on <self:MProperty> */
 if(likely(var1)) {
 var2 = self->attrs[COLOR_nit__model__MProperty___full_name].val; /* _full_name on <self:MProperty> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _full_name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1744);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1936);
+fatal_exit(1);
 }
 } else {
 {
+if (unlikely(varonce==NULL)) {
+var5 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce6!=NULL)) {
+var7 = varonce6;
+} else {
+var8 = "::";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 2l);
+var7 = var9;
+varonce6 = var7;
+}
+((struct instance_standard__NativeArray*)var5)->values[1]=var7;
+if (likely(varonce10!=NULL)) {
+var11 = varonce10;
+} else {
+var12 = "::";
+var13 = standard___standard__NativeString___to_s_with_length(var12, 2l);
+var11 = var13;
+varonce10 = var11;
+}
+((struct instance_standard__NativeArray*)var5)->values[3]=var11;
+} else {
+var5 = varonce;
+varonce = NULL;
+}
 {
 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
-var7 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
-if (unlikely(var7 == NULL)) {
+var16 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
+if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var5 = var7;
-RET_LABEL6:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var5) on <var5:MClassDef> */
-var10 = var5->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var5:MClassDef> */
-if (unlikely(var10 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var14) on <var14:MClassDef> */
+var19 = var14->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var14:MClassDef> */
+if (unlikely(var19 == 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);
 }
-var8 = var10;
-RET_LABEL9:(void)0;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
 { /* Inline model#MProperty#visibility (self) on <self:MProperty> */
-var13 = self->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <self:MProperty> */
-if (unlikely(var13 == NULL)) {
+var22 = self->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <self:MProperty> */
+if (unlikely(var22 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
-var11 = var13;
-RET_LABEL12:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-var14 = nit___nit__MModule___namespace_for(var8, var11);
-}
-if (varonce) {
-var15 = varonce;
-} else {
-var16 = "::";
-var17 = 2;
-var18 = standard___standard__NativeString___to_s_with_length(var16, var17);
-var15 = var18;
-varonce = var15;
+var23 = nit___nit__MModule___namespace_for(var17, var20);
 }
+((struct instance_standard__NativeArray*)var5)->values[0]=var23;
 {
 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
-var21 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
-if (unlikely(var21 == NULL)) {
+var26 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
+if (unlikely(var26 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var19 = var21;
-RET_LABEL20:(void)0;
+var24 = var26;
+RET_LABEL25:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var19) on <var19:MClassDef> */
-var24 = var19->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var19:MClassDef> */
-if (unlikely(var24 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var24) on <var24:MClassDef> */
+var29 = var24->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var24:MClassDef> */
+if (unlikely(var29 == 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);
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#name (var22) on <var22:MClass> */
-var27 = var22->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var22:MClass> */
-if (unlikely(var27 == NULL)) {
+{ /* Inline model#MClass#name (var27) on <var27:MClass> */
+var32 = var27->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var27:MClass> */
+if (unlikely(var32 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 348);
-show_backtrace(1);
-}
-var25 = var27;
-RET_LABEL26:(void)0;
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
+fatal_exit(1);
 }
+var30 = var32;
+RET_LABEL31:(void)0;
 }
-if (varonce28) {
-var29 = varonce28;
-} else {
-var30 = "::";
-var31 = 2;
-var32 = standard___standard__NativeString___to_s_with_length(var30, var31);
-var29 = var32;
-varonce28 = var29;
 }
+((struct instance_standard__NativeArray*)var5)->values[2]=var30;
 {
 { /* Inline model#MProperty#name (self) on <self:MProperty> */
 var35 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MProperty> */
 if (unlikely(var35 == 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);
 }
 var33 = var35;
 RET_LABEL34:(void)0;
 }
 }
-var36 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var36 = array_instance Array[Object] */
-var37 = 5;
-var38 = NEW_standard__NativeArray(var37, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var38)->values[0] = (val*) var14;
-((struct instance_standard__NativeArray*)var38)->values[1] = (val*) var15;
-((struct instance_standard__NativeArray*)var38)->values[2] = (val*) var25;
-((struct instance_standard__NativeArray*)var38)->values[3] = (val*) var29;
-((struct instance_standard__NativeArray*)var38)->values[4] = (val*) var33;
+((struct instance_standard__NativeArray*)var5)->values[4]=var33;
 {
-((void (*)(val* self, val* p0, long p1))(var36->class->vft[COLOR_standard__array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
+var36 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
 }
-}
-{
-var39 = ((val* (*)(val* self))(var36->class->vft[COLOR_standard__string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
-}
-var3 = var39;
+varonce = var5;
+var3 = var36;
 goto RET_LABEL4;
 RET_LABEL4:(void)0;
 }
@@ -2979,136 +4190,141 @@ val* var /* : String */;
 short int var1 /* : Bool */;
 val* var2 /* : String */;
 val* var3 /* : String */;
-val* var5 /* : MClassDef */;
-val* var7 /* : MClassDef */;
-val* var8 /* : MModule */;
-val* var10 /* : MModule */;
-val* var11 /* : String */;
+val* var5 /* : NativeArray[String] */;
 static val* varonce;
-val* var12 /* : String */;
-char* var13 /* : NativeString */;
-long var14 /* : Int */;
-val* var15 /* : FlatString */;
+static val* varonce6;
+val* var7 /* : String */;
+char* var8 /* : NativeString */;
+val* var9 /* : FlatString */;
+static val* varonce10;
+val* var11 /* : String */;
+char* var12 /* : NativeString */;
+val* var13 /* : FlatString */;
+val* var14 /* : MClassDef */;
 val* var16 /* : MClassDef */;
-val* var18 /* : MClassDef */;
-val* var19 /* : MClass */;
-val* var21 /* : MClass */;
-val* var22 /* : String */;
-val* var24 /* : String */;
-val* var25 /* : String */;
-static val* varonce26;
+val* var17 /* : MModule */;
+val* var19 /* : MModule */;
+val* var20 /* : String */;
+val* var21 /* : MClassDef */;
+val* var23 /* : MClassDef */;
+val* var24 /* : MClass */;
+val* var26 /* : MClass */;
 val* var27 /* : String */;
-char* var28 /* : NativeString */;
-long var29 /* : Int */;
-val* var30 /* : FlatString */;
+val* var29 /* : String */;
+val* var30 /* : String */;
 val* var31 /* : String */;
 val* var33 /* : String */;
 val* var34 /* : String */;
-val* var35 /* : Array[Object] */;
-long var36 /* : Int */;
-val* var37 /* : NativeArray[Object] */;
-val* var38 /* : String */;
+val* var35 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MProperty___c_name].val != NULL; /* _c_name on <self:MProperty> */
 if(likely(var1)) {
 var2 = self->attrs[COLOR_nit__model__MProperty___c_name].val; /* _c_name on <self:MProperty> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _c_name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1752);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1944);
+fatal_exit(1);
 }
 } else {
 {
+if (unlikely(varonce==NULL)) {
+var5 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce6!=NULL)) {
+var7 = varonce6;
+} else {
+var8 = "__";
+var9 = standard___standard__NativeString___to_s_with_length(var8, 2l);
+var7 = var9;
+varonce6 = var7;
+}
+((struct instance_standard__NativeArray*)var5)->values[1]=var7;
+if (likely(varonce10!=NULL)) {
+var11 = varonce10;
+} else {
+var12 = "__";
+var13 = standard___standard__NativeString___to_s_with_length(var12, 2l);
+var11 = var13;
+varonce10 = var11;
+}
+((struct instance_standard__NativeArray*)var5)->values[3]=var11;
+} else {
+var5 = varonce;
+varonce = NULL;
+}
 {
 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
-var7 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
-if (unlikely(var7 == NULL)) {
+var16 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
+if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var5 = var7;
-RET_LABEL6:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var5) on <var5:MClassDef> */
-var10 = var5->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var5:MClassDef> */
-if (unlikely(var10 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var14) on <var14:MClassDef> */
+var19 = var14->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var14:MClassDef> */
+if (unlikely(var19 == 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);
 }
-var8 = var10;
-RET_LABEL9:(void)0;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
-var11 = nit___nit__MModule___nit__model_base__MEntity__c_name(var8);
-}
-if (varonce) {
-var12 = varonce;
-} else {
-var13 = "__";
-var14 = 2;
-var15 = standard___standard__NativeString___to_s_with_length(var13, var14);
-var12 = var15;
-varonce = var12;
+var20 = nit___nit__MModule___nit__model_base__MEntity__c_name(var17);
 }
+((struct instance_standard__NativeArray*)var5)->values[0]=var20;
 {
 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
-var18 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
-if (unlikely(var18 == NULL)) {
+var23 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
+if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var16 = var18;
-RET_LABEL17:(void)0;
+var21 = var23;
+RET_LABEL22:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var16) on <var16:MClassDef> */
-var21 = var16->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var16:MClassDef> */
-if (unlikely(var21 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var21) on <var21:MClassDef> */
+var26 = var21->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var21:MClassDef> */
+if (unlikely(var26 == 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);
 }
-var19 = var21;
-RET_LABEL20:(void)0;
+var24 = var26;
+RET_LABEL25:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#name (var19) on <var19:MClass> */
-var24 = var19->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var19:MClass> */
-if (unlikely(var24 == NULL)) {
+{ /* Inline model#MClass#name (var24) on <var24:MClass> */
+var29 = var24->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var24:MClass> */
+if (unlikely(var29 == 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);
 }
-var22 = var24;
-RET_LABEL23:(void)0;
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
 {
-var25 = standard___standard__Text___to_cmangle(var22);
-}
-if (varonce26) {
-var27 = varonce26;
-} else {
-var28 = "__";
-var29 = 2;
-var30 = standard___standard__NativeString___to_s_with_length(var28, var29);
-var27 = var30;
-varonce26 = var27;
+var30 = standard___standard__Text___to_cmangle(var27);
 }
+((struct instance_standard__NativeArray*)var5)->values[2]=var30;
 {
 { /* Inline model#MProperty#name (self) on <self:MProperty> */
 var33 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MProperty> */
 if (unlikely(var33 == 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);
 }
 var31 = var33;
 RET_LABEL32:(void)0;
@@ -3117,23 +4333,12 @@ RET_LABEL32:(void)0;
 {
 var34 = standard___standard__Text___to_cmangle(var31);
 }
-var35 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var35 = array_instance Array[Object] */
-var36 = 5;
-var37 = NEW_standard__NativeArray(var36, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var37)->values[0] = (val*) var11;
-((struct instance_standard__NativeArray*)var37)->values[1] = (val*) var12;
-((struct instance_standard__NativeArray*)var37)->values[2] = (val*) var25;
-((struct instance_standard__NativeArray*)var37)->values[3] = (val*) var27;
-((struct instance_standard__NativeArray*)var37)->values[4] = (val*) var34;
-{
-((void (*)(val* self, val* p0, long p1))(var35->class->vft[COLOR_standard__array__Array__with_native]))(var35, var37, var36) /* with_native on <var35:Array[Object]>*/;
-}
-}
+((struct instance_standard__NativeArray*)var5)->values[4]=var34;
 {
-var38 = ((val* (*)(val* self))(var35->class->vft[COLOR_standard__string__Object__to_s]))(var35) /* to_s on <var35:Array[Object]>*/;
+var35 = ((val*(*)(val* self))(var5->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var5); /* native_to_s on <var5:NativeArray[String]>*/
 }
-var3 = var38;
+varonce = var5;
+var3 = var35;
 goto RET_LABEL4;
 RET_LABEL4:(void)0;
 }
@@ -3151,8 +4356,8 @@ val* var1 /* : MVisibility */;
 var1 = self->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <self:MProperty> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -3163,6 +4368,20 @@ void nit___nit__MProperty___visibility_61d(val* self, val* p0) {
 self->attrs[COLOR_nit__model__MProperty___visibility].val = p0; /* _visibility on <self:MProperty> */
 RET_LABEL:;
 }
+/* method model#MProperty#is_autoinit for (self: MProperty): Bool */
+short int nit___nit__MProperty___is_autoinit(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_nit__model__MProperty___is_autoinit].s; /* _is_autoinit on <self:MProperty> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MProperty#is_autoinit= for (self: MProperty, Bool) */
+void nit___nit__MProperty___is_autoinit_61d(val* self, short int p0) {
+self->attrs[COLOR_nit__model__MProperty___is_autoinit].s = p0; /* _is_autoinit on <self:MProperty> */
+RET_LABEL:;
+}
 /* method model#MProperty#init for (self: MProperty) */
 void nit___nit__MProperty___standard__kernel__Object__init(val* self) {
 val* var /* : MClassDef */;
@@ -3183,15 +4402,15 @@ val* var20 /* : String */;
 val* var21 /* : Array[MProperty] */;
 val* var23 /* : Array[MProperty] */;
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MProperty___standard__kernel__Object__init]))(self) /* init on <self:MProperty>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MProperty___standard__kernel__Object__init]))(self); /* init on <self:MProperty>*/
 }
 {
 { /* Inline model#MProperty#intro_mclassdef (self) on <self:MProperty> */
 var2 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -3202,8 +4421,8 @@ RET_LABEL1:(void)0;
 var5 = var->attrs[COLOR_nit__model__MClassDef___intro_mproperties].val; /* _intro_mproperties on <var:MClassDef> */
 if (unlikely(var5 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mproperties");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 620);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 681);
+fatal_exit(1);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -3217,8 +4436,8 @@ standard___standard__Array___standard__abstract_collection__SimpleCollection__ad
 var8 = self->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <self:MProperty> */
 if (unlikely(var8 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -3229,8 +4448,8 @@ RET_LABEL7:(void)0;
 var11 = var6->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var6:MClassDef> */
 if (unlikely(var11 == 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);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
@@ -3242,7 +4461,7 @@ var14 = var9->attrs[COLOR_nit__mmodule__MModule___model].val; /* _model on <var9
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _model");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 73);
-show_backtrace(1);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -3255,7 +4474,7 @@ var17 = var_model->attrs[COLOR_nit__model__Model___mproperties_by_name].val; /*
 if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperties_by_name");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 80);
-show_backtrace(1);
+fatal_exit(1);
 }
 var15 = var17;
 RET_LABEL16:(void)0;
@@ -3266,8 +4485,8 @@ RET_LABEL16:(void)0;
 var20 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MProperty> */
 if (unlikely(var20 == 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);
 }
 var18 = var20;
 RET_LABEL19:(void)0;
@@ -3282,7 +4501,7 @@ var23 = var_model->attrs[COLOR_nit__model__Model___mproperties].val; /* _mproper
 if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperties");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 37);
-show_backtrace(1);
+fatal_exit(1);
 }
 var21 = var23;
 RET_LABEL22:(void)0;
@@ -3300,8 +4519,8 @@ val* var1 /* : Array[MPropDef] */;
 var1 = self->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -3314,8 +4533,8 @@ val* var1 /* : MPropDef */;
 var1 = self->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <self:MProperty> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -3341,8 +4560,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (unlikely(!var)) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
 self->attrs[COLOR_nit__model__MProperty___intro].val = p0; /* _intro on <self:MProperty> */
 RET_LABEL:;
@@ -3358,8 +4577,8 @@ val* var4 /* : Model */;
 var3 = self->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <self:MProperty> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -3383,8 +4602,8 @@ val* var3 /* : String */;
 var3 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MProperty> */
 if (unlikely(var3 == 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);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -3407,62 +4626,59 @@ val* var4 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 val* var6 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 val* var7 /* : nullable Object */;
 val* var_cache /* var cache: nullable Array[MPropDef] */;
-val* var8 /* : null */;
+short int var8 /* : Bool */;
 short int var9 /* : Bool */;
-short int var10 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var11 /* : Bool */;
 short int var12 /* : Bool */;
-short int var13 /* : Bool */;
-val* var14 /* : Array[MPropDef] */;
+val* var13 /* : Array[MPropDef] */;
 val* var_candidates /* var candidates: Array[MPropDef] */;
-val* var15 /* : Array[MPropDef] */;
-val* var17 /* : Array[MPropDef] */;
+val* var14 /* : Array[MPropDef] */;
+val* var16 /* : Array[MPropDef] */;
 val* var_ /* var : Array[MPropDef] */;
-val* var18 /* : ArrayIterator[nullable Object] */;
-val* var_19 /* var : ArrayIterator[MPropDef] */;
-short int var20 /* : Bool */;
-val* var21 /* : nullable Object */;
+val* var17 /* : ArrayIterator[nullable Object] */;
+val* var_18 /* var : ArrayIterator[MPropDef] */;
+short int var19 /* : Bool */;
+val* var20 /* : nullable Object */;
 val* var_mpropdef /* var mpropdef: MPropDef */;
-val* var22 /* : POSetElement[MModule] */;
-val* var24 /* : POSetElement[MModule] */;
-val* var25 /* : MClassDef */;
-val* var27 /* : MClassDef */;
-val* var28 /* : MModule */;
-val* var30 /* : MModule */;
+val* var21 /* : POSetElement[MModule] */;
+val* var23 /* : POSetElement[MModule] */;
+val* var24 /* : MClassDef */;
+val* var26 /* : MClassDef */;
+val* var27 /* : MModule */;
+val* var29 /* : MModule */;
+short int var30 /* : Bool */;
 short int var31 /* : Bool */;
-short int var32 /* : Bool */;
-val* var33 /* : null */;
+val* var32 /* : MClassDef */;
 val* var34 /* : MClassDef */;
-val* var36 /* : MClassDef */;
+val* var35 /* : MClassType */;
 val* var37 /* : MClassType */;
-val* var39 /* : MClassType */;
-short int var40 /* : Bool */;
-short int var41 /* : Bool */;
-long var44 /* : Int */;
-long var46 /* : Int */;
-long var47 /* : Int */;
-short int var48 /* : Bool */;
-short int var50 /* : Bool */;
+short int var38 /* : Bool */;
+short int var39 /* : Bool */;
+long var41 /* : Int */;
+long var43 /* : Int */;
+short int var44 /* : Bool */;
+short int var46 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var51 /* : Bool */;
-val* var52 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var54 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var55 /* : Array[MPropDef] */;
+short int var47 /* : Bool */;
+val* var48 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
+val* var50 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
+val* var51 /* : Array[MPropDef] */;
 var_mmodule = p0;
 var_mtype = p1;
 {
-var1 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var1 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
 var2 = !var1;
 if (unlikely(!var2)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1795);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1990);
+fatal_exit(1);
 }
 {
-var3 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
+var3 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
 }
 var_mtype = var3;
 {
@@ -3470,8 +4686,8 @@ var_mtype = var3;
 var6 = self->attrs[COLOR_nit__model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1822);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2017);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -3481,135 +4697,133 @@ RET_LABEL5:(void)0;
 var7 = more_collections___more_collections__HashMap2____91d_93d(var4, var_mmodule, var_mtype);
 }
 var_cache = var7;
-var8 = NULL;
 if (var_cache == NULL) {
-var9 = 0; /* is null */
+var8 = 0; /* is null */
 } else {
-var9 = 1; /* arg is null and recv is not */
+var8 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_cache,var8) on <var_cache:nullable Array[MPropDef]> */
-var_other = var8;
+{ /* Inline kernel#Object#!= (var_cache,((val*)NULL)) on <var_cache:nullable Array[MPropDef]> */
+var_other = ((val*)NULL);
 {
-var12 = ((short int (*)(val* self, val* p0))(var_cache->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cache, var_other) /* == on <var_cache:nullable Array[MPropDef](Array[MPropDef])>*/;
+var11 = ((short int(*)(val* self, val* p0))(var_cache->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cache, var_other); /* == on <var_cache:nullable Array[MPropDef](Array[MPropDef])>*/
 }
-var13 = !var12;
-var10 = var13;
-goto RET_LABEL11;
-RET_LABEL11:(void)0;
+var12 = !var11;
+var9 = var12;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
 }
-var9 = var10;
+var8 = var9;
 }
-if (var9){
+if (var8){
 var = var_cache;
 goto RET_LABEL;
 } else {
 }
-var14 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__nit__model__MProperty__MPROPDEF]);
+var13 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__nit__model__MProperty__MPROPDEF]);
 {
-standard___standard__Array___standard__kernel__Object__init(var14); /* Direct call array#Array#init on <var14:Array[MPropDef]>*/
+standard___standard__Array___standard__kernel__Object__init(var13); /* Direct call array#Array#init on <var13:Array[MPropDef]>*/
 }
-var_candidates = var14;
+var_candidates = var13;
 {
 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
-var17 = self->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
-if (unlikely(var17 == NULL)) {
+var16 = self->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
+if (unlikely(var16 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
-var15 = var17;
-RET_LABEL16:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
-var_ = var15;
+var_ = var14;
 {
-var18 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var17 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_19 = var18;
+var_18 = var17;
 for(;;) {
 {
-var20 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_19);
+var19 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_18);
 }
-if (var20){
+if (var19){
 {
-var21 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_19);
+var20 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_18);
 }
-var_mpropdef = var21;
+var_mpropdef = var20;
 {
 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
-var24 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
-if (unlikely(var24 == NULL)) {
+var23 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
+if (unlikely(var23 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
-show_backtrace(1);
+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> */
-var27 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var27 == NULL)) {
+var26 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+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;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var25) on <var25:MClassDef> */
-var30 = var25->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var25:MClassDef> */
-if (unlikely(var30 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var24) on <var24:MClassDef> */
+var29 = var24->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var24:MClassDef> */
+if (unlikely(var29 == 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);
 }
-var28 = var30;
-RET_LABEL29:(void)0;
+var27 = var29;
+RET_LABEL28:(void)0;
 }
 }
 {
-var31 = poset___poset__POSetElement____60d_61d(var22, var28);
+var30 = poset___poset__POSetElement____60d_61d(var21, var27);
 }
-var32 = !var31;
-if (var32){
+var31 = !var30;
+if (var31){
 goto BREAK_label;
 } else {
 }
-var33 = NULL;
 {
 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
-var36 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var36 == NULL)) {
+var34 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+if (unlikely(var34 == 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);
 }
-var34 = var36;
-RET_LABEL35:(void)0;
+var32 = var34;
+RET_LABEL33:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var34) on <var34:MClassDef> */
-var39 = var34->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var34:MClassDef> */
-if (unlikely(var39 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var32) on <var32:MClassDef> */
+var37 = var32->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var32:MClassDef> */
+if (unlikely(var37 == 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);
 }
-var37 = var39;
-RET_LABEL38:(void)0;
+var35 = var37;
+RET_LABEL36:(void)0;
 }
 }
 {
-var40 = nit___nit__MType___is_subtype(var_mtype, var_mmodule, var33, var37);
+var38 = nit___nit__MType___is_subtype(var_mtype, var_mmodule, ((val*)NULL), var35);
 }
-var41 = !var40;
-if (var41){
+var39 = !var38;
+if (var39){
 goto BREAK_label;
 } else {
 }
@@ -3618,67 +4832,64 @@ standard___standard__Array___standard__abstract_collection__SimpleCollection__ad
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_19); /* Direct call array#ArrayIterator#next on <var_19:ArrayIterator[MPropDef]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_18); /* Direct call array#ArrayIterator#next on <var_18:ArrayIterator[MPropDef]>*/
 }
 } else {
-goto BREAK_label42;
+goto BREAK_label40;
 }
 }
-BREAK_label42: (void)0;
+BREAK_label40: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_19) on <var_19:ArrayIterator[MPropDef]> */
-RET_LABEL43:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_18); /* Direct call array#ArrayIterator#finish on <var_18:ArrayIterator[MPropDef]>*/
 }
 {
 { /* Inline array#AbstractArrayRead#length (var_candidates) on <var_candidates:Array[MPropDef]> */
-var46 = var_candidates->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
-var44 = var46;
-RET_LABEL45:(void)0;
+var43 = var_candidates->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
+var41 = var43;
+RET_LABEL42:(void)0;
 }
 }
-var47 = 1;
 {
-{ /* Inline kernel#Int#<= (var44,var47) on <var44:Int> */
-/* Covariant cast for argument 0 (i) <var47:Int> isa OTHER */
-/* <var47:Int> isa OTHER */
-var50 = 1; /* easy <var47:Int> isa OTHER*/
-if (unlikely(!var50)) {
+{ /* Inline kernel#Int#<= (var41,1l) on <var41:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var46 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var46)) {
 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, 409);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
+fatal_exit(1);
 }
-var51 = var44 <= var47;
-var48 = var51;
-goto RET_LABEL49;
-RET_LABEL49:(void)0;
+var47 = var41 <= 1l;
+var44 = var47;
+goto RET_LABEL45;
+RET_LABEL45:(void)0;
 }
 }
-if (var48){
+if (var44){
 {
 { /* Inline model#MProperty#lookup_definitions_cache (self) on <self:MProperty> */
-var54 = self->attrs[COLOR_nit__model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
-if (unlikely(var54 == NULL)) {
+var50 = self->attrs[COLOR_nit__model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
+if (unlikely(var50 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1822);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2017);
+fatal_exit(1);
 }
-var52 = var54;
-RET_LABEL53:(void)0;
+var48 = var50;
+RET_LABEL49:(void)0;
 }
 }
 {
-more_collections___more_collections__HashMap2____91d_93d_61d(var52, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var52:HashMap2[MModule, MType, Array[MPropDef]]>*/
+more_collections___more_collections__HashMap2____91d_93d_61d(var48, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var48:HashMap2[MModule, MType, Array[MPropDef]]>*/
 }
 var = var_candidates;
 goto RET_LABEL;
 } else {
 }
 {
-var55 = nit___nit__MProperty___select_most_specific(self, var_mmodule, var_candidates);
+var51 = nit___nit__MProperty___select_most_specific(self, var_mmodule, var_candidates);
 }
-var = var55;
+var = var51;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -3690,8 +4901,8 @@ val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 var1 = self->attrs[COLOR_nit__model__MProperty___lookup_definitions_cache].val; /* _lookup_definitions_cache on <self:MProperty> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_definitions_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1822);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2017);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -3723,53 +4934,51 @@ val* var18 /* : MModule */;
 val* var20 /* : MModule */;
 short int var21 /* : Bool */;
 short int var22 /* : Bool */;
-val* var23 /* : null */;
-val* var24 /* : MClassDef */;
-val* var26 /* : MClassDef */;
-val* var27 /* : MClassType */;
-val* var29 /* : MClassType */;
+val* var23 /* : MClassDef */;
+val* var25 /* : MClassDef */;
+val* var26 /* : MClassType */;
+val* var28 /* : MClassType */;
+short int var29 /* : Bool */;
 short int var30 /* : Bool */;
 short int var31 /* : Bool */;
-short int var32 /* : Bool */;
-val* var33 /* : MClassDef */;
-val* var35 /* : MClassDef */;
-val* var36 /* : MClassType */;
-val* var38 /* : MClassType */;
-short int var39 /* : Bool */;
+val* var32 /* : MClassDef */;
+val* var34 /* : MClassDef */;
+val* var35 /* : MClassType */;
+val* var37 /* : MClassType */;
+short int var38 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var41 /* : Bool */;
-short int var43 /* : Bool */;
-short int var_44 /* var : Bool */;
-val* var45 /* : MClassDef */;
-val* var47 /* : MClassDef */;
-val* var48 /* : MModule */;
-val* var50 /* : MModule */;
-short int var51 /* : Bool */;
-short int var53 /* : Bool */;
-short int var55 /* : Bool */;
+short int var40 /* : Bool */;
+short int var42 /* : Bool */;
+short int var_43 /* var : Bool */;
+val* var44 /* : MClassDef */;
+val* var46 /* : MClassDef */;
+val* var47 /* : MModule */;
+val* var49 /* : MModule */;
+short int var50 /* : Bool */;
+short int var52 /* : Bool */;
+short int var54 /* : Bool */;
+long var56 /* : Int */;
 long var58 /* : Int */;
-long var60 /* : Int */;
-long var61 /* : Int */;
-short int var62 /* : Bool */;
-short int var64 /* : Bool */;
+short int var59 /* : Bool */;
+short int var61 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var65 /* : Bool */;
-val* var66 /* : Array[MPropDef] */;
+short int var62 /* : Bool */;
+val* var63 /* : Array[MPropDef] */;
 var_mmodule = p0;
 var_mtype = p1;
 {
-var1 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var1 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
 var2 = !var1;
 if (unlikely(!var2)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1835);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2030);
+fatal_exit(1);
 }
 {
-var3 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
+var3 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
 }
 var_mtype = var3;
 var4 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__nit__model__MProperty__MPROPDEF]);
@@ -3782,8 +4991,8 @@ var_candidates = var4;
 var7 = self->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
 if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
 var5 = var7;
 RET_LABEL6:(void)0;
@@ -3809,7 +5018,7 @@ var14 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /*
 if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
-show_backtrace(1);
+fatal_exit(1);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -3820,8 +5029,8 @@ RET_LABEL13:(void)0;
 var17 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
 if (unlikely(var17 == 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);
 }
 var15 = var17;
 RET_LABEL16:(void)0;
@@ -3832,8 +5041,8 @@ RET_LABEL16:(void)0;
 var20 = var15->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var15:MClassDef> */
 if (unlikely(var20 == 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);
 }
 var18 = var20;
 RET_LABEL19:(void)0;
@@ -3847,126 +5056,125 @@ if (var22){
 goto BREAK_label;
 } else {
 }
-var23 = NULL;
 {
 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
-var26 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var26 == NULL)) {
+var25 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+if (unlikely(var25 == 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);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var24) on <var24:MClassDef> */
-var29 = var24->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var24:MClassDef> */
-if (unlikely(var29 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var23) on <var23:MClassDef> */
+var28 = var23->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var23:MClassDef> */
+if (unlikely(var28 == 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);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var26 = var28;
+RET_LABEL27:(void)0;
 }
 }
 {
-var30 = nit___nit__MType___is_subtype(var_mtype, var_mmodule, var23, var27);
+var29 = nit___nit__MType___is_subtype(var_mtype, var_mmodule, ((val*)NULL), var26);
 }
-var31 = !var30;
-if (var31){
+var30 = !var29;
+if (var30){
 goto BREAK_label;
 } else {
 }
 {
 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
-var35 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var35 == NULL)) {
+var34 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+if (unlikely(var34 == 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);
 }
-var33 = var35;
-RET_LABEL34:(void)0;
+var32 = var34;
+RET_LABEL33:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var33) on <var33:MClassDef> */
-var38 = var33->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var33:MClassDef> */
-if (unlikely(var38 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var32) on <var32:MClassDef> */
+var37 = var32->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var32:MClassDef> */
+if (unlikely(var37 == 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);
 }
-var36 = var38;
-RET_LABEL37:(void)0;
+var35 = var37;
+RET_LABEL36:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var_mtype,var36) on <var_mtype:MType> */
-var_other = var36;
+{ /* Inline kernel#Object#== (var_mtype,var35) on <var_mtype:MType> */
+var_other = var35;
 {
 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:MType> */
-var43 = var_mtype == var_other;
-var41 = var43;
-goto RET_LABEL42;
-RET_LABEL42:(void)0;
+var42 = var_mtype == var_other;
+var40 = var42;
+goto RET_LABEL41;
+RET_LABEL41:(void)0;
 }
 }
-var39 = var41;
-goto RET_LABEL40;
-RET_LABEL40:(void)0;
+var38 = var40;
+goto RET_LABEL39;
+RET_LABEL39:(void)0;
 }
 }
-var_44 = var39;
-if (var39){
+var_43 = var38;
+if (var38){
 {
 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
-var47 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var47 == NULL)) {
+var46 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+if (unlikely(var46 == 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);
 }
-var45 = var47;
-RET_LABEL46:(void)0;
+var44 = var46;
+RET_LABEL45:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var45) on <var45:MClassDef> */
-var50 = var45->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var45:MClassDef> */
-if (unlikely(var50 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var44) on <var44:MClassDef> */
+var49 = var44->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var44:MClassDef> */
+if (unlikely(var49 == 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);
 }
-var48 = var50;
-RET_LABEL49:(void)0;
+var47 = var49;
+RET_LABEL48:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var_mmodule,var48) on <var_mmodule:MModule> */
-var_other = var48;
+{ /* Inline kernel#Object#== (var_mmodule,var47) on <var_mmodule:MModule> */
+var_other = var47;
 {
 { /* Inline kernel#Object#is_same_instance (var_mmodule,var_other) on <var_mmodule:MModule> */
-var55 = var_mmodule == var_other;
-var53 = var55;
-goto RET_LABEL54;
-RET_LABEL54:(void)0;
+var54 = var_mmodule == var_other;
+var52 = var54;
+goto RET_LABEL53;
+RET_LABEL53:(void)0;
 }
 }
-var51 = var53;
-goto RET_LABEL52;
-RET_LABEL52:(void)0;
+var50 = var52;
+goto RET_LABEL51;
+RET_LABEL51:(void)0;
 }
 }
-var32 = var51;
+var31 = var50;
 } else {
-var32 = var_44;
+var31 = var_43;
 }
-if (var32){
+if (var31){
 goto BREAK_label;
 } else {
 }
@@ -3978,49 +5186,46 @@ BREAK_label: (void)0;
 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_9); /* Direct call array#ArrayIterator#next on <var_9:ArrayIterator[MPropDef]>*/
 }
 } else {
-goto BREAK_label56;
+goto BREAK_label55;
 }
 }
-BREAK_label56: (void)0;
+BREAK_label55: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_9) on <var_9:ArrayIterator[MPropDef]> */
-RET_LABEL57:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_9); /* Direct call array#ArrayIterator#finish on <var_9:ArrayIterator[MPropDef]>*/
 }
 {
 { /* Inline array#AbstractArrayRead#length (var_candidates) on <var_candidates:Array[MPropDef]> */
-var60 = var_candidates->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
-var58 = var60;
-RET_LABEL59:(void)0;
+var58 = var_candidates->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
+var56 = var58;
+RET_LABEL57:(void)0;
 }
 }
-var61 = 1;
 {
-{ /* Inline kernel#Int#<= (var58,var61) on <var58:Int> */
-/* Covariant cast for argument 0 (i) <var61:Int> isa OTHER */
-/* <var61:Int> isa OTHER */
-var64 = 1; /* easy <var61:Int> isa OTHER*/
-if (unlikely(!var64)) {
+{ /* Inline kernel#Int#<= (var56,1l) on <var56:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var61 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var61)) {
 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, 409);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
+fatal_exit(1);
 }
-var65 = var58 <= var61;
-var62 = var65;
-goto RET_LABEL63;
-RET_LABEL63:(void)0;
+var62 = var56 <= 1l;
+var59 = var62;
+goto RET_LABEL60;
+RET_LABEL60:(void)0;
 }
 }
-if (var62){
+if (var59){
 var = var_candidates;
 goto RET_LABEL;
 } else {
 }
 {
-var66 = nit___nit__MProperty___select_most_specific(self, var_mmodule, var_candidates);
+var63 = nit___nit__MProperty___select_most_specific(self, var_mmodule, var_candidates);
 }
-var = var66;
+var = var63;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -4049,72 +5254,66 @@ val* var_cd1 /* var cd1: MClassDef */;
 val* var10 /* : MClass */;
 val* var12 /* : MClass */;
 val* var_c1 /* var c1: MClass */;
-short int var13 /* : Bool */;
 short int var_keep /* var keep: Bool */;
-val* var_14 /* var : Array[MPropDef] */;
-val* var15 /* : ArrayIterator[nullable Object] */;
-val* var_16 /* var : ArrayIterator[MPropDef] */;
-short int var17 /* : Bool */;
-val* var18 /* : nullable Object */;
+val* var_13 /* var : Array[MPropDef] */;
+val* var14 /* : ArrayIterator[nullable Object] */;
+val* var_15 /* var : ArrayIterator[MPropDef] */;
+short int var16 /* : Bool */;
+val* var17 /* : nullable Object */;
 val* var_pd2 /* var pd2: MPropDef */;
-short int var19 /* : Bool */;
+short int var18 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var21 /* : Bool */;
-short int var23 /* : Bool */;
-val* var24 /* : MClassDef */;
-val* var26 /* : MClassDef */;
+short int var20 /* : Bool */;
+short int var22 /* : Bool */;
+val* var23 /* : MClassDef */;
+val* var25 /* : MClassDef */;
 val* var_cd2 /* var cd2: MClassDef */;
-val* var27 /* : MClass */;
-val* var29 /* : MClass */;
+val* var26 /* : MClass */;
+val* var28 /* : MClass */;
 val* var_c2 /* var c2: MClass */;
-val* var30 /* : MClassType */;
+val* var29 /* : MClassType */;
+val* var31 /* : MClassType */;
 val* var32 /* : MClassType */;
-val* var33 /* : MClassType */;
-val* var35 /* : MClassType */;
-short int var36 /* : Bool */;
-short int var38 /* : Bool */;
-short int var40 /* : Bool */;
-val* var41 /* : MModule */;
-val* var43 /* : MModule */;
-val* var44 /* : POSetElement[MModule] */;
-val* var46 /* : POSetElement[MModule] */;
-val* var47 /* : MModule */;
-val* var49 /* : MModule */;
-short int var50 /* : Bool */;
+val* var34 /* : MClassType */;
+short int var35 /* : Bool */;
+short int var37 /* : Bool */;
+short int var39 /* : Bool */;
+val* var40 /* : MModule */;
+val* var42 /* : MModule */;
+val* var43 /* : POSetElement[MModule] */;
+val* var45 /* : POSetElement[MModule] */;
+val* var46 /* : MModule */;
+val* var48 /* : MModule */;
+short int var49 /* : Bool */;
 short int var51 /* : Bool */;
-short int var53 /* : Bool */;
+val* var52 /* : MClassType */;
 val* var54 /* : MClassType */;
-val* var56 /* : MClassType */;
-val* var57 /* : null */;
-val* var58 /* : MClassType */;
+val* var55 /* : MClassType */;
+val* var57 /* : MClassType */;
+short int var58 /* : Bool */;
+short int var_59 /* var : Bool */;
 val* var60 /* : MClassType */;
-short int var61 /* : Bool */;
-short int var_62 /* var : Bool */;
+val* var62 /* : MClassType */;
 val* var63 /* : MClassType */;
 val* var65 /* : MClassType */;
-val* var66 /* : MClassType */;
-val* var68 /* : MClassType */;
+short int var66 /* : Bool */;
+val* var_other68 /* var other: nullable Object */;
 short int var69 /* : Bool */;
-val* var_other71 /* var other: nullable Object */;
+short int var70 /* : Bool */;
 short int var72 /* : Bool */;
-short int var73 /* : Bool */;
-short int var74 /* : Bool */;
-short int var78 /* : Bool */;
+val* var73 /* : Sys */;
+val* var74 /* : NativeArray[String] */;
 static val* varonce;
-val* var79 /* : String */;
-char* var80 /* : NativeString */;
-long var81 /* : Int */;
+static val* varonce75;
+val* var76 /* : String */;
+char* var77 /* : NativeString */;
+val* var78 /* : FlatString */;
+static val* varonce79;
+val* var80 /* : String */;
+char* var81 /* : NativeString */;
 val* var82 /* : FlatString */;
-static val* varonce83;
+val* var83 /* : String */;
 val* var84 /* : String */;
-char* var85 /* : NativeString */;
-long var86 /* : Int */;
-val* var87 /* : FlatString */;
-val* var88 /* : String */;
-val* var89 /* : Array[Object] */;
-long var90 /* : Int */;
-val* var91 /* : NativeArray[Object] */;
-val* var92 /* : String */;
 /* Covariant cast for argument 1 (candidates) <p1:Array[MPropDef]> isa Array[MPROPDEF] */
 /* <p1:Array[MPropDef]> isa Array[MPROPDEF] */
 type_struct = self->type->resolution_table->types[COLOR_standard__Array__nit__model__MProperty__MPROPDEF];
@@ -4128,8 +5327,8 @@ var1 = p1->type->type_table[cltype] == idtype;
 if (unlikely(!var1)) {
 var_class_name = p1 == NULL ? "null" : p1->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[MPROPDEF]", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1857);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2052);
+fatal_exit(1);
 }
 var_mmodule = p0;
 var_candidates = p1;
@@ -4157,8 +5356,8 @@ var_pd1 = var6;
 var9 = var_pd1->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_pd1:MPropDef> */
 if (unlikely(var9 == 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);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -4170,253 +5369,247 @@ var_cd1 = var7;
 var12 = var_cd1->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_cd1:MClassDef> */
 if (unlikely(var12 == 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);
 }
 var10 = var12;
 RET_LABEL11:(void)0;
 }
 }
 var_c1 = var10;
-var13 = 1;
-var_keep = var13;
-var_14 = var_candidates;
+var_keep = 1;
+var_13 = var_candidates;
 {
-var15 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_14);
+var14 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_13);
 }
-var_16 = var15;
+var_15 = var14;
 for(;;) {
 {
-var17 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_16);
+var16 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_15);
 }
-if (var17){
+if (var16){
 {
-var18 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_16);
+var17 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_15);
 }
-var_pd2 = var18;
+var_pd2 = var17;
 {
 { /* Inline kernel#Object#== (var_pd2,var_pd1) on <var_pd2:MPropDef> */
 var_other = var_pd1;
 {
 { /* Inline kernel#Object#is_same_instance (var_pd2,var_other) on <var_pd2:MPropDef> */
-var23 = var_pd2 == var_other;
-var21 = var23;
-goto RET_LABEL22;
-RET_LABEL22:(void)0;
+var22 = var_pd2 == var_other;
+var20 = var22;
+goto RET_LABEL21;
+RET_LABEL21:(void)0;
 }
 }
-var19 = var21;
-goto RET_LABEL20;
-RET_LABEL20:(void)0;
+var18 = var20;
+goto RET_LABEL19;
+RET_LABEL19:(void)0;
 }
 }
-if (var19){
+if (var18){
 goto BREAK_label;
 } else {
 }
 {
 { /* Inline model#MPropDef#mclassdef (var_pd2) on <var_pd2:MPropDef> */
-var26 = var_pd2->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_pd2:MPropDef> */
-if (unlikely(var26 == NULL)) {
+var25 = var_pd2->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_pd2:MPropDef> */
+if (unlikely(var25 == 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);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
-var_cd2 = var24;
+var_cd2 = var23;
 {
 { /* Inline model#MClassDef#mclass (var_cd2) on <var_cd2:MClassDef> */
-var29 = var_cd2->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_cd2:MClassDef> */
-if (unlikely(var29 == NULL)) {
+var28 = var_cd2->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_cd2:MClassDef> */
+if (unlikely(var28 == 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);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var26 = var28;
+RET_LABEL27:(void)0;
 }
 }
-var_c2 = var27;
+var_c2 = var26;
 {
 { /* Inline model#MClass#mclass_type (var_c2) on <var_c2:MClass> */
-var32 = var_c2->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c2:MClass> */
-if (unlikely(var32 == NULL)) {
+var31 = var_c2->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c2:MClass> */
+if (unlikely(var31 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
 }
-var30 = var32;
-RET_LABEL31:(void)0;
+var29 = var31;
+RET_LABEL30:(void)0;
 }
 }
 {
 { /* Inline model#MClass#mclass_type (var_c1) on <var_c1:MClass> */
-var35 = var_c1->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c1:MClass> */
-if (unlikely(var35 == NULL)) {
+var34 = var_c1->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_c1:MClass> */
+if (unlikely(var34 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 438);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
 }
-var33 = var35;
-RET_LABEL34:(void)0;
+var32 = var34;
+RET_LABEL33:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var30,var33) on <var30:MClassType> */
-var_other = var33;
+{ /* Inline kernel#Object#== (var29,var32) on <var29:MClassType> */
+var_other = var32;
 {
-{ /* Inline kernel#Object#is_same_instance (var30,var_other) on <var30:MClassType> */
-var40 = var30 == var_other;
-var38 = var40;
-goto RET_LABEL39;
-RET_LABEL39:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var29,var_other) on <var29:MClassType> */
+var39 = var29 == var_other;
+var37 = var39;
+goto RET_LABEL38;
+RET_LABEL38:(void)0;
 }
 }
-var36 = var38;
-goto RET_LABEL37;
-RET_LABEL37:(void)0;
+var35 = var37;
+goto RET_LABEL36;
+RET_LABEL36:(void)0;
 }
 }
-if (var36){
+if (var35){
 {
 { /* Inline model#MClassDef#mmodule (var_cd2) on <var_cd2:MClassDef> */
-var43 = var_cd2->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_cd2:MClassDef> */
-if (unlikely(var43 == NULL)) {
+var42 = var_cd2->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_cd2:MClassDef> */
+if (unlikely(var42 == 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);
 }
-var41 = var43;
-RET_LABEL42:(void)0;
+var40 = var42;
+RET_LABEL41:(void)0;
 }
 }
 {
-{ /* Inline mmodule#MModule#in_importation (var41) on <var41:MModule> */
-var46 = var41->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var41:MModule> */
-if (unlikely(var46 == NULL)) {
+{ /* Inline mmodule#MModule#in_importation (var40) on <var40:MModule> */
+var45 = var40->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var40:MModule> */
+if (unlikely(var45 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
-show_backtrace(1);
+fatal_exit(1);
 }
-var44 = var46;
-RET_LABEL45:(void)0;
+var43 = var45;
+RET_LABEL44:(void)0;
 }
 }
 {
 { /* Inline model#MClassDef#mmodule (var_cd1) on <var_cd1:MClassDef> */
-var49 = var_cd1->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_cd1:MClassDef> */
-if (unlikely(var49 == NULL)) {
+var48 = var_cd1->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var_cd1:MClassDef> */
+if (unlikely(var48 == 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);
 }
-var47 = var49;
-RET_LABEL48:(void)0;
+var46 = var48;
+RET_LABEL47:(void)0;
 }
 }
 {
-var50 = poset___poset__POSetElement____60d(var44, var47);
+var49 = poset___poset__POSetElement____60d(var43, var46);
 }
-if (var50){
-var51 = 0;
-var_keep = var51;
-goto BREAK_label52;
+if (var49){
+var_keep = 0;
+goto BREAK_label50;
 } else {
 }
 } else {
 {
 { /* Inline model#MClassDef#bound_mtype (var_cd2) on <var_cd2:MClassDef> */
-var56 = var_cd2->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
-if (unlikely(var56 == NULL)) {
+var54 = var_cd2->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
+if (unlikely(var54 == 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);
 }
-var54 = var56;
-RET_LABEL55:(void)0;
+var52 = var54;
+RET_LABEL53:(void)0;
 }
 }
-var57 = NULL;
 {
 { /* Inline model#MClassDef#bound_mtype (var_cd1) on <var_cd1:MClassDef> */
-var60 = var_cd1->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
-if (unlikely(var60 == NULL)) {
+var57 = var_cd1->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
+if (unlikely(var57 == 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);
 }
-var58 = var60;
-RET_LABEL59:(void)0;
+var55 = var57;
+RET_LABEL56:(void)0;
 }
 }
 {
-var61 = nit___nit__MType___is_subtype(var54, var_mmodule, var57, var58);
+var58 = nit___nit__MType___is_subtype(var52, var_mmodule, ((val*)NULL), var55);
 }
-var_62 = var61;
-if (var61){
+var_59 = var58;
+if (var58){
 {
 { /* Inline model#MClassDef#bound_mtype (var_cd2) on <var_cd2:MClassDef> */
-var65 = var_cd2->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
-if (unlikely(var65 == NULL)) {
+var62 = var_cd2->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd2:MClassDef> */
+if (unlikely(var62 == 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);
 }
-var63 = var65;
-RET_LABEL64:(void)0;
+var60 = var62;
+RET_LABEL61:(void)0;
 }
 }
 {
 { /* Inline model#MClassDef#bound_mtype (var_cd1) on <var_cd1:MClassDef> */
-var68 = var_cd1->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
-if (unlikely(var68 == NULL)) {
+var65 = var_cd1->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_cd1:MClassDef> */
+if (unlikely(var65 == 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);
 }
-var66 = var68;
-RET_LABEL67:(void)0;
+var63 = var65;
+RET_LABEL64:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#!= (var63,var66) on <var63:MClassType> */
-var_other71 = var66;
+{ /* Inline kernel#Object#!= (var60,var63) on <var60:MClassType> */
+var_other68 = var63;
 {
-var72 = ((short int (*)(val* self, val* p0))(var63->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var63, var_other71) /* == on <var63:MClassType>*/;
+var69 = ((short int(*)(val* self, val* p0))(var60->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var60, var_other68); /* == on <var60:MClassType>*/
 }
-var73 = !var72;
-var69 = var73;
-goto RET_LABEL70;
-RET_LABEL70:(void)0;
+var70 = !var69;
+var66 = var70;
+goto RET_LABEL67;
+RET_LABEL67:(void)0;
 }
 }
-var53 = var69;
+var51 = var66;
 } else {
-var53 = var_62;
+var51 = var_59;
 }
-if (var53){
-var74 = 0;
-var_keep = var74;
-goto BREAK_label52;
+if (var51){
+var_keep = 0;
+goto BREAK_label50;
 } else {
 }
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_16); /* Direct call array#ArrayIterator#next on <var_16:ArrayIterator[MPropDef]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_15); /* Direct call array#ArrayIterator#next on <var_15:ArrayIterator[MPropDef]>*/
 }
 } else {
-goto BREAK_label52;
+goto BREAK_label50;
 }
 }
-BREAK_label52: (void)0;
+BREAK_label50: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_16) on <var_16:ArrayIterator[MPropDef]> */
-RET_LABEL75:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_15); /* Direct call array#ArrayIterator#finish on <var_15:ArrayIterator[MPropDef]>*/
 }
 if (var_keep){
 {
@@ -4428,55 +5621,51 @@ standard___standard__Array___standard__abstract_collection__SimpleCollection__ad
 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_4); /* Direct call array#ArrayIterator#next on <var_4:ArrayIterator[MPropDef]>*/
 }
 } else {
-goto BREAK_label76;
+goto BREAK_label71;
 }
 }
-BREAK_label76: (void)0;
+BREAK_label71: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_4) on <var_4:ArrayIterator[MPropDef]> */
-RET_LABEL77:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_4); /* Direct call array#ArrayIterator#finish on <var_4:ArrayIterator[MPropDef]>*/
 }
 {
-var78 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_res);
+var72 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__is_empty(var_res);
 }
-if (var78){
-if (varonce) {
-var79 = varonce;
+if (var72){
+var73 = glob_sys;
+if (unlikely(varonce==NULL)) {
+var74 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
+if (likely(varonce75!=NULL)) {
+var76 = varonce75;
 } else {
-var80 = "All lost! ";
-var81 = 10;
-var82 = standard___standard__NativeString___to_s_with_length(var80, var81);
-var79 = var82;
-varonce = var79;
+var77 = "All lost! ";
+var78 = standard___standard__NativeString___to_s_with_length(var77, 10l);
+var76 = var78;
+varonce75 = var76;
 }
-if (varonce83) {
-var84 = varonce83;
+((struct instance_standard__NativeArray*)var74)->values[0]=var76;
 } else {
-var85 = ", ";
-var86 = 2;
-var87 = standard___standard__NativeString___to_s_with_length(var85, var86);
-var84 = var87;
-varonce83 = var84;
+var74 = varonce;
+varonce = NULL;
 }
-{
-var88 = standard__string___Collection___join(var_candidates, var84);
+if (likely(varonce79!=NULL)) {
+var80 = varonce79;
+} else {
+var81 = ", ";
+var82 = standard___standard__NativeString___to_s_with_length(var81, 2l);
+var80 = var82;
+varonce79 = var80;
 }
-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*) var79;
-((struct instance_standard__NativeArray*)var91)->values[1] = (val*) var88;
 {
-((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]>*/;
-}
+var83 = standard__string___Collection___join(var_candidates, var80);
 }
+((struct instance_standard__NativeArray*)var74)->values[1]=var83;
 {
-var92 = ((val* (*)(val* self))(var89->class->vft[COLOR_standard__string__Object__to_s]))(var89) /* to_s on <var89:Array[Object]>*/;
+var84 = ((val*(*)(val* self))(var74->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var74); /* native_to_s on <var74:NativeArray[String]>*/
 }
+varonce = var74;
 {
-standard__file___Object___print(self, var92); /* Direct call file#Object#print on <self:MProperty>*/
+standard__file___Sys___print(var73, var84); /* Direct call file#Sys#print on <var73:Sys>*/
 }
 } else {
 }
@@ -4515,58 +5704,55 @@ val* var2 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 val* var4 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 val* var5 /* : nullable Object */;
 val* var_cache /* var cache: nullable Array[MPropDef] */;
-val* var6 /* : null */;
+short int var6 /* : Bool */;
 short int var7 /* : Bool */;
-short int var8 /* : Bool */;
 val* var_other /* var other: nullable Object */;
+short int var9 /* : Bool */;
 short int var10 /* : Bool */;
 short int var11 /* : Bool */;
 short int var12 /* : Bool */;
 short int var13 /* : Bool */;
-short int var14 /* : Bool */;
-val* var15 /* : Array[MPropDef] */;
+val* var14 /* : Array[MPropDef] */;
 val* var_candidates /* var candidates: Array[MPropDef] */;
-val* var16 /* : Array[MPropDef] */;
-val* var18 /* : Array[MPropDef] */;
+val* var15 /* : Array[MPropDef] */;
+val* var17 /* : Array[MPropDef] */;
 val* var_ /* var : Array[MPropDef] */;
-val* var19 /* : ArrayIterator[nullable Object] */;
-val* var_20 /* var : ArrayIterator[MPropDef] */;
-short int var21 /* : Bool */;
-val* var22 /* : nullable Object */;
+val* var18 /* : ArrayIterator[nullable Object] */;
+val* var_19 /* var : ArrayIterator[MPropDef] */;
+short int var20 /* : Bool */;
+val* var21 /* : nullable Object */;
 val* var_mpropdef /* var mpropdef: MPropDef */;
-val* var23 /* : POSetElement[MModule] */;
-val* var25 /* : POSetElement[MModule] */;
-val* var26 /* : MClassDef */;
-val* var28 /* : MClassDef */;
-val* var29 /* : MModule */;
-val* var31 /* : MModule */;
+val* var22 /* : POSetElement[MModule] */;
+val* var24 /* : POSetElement[MModule] */;
+val* var25 /* : MClassDef */;
+val* var27 /* : MClassDef */;
+val* var28 /* : MModule */;
+val* var30 /* : MModule */;
+short int var31 /* : Bool */;
 short int var32 /* : Bool */;
-short int var33 /* : Bool */;
-val* var34 /* : null */;
+val* var33 /* : MClassDef */;
 val* var35 /* : MClassDef */;
-val* var37 /* : MClassDef */;
+val* var36 /* : MClassType */;
 val* var38 /* : MClassType */;
-val* var40 /* : MClassType */;
-short int var41 /* : Bool */;
-short int var42 /* : Bool */;
-long var45 /* : Int */;
-long var47 /* : Int */;
-long var48 /* : Int */;
-short int var49 /* : Bool */;
-short int var51 /* : Bool */;
+short int var39 /* : Bool */;
+short int var40 /* : Bool */;
+long var42 /* : Int */;
+long var44 /* : Int */;
+short int var45 /* : Bool */;
+short int var47 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-short int var52 /* : Bool */;
+short int var48 /* : Bool */;
+val* var49 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
+val* var51 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
+val* var52 /* : Array[nullable Object] */;
 val* var53 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 val* var55 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var56 /* : Array[nullable Object] */;
-val* var57 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
-val* var59 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 var_mmodule = p0;
 var_mtype = p1;
 {
-var1 = ((val* (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__as_notnullable]))(var_mtype) /* as_notnullable on <var_mtype:MType>*/;
+var1 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
 }
 var_mtype = var1;
 {
@@ -4574,8 +5760,8 @@ var_mtype = var1;
 var4 = self->attrs[COLOR_nit__model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1945);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2140);
+fatal_exit(1);
 }
 var2 = var4;
 RET_LABEL3:(void)0;
@@ -4585,152 +5771,150 @@ RET_LABEL3:(void)0;
 var5 = more_collections___more_collections__HashMap2____91d_93d(var2, var_mmodule, var_mtype);
 }
 var_cache = var5;
-var6 = NULL;
 if (var_cache == NULL) {
-var7 = 0; /* is null */
+var6 = 0; /* is null */
 } else {
-var7 = 1; /* arg is null and recv is not */
+var6 = 1; /* arg is null and recv is not */
 }
 if (0) {
-{ /* Inline kernel#Object#!= (var_cache,var6) on <var_cache:nullable Array[MPropDef]> */
-var_other = var6;
+{ /* Inline kernel#Object#!= (var_cache,((val*)NULL)) on <var_cache:nullable Array[MPropDef]> */
+var_other = ((val*)NULL);
 {
-var10 = ((short int (*)(val* self, val* p0))(var_cache->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cache, var_other) /* == on <var_cache:nullable Array[MPropDef](Array[MPropDef])>*/;
+var9 = ((short int(*)(val* self, val* p0))(var_cache->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_cache, var_other); /* == on <var_cache:nullable Array[MPropDef](Array[MPropDef])>*/
 }
-var11 = !var10;
-var8 = var11;
-goto RET_LABEL9;
-RET_LABEL9:(void)0;
+var10 = !var9;
+var7 = var10;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
 }
-var7 = var8;
+var6 = var7;
 }
-if (var7){
+if (var6){
 var = var_cache;
 goto RET_LABEL;
 } else {
 }
 {
-var12 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var11 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
-var13 = !var12;
-if (unlikely(!var13)) {
+var12 = !var11;
+if (unlikely(!var12)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1919);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2114);
+fatal_exit(1);
 }
 {
-var14 = nit___nit__MType___has_mproperty(var_mtype, var_mmodule, self);
+var13 = nit___nit__MType___has_mproperty(var_mtype, var_mmodule, self);
 }
-if (unlikely(!var14)) {
+if (unlikely(!var13)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1920);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2115);
+fatal_exit(1);
 }
-var15 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__nit__model__MProperty__MPROPDEF]);
+var14 = NEW_standard__Array(self->type->resolution_table->types[COLOR_standard__Array__nit__model__MProperty__MPROPDEF]);
 {
-standard___standard__Array___standard__kernel__Object__init(var15); /* Direct call array#Array#init on <var15:Array[MPropDef]>*/
+standard___standard__Array___standard__kernel__Object__init(var14); /* Direct call array#Array#init on <var14:Array[MPropDef]>*/
 }
-var_candidates = var15;
+var_candidates = var14;
 {
 { /* Inline model#MProperty#mpropdefs (self) on <self:MProperty> */
-var18 = self->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
-if (unlikely(var18 == NULL)) {
+var17 = self->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <self:MProperty> */
+if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
-var16 = var18;
-RET_LABEL17:(void)0;
+var15 = var17;
+RET_LABEL16:(void)0;
 }
 }
-var_ = var16;
+var_ = var15;
 {
-var19 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var18 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
 }
-var_20 = var19;
+var_19 = var18;
 for(;;) {
 {
-var21 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_20);
+var20 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_19);
 }
-if (var21){
+if (var20){
 {
-var22 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_20);
+var21 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_19);
 }
-var_mpropdef = var22;
+var_mpropdef = var21;
 {
 { /* Inline mmodule#MModule#in_importation (var_mmodule) on <var_mmodule:MModule> */
-var25 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
-if (unlikely(var25 == NULL)) {
+var24 = var_mmodule->attrs[COLOR_nit__mmodule__MModule___in_importation].val; /* _in_importation on <var_mmodule:MModule> */
+if (unlikely(var24 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 96);
-show_backtrace(1);
+fatal_exit(1);
 }
-var23 = var25;
-RET_LABEL24:(void)0;
+var22 = var24;
+RET_LABEL23:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
-var28 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var28 == NULL)) {
+var27 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+if (unlikely(var27 == 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);
 }
-var26 = var28;
-RET_LABEL27:(void)0;
+var25 = var27;
+RET_LABEL26:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var26) on <var26:MClassDef> */
-var31 = var26->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var26:MClassDef> */
-if (unlikely(var31 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var25) on <var25:MClassDef> */
+var30 = var25->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var25:MClassDef> */
+if (unlikely(var30 == 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);
 }
-var29 = var31;
-RET_LABEL30:(void)0;
+var28 = var30;
+RET_LABEL29:(void)0;
 }
 }
 {
-var32 = poset___poset__POSetElement____60d_61d(var23, var29);
+var31 = poset___poset__POSetElement____60d_61d(var22, var28);
 }
-var33 = !var32;
-if (var33){
+var32 = !var31;
+if (var32){
 goto BREAK_label;
 } else {
 }
-var34 = NULL;
 {
 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
-var37 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
-if (unlikely(var37 == NULL)) {
+var35 = var_mpropdef->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
+if (unlikely(var35 == 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);
 }
-var35 = var37;
-RET_LABEL36:(void)0;
+var33 = var35;
+RET_LABEL34:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#bound_mtype (var35) on <var35:MClassDef> */
-var40 = var35->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var35:MClassDef> */
-if (unlikely(var40 == NULL)) {
+{ /* Inline model#MClassDef#bound_mtype (var33) on <var33:MClassDef> */
+var38 = var33->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var33:MClassDef> */
+if (unlikely(var38 == 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);
 }
-var38 = var40;
-RET_LABEL39:(void)0;
+var36 = var38;
+RET_LABEL37:(void)0;
 }
 }
 {
-var41 = nit___nit__MType___is_subtype(var_mtype, var_mmodule, var34, var38);
+var39 = nit___nit__MType___is_subtype(var_mtype, var_mmodule, ((val*)NULL), var36);
 }
-var42 = !var41;
-if (var42){
+var40 = !var39;
+if (var40){
 goto BREAK_label;
 } else {
 }
@@ -4739,58 +5923,55 @@ standard___standard__Array___standard__abstract_collection__SimpleCollection__ad
 }
 BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_20); /* Direct call array#ArrayIterator#next on <var_20:ArrayIterator[MPropDef]>*/
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_19); /* Direct call array#ArrayIterator#next on <var_19:ArrayIterator[MPropDef]>*/
 }
 } else {
-goto BREAK_label43;
+goto BREAK_label41;
 }
 }
-BREAK_label43: (void)0;
+BREAK_label41: (void)0;
 {
-{ /* Inline abstract_collection#Iterator#finish (var_20) on <var_20:ArrayIterator[MPropDef]> */
-RET_LABEL44:(void)0;
-}
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_19); /* Direct call array#ArrayIterator#finish on <var_19:ArrayIterator[MPropDef]>*/
 }
 {
 { /* Inline array#AbstractArrayRead#length (var_candidates) on <var_candidates:Array[MPropDef]> */
-var47 = var_candidates->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
-var45 = var47;
-RET_LABEL46:(void)0;
+var44 = var_candidates->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_candidates:Array[MPropDef]> */
+var42 = var44;
+RET_LABEL43:(void)0;
 }
 }
-var48 = 1;
 {
-{ /* Inline kernel#Int#<= (var45,var48) on <var45:Int> */
-/* Covariant cast for argument 0 (i) <var48:Int> isa OTHER */
-/* <var48:Int> isa OTHER */
-var51 = 1; /* easy <var48:Int> isa OTHER*/
-if (unlikely(!var51)) {
+{ /* Inline kernel#Int#<= (var42,1l) on <var42:Int> */
+/* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
+/* <1l:Int> isa OTHER */
+var47 = 1; /* easy <1l:Int> isa OTHER*/
+if (unlikely(!var47)) {
 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, 409);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 533);
+fatal_exit(1);
 }
-var52 = var45 <= var48;
-var49 = var52;
-goto RET_LABEL50;
-RET_LABEL50:(void)0;
+var48 = var42 <= 1l;
+var45 = var48;
+goto RET_LABEL46;
+RET_LABEL46:(void)0;
 }
 }
-if (var49){
+if (var45){
 {
 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
-var55 = self->attrs[COLOR_nit__model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
-if (unlikely(var55 == NULL)) {
+var51 = self->attrs[COLOR_nit__model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
+if (unlikely(var51 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1945);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2140);
+fatal_exit(1);
 }
-var53 = var55;
-RET_LABEL54:(void)0;
+var49 = var51;
+RET_LABEL50:(void)0;
 }
 }
 {
-more_collections___more_collections__HashMap2____91d_93d_61d(var53, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var53:HashMap2[MModule, MType, Array[MPropDef]]>*/
+more_collections___more_collections__HashMap2____91d_93d_61d(var49, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var49:HashMap2[MModule, MType, Array[MPropDef]]>*/
 }
 var = var_candidates;
 goto RET_LABEL;
@@ -4800,23 +5981,23 @@ goto RET_LABEL;
 nit__model___MModule___linearize_mpropdefs(var_mmodule, var_candidates); /* Direct call model#MModule#linearize_mpropdefs on <var_mmodule:MModule>*/
 }
 {
-var56 = standard___standard__AbstractArrayRead___reversed(var_candidates);
+var52 = standard___standard__AbstractArrayRead___reversed(var_candidates);
 }
-var_candidates = var56;
+var_candidates = var52;
 {
 { /* Inline model#MProperty#lookup_all_definitions_cache (self) on <self:MProperty> */
-var59 = self->attrs[COLOR_nit__model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
-if (unlikely(var59 == NULL)) {
+var55 = self->attrs[COLOR_nit__model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
+if (unlikely(var55 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1945);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2140);
+fatal_exit(1);
 }
-var57 = var59;
-RET_LABEL58:(void)0;
+var53 = var55;
+RET_LABEL54:(void)0;
 }
 }
 {
-more_collections___more_collections__HashMap2____91d_93d_61d(var57, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var57:HashMap2[MModule, MType, Array[MPropDef]]>*/
+more_collections___more_collections__HashMap2____91d_93d_61d(var53, var_mmodule, var_mtype, var_candidates); /* Direct call more_collections#HashMap2#[]= on <var53:HashMap2[MModule, MType, Array[MPropDef]]>*/
 }
 var = var_candidates;
 goto RET_LABEL;
@@ -4830,8 +6011,8 @@ val* var1 /* : HashMap2[MModule, MType, Array[MPropDef]] */;
 var1 = self->attrs[COLOR_nit__model__MProperty___lookup_all_definitions_cache].val; /* _lookup_all_definitions_cache on <self:MProperty> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _lookup_all_definitions_cache");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1945);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2140);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4912,6 +6093,120 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
+/* method model#MMethod#is_null_safe for (self: MMethod): Bool */
+short int nit___nit__MMethod___is_null_safe(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+val* var3 /* : String */;
+val* var5 /* : String */;
+static val* varonce;
+val* var6 /* : String */;
+char* var7 /* : NativeString */;
+val* var8 /* : FlatString */;
+short int var9 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var10 /* : String */;
+val* var12 /* : String */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+val* var16 /* : FlatString */;
+short int var17 /* : Bool */;
+short int var_18 /* var : Bool */;
+val* var19 /* : String */;
+val* var21 /* : String */;
+static val* varonce22;
+val* var23 /* : String */;
+char* var24 /* : NativeString */;
+val* var25 /* : FlatString */;
+short int var26 /* : Bool */;
+{
+{ /* Inline model#MProperty#name (self) on <self:MMethod> */
+var5 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MMethod> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+if (likely(varonce!=NULL)) {
+var6 = varonce;
+} else {
+var7 = "==";
+var8 = standard___standard__NativeString___to_s_with_length(var7, 2l);
+var6 = var8;
+varonce = var6;
+}
+{
+var9 = ((short int(*)(val* self, val* p0))(var3->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var3, var6); /* == on <var3:String>*/
+}
+var_ = var9;
+if (var9){
+var2 = var_;
+} else {
+{
+{ /* Inline model#MProperty#name (self) on <self:MMethod> */
+var12 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MMethod> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+if (likely(varonce13!=NULL)) {
+var14 = varonce13;
+} else {
+var15 = "!=";
+var16 = standard___standard__NativeString___to_s_with_length(var15, 2l);
+var14 = var16;
+varonce13 = var14;
+}
+{
+var17 = ((short int(*)(val* self, val* p0))(var10->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var10, var14); /* == on <var10:String>*/
+}
+var2 = var17;
+}
+var_18 = var2;
+if (var2){
+var1 = var_18;
+} else {
+{
+{ /* Inline model#MProperty#name (self) on <self:MMethod> */
+var21 = self->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <self:MMethod> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1933);
+fatal_exit(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+if (likely(varonce22!=NULL)) {
+var23 = varonce22;
+} else {
+var24 = "is_same_instance";
+var25 = standard___standard__NativeString___to_s_with_length(var24, 16l);
+var23 = var25;
+varonce22 = var23;
+}
+{
+var26 = ((short int(*)(val* self, val* p0))(var19->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var19, var23); /* == on <var19:String>*/
+}
+var1 = var26;
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
 /* method model#MVirtualTypeProp#mvirtualtype for (self: MVirtualTypeProp): MVirtualType */
 val* nit___nit__MVirtualTypeProp___mvirtualtype(val* self) {
 val* var /* : MVirtualType */;
@@ -4919,8 +6214,8 @@ val* var1 /* : MVirtualType */;
 var1 = self->attrs[COLOR_nit__model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <self:MVirtualTypeProp> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1992);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2191);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -4933,8 +6228,8 @@ val* var1 /* : MClassDef */;
 var1 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
 if (unlikely(var1 == 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);
 }
 var = var1;
 RET_LABEL:;
@@ -4952,8 +6247,8 @@ val* var1 /* : MProperty */;
 var1 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var1 == 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);
 }
 var = var1;
 RET_LABEL:;
@@ -4979,8 +6274,8 @@ var = p0->type->type_table[cltype] == idtype;
 if (unlikely(!var)) {
 var_class_name = p0 == NULL ? "null" : p0->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPERTY", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
 self->attrs[COLOR_nit__model__MPropDef___mproperty].val = p0; /* _mproperty on <self:MPropDef> */
 RET_LABEL:;
@@ -4992,8 +6287,8 @@ val* var1 /* : Location */;
 var1 = self->attrs[COLOR_nit__model__MPropDef___location].val; /* _location on <self:MPropDef> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _location");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2016);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2215);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -5035,29 +6330,29 @@ int cltype;
 int idtype;
 const struct type* type_struct;
 const char* var_class_name;
-val* var36 /* : MClassDef */;
-val* var38 /* : MClassDef */;
+val* var36 /* : NativeArray[String] */;
 static val* varonce;
-val* var39 /* : String */;
-char* var40 /* : NativeString */;
-long var41 /* : Int */;
-val* var42 /* : FlatString */;
-val* var43 /* : MProperty */;
+static val* varonce37;
+val* var38 /* : String */;
+char* var39 /* : NativeString */;
+val* var40 /* : FlatString */;
+val* var41 /* : MClassDef */;
+val* var43 /* : MClassDef */;
+val* var44 /* : String */;
 val* var45 /* : MProperty */;
-val* var46 /* : Array[Object] */;
-long var47 /* : Int */;
-val* var48 /* : NativeArray[Object] */;
+val* var47 /* : MProperty */;
+val* var48 /* : String */;
 val* var49 /* : String */;
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MPropDef___standard__kernel__Object__init]))(self) /* init on <self:MPropDef>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MPropDef___standard__kernel__Object__init]))(self); /* init on <self:MPropDef>*/
 }
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
 var2 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self: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);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
+fatal_exit(1);
 }
 var = var2;
 RET_LABEL1:(void)0;
@@ -5068,8 +6363,8 @@ RET_LABEL1:(void)0;
 var5 = var->attrs[COLOR_nit__model__MClassDef___mpropdefs].val; /* _mpropdefs on <var:MClassDef> */
 if (unlikely(var5 == 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);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -5083,8 +6378,8 @@ standard___standard__Array___standard__abstract_collection__SimpleCollection__ad
 var8 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self: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);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
 var6 = var8;
 RET_LABEL7:(void)0;
@@ -5095,8 +6390,8 @@ RET_LABEL7:(void)0;
 var11 = var6->attrs[COLOR_nit__model__MProperty___mpropdefs].val; /* _mpropdefs on <var6:MProperty> */
 if (unlikely(var11 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1768);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1963);
+fatal_exit(1);
 }
 var9 = var11;
 RET_LABEL10:(void)0;
@@ -5110,8 +6405,8 @@ standard___standard__Array___standard__abstract_collection__SimpleCollection__ad
 var14 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var14 == 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);
 }
 var12 = var14;
 RET_LABEL13:(void)0;
@@ -5122,8 +6417,8 @@ RET_LABEL13:(void)0;
 var17 = var12->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var12:MProperty> */
 if (unlikely(var17 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
 var15 = var17;
 RET_LABEL16:(void)0;
@@ -5134,8 +6429,8 @@ RET_LABEL16:(void)0;
 var20 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
 if (unlikely(var20 == 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);
 }
 var18 = var20;
 RET_LABEL19:(void)0;
@@ -5163,8 +6458,8 @@ if (var21){
 var28 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var28 == 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);
 }
 var26 = var28;
 RET_LABEL27:(void)0;
@@ -5174,16 +6469,16 @@ var29 = var26->attrs[COLOR_nit__model__MProperty___intro].val != NULL; /* _intro
 var30 = !var29;
 if (unlikely(!var30)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2024);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2223);
+fatal_exit(1);
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
 var33 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var33 == 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);
 }
 var31 = var33;
 RET_LABEL32:(void)0;
@@ -5204,8 +6499,8 @@ var35 = self->type->type_table[cltype] == idtype;
 if (unlikely(!var35)) {
 var_class_name = self == NULL ? "null" : self->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
 var31->attrs[COLOR_nit__model__MProperty___intro].val = self; /* _intro on <var31:MProperty> */
 RET_LABEL34:(void)0;
@@ -5213,53 +6508,57 @@ RET_LABEL34:(void)0;
 }
 } else {
 }
+if (unlikely(varonce==NULL)) {
+var36 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce37!=NULL)) {
+var38 = varonce37;
+} else {
+var39 = "#";
+var40 = standard___standard__NativeString___to_s_with_length(var39, 1l);
+var38 = var40;
+varonce37 = var38;
+}
+((struct instance_standard__NativeArray*)var36)->values[1]=var38;
+} else {
+var36 = varonce;
+varonce = NULL;
+}
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var38 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var38 == NULL)) {
+var43 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var43 == 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);
 }
-var36 = var38;
-RET_LABEL37:(void)0;
+var41 = var43;
+RET_LABEL42:(void)0;
 }
 }
-if (varonce) {
-var39 = varonce;
-} else {
-var40 = "#";
-var41 = 1;
-var42 = standard___standard__NativeString___to_s_with_length(var40, var41);
-var39 = var42;
-varonce = var39;
+{
+var44 = ((val*(*)(val* self))(var41->class->vft[COLOR_standard__string__Object__to_s]))(var41); /* to_s on <var41:MClassDef>*/
 }
+((struct instance_standard__NativeArray*)var36)->values[0]=var44;
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var45 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var45 == NULL)) {
+var47 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var47 == 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);
 }
-var43 = var45;
-RET_LABEL44:(void)0;
+var45 = var47;
+RET_LABEL46:(void)0;
 }
 }
-var46 = NEW_standard__Array(&type_standard__Array__standard__Object);
-{ /* var46 = array_instance Array[Object] */
-var47 = 3;
-var48 = NEW_standard__NativeArray(var47, &type_standard__NativeArray__standard__Object);
-((struct instance_standard__NativeArray*)var48)->values[0] = (val*) var36;
-((struct instance_standard__NativeArray*)var48)->values[1] = (val*) var39;
-((struct instance_standard__NativeArray*)var48)->values[2] = (val*) var43;
 {
-((void (*)(val* self, val* p0, long p1))(var46->class->vft[COLOR_standard__array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
-}
+var48 = ((val*(*)(val* self))(var45->class->vft[COLOR_standard__string__Object__to_s]))(var45); /* to_s on <var45:MProperty>*/
 }
+((struct instance_standard__NativeArray*)var36)->values[2]=var48;
 {
-var49 = ((val* (*)(val* self))(var46->class->vft[COLOR_standard__string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
+var49 = ((val*(*)(val* self))(var36->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var36); /* native_to_s on <var36:NativeArray[String]>*/
 }
+varonce = var36;
 {
 { /* Inline model#MPropDef#to_s= (self,var49) on <self:MPropDef> */
 self->attrs[COLOR_nit__model__MPropDef___to_s].val = var49; /* _to_s on <self:MPropDef> */
@@ -5280,8 +6579,8 @@ val* var6 /* : String */;
 var3 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var3 == 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);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -5292,8 +6591,8 @@ RET_LABEL2:(void)0;
 var6 = var1->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var1:MProperty> */
 if (unlikely(var6 == 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);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -5318,132 +6617,128 @@ val* var10 /* : String */;
 static val* varonce;
 val* var11 /* : String */;
 char* var12 /* : NativeString */;
-long var13 /* : Int */;
-val* var14 /* : FlatString */;
-val* var15 /* : MClassDef */;
-val* var17 /* : MClassDef */;
-val* var18 /* : MClass */;
-val* var20 /* : MClass */;
-val* var21 /* : MProperty */;
-val* var23 /* : MProperty */;
-val* var24 /* : MClassDef */;
-val* var26 /* : MClassDef */;
-val* var27 /* : MClass */;
-val* var29 /* : MClass */;
-short int var30 /* : Bool */;
+val* var13 /* : FlatString */;
+val* var14 /* : MClassDef */;
+val* var16 /* : MClassDef */;
+val* var17 /* : MClass */;
+val* var19 /* : MClass */;
+val* var20 /* : MProperty */;
+val* var22 /* : MProperty */;
+val* var23 /* : MClassDef */;
+val* var25 /* : MClassDef */;
+val* var26 /* : MClass */;
+val* var28 /* : MClass */;
+short int var29 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var32 /* : Bool */;
-short int var34 /* : Bool */;
-val* var35 /* : String */;
-val* var36 /* : MClassDef */;
-val* var38 /* : MClassDef */;
-val* var39 /* : MModule */;
-val* var41 /* : MModule */;
-val* var42 /* : nullable MProject */;
-val* var43 /* : MProperty */;
-val* var45 /* : MProperty */;
-val* var46 /* : MClassDef */;
-val* var48 /* : MClassDef */;
-val* var49 /* : MModule */;
-val* var51 /* : MModule */;
-val* var52 /* : nullable MProject */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+val* var34 /* : String */;
+val* var35 /* : MClassDef */;
+val* var37 /* : MClassDef */;
+val* var38 /* : MModule */;
+val* var40 /* : MModule */;
+val* var41 /* : nullable MProject */;
+val* var42 /* : MProperty */;
+val* var44 /* : MProperty */;
+val* var45 /* : MClassDef */;
+val* var47 /* : MClassDef */;
+val* var48 /* : MModule */;
+val* var50 /* : MModule */;
+val* var51 /* : nullable MProject */;
+short int var52 /* : Bool */;
 short int var53 /* : Bool */;
-short int var54 /* : Bool */;
-val* var_other56 /* var other: nullable Object */;
+val* var_other55 /* var other: nullable Object */;
+short int var56 /* : Bool */;
 short int var57 /* : Bool */;
-short int var58 /* : Bool */;
-val* var59 /* : MProperty */;
-val* var61 /* : MProperty */;
-val* var62 /* : MClassDef */;
-val* var64 /* : MClassDef */;
-val* var65 /* : MModule */;
-val* var67 /* : MModule */;
-val* var68 /* : String */;
-static val* varonce69;
-val* var70 /* : String */;
-char* var71 /* : NativeString */;
-long var72 /* : Int */;
-val* var73 /* : FlatString */;
+val* var58 /* : MProperty */;
+val* var60 /* : MProperty */;
+val* var61 /* : MClassDef */;
+val* var63 /* : MClassDef */;
+val* var64 /* : MModule */;
+val* var66 /* : MModule */;
+val* var67 /* : String */;
+static val* varonce68;
+val* var69 /* : String */;
+char* var70 /* : NativeString */;
+val* var71 /* : FlatString */;
+val* var72 /* : MProperty */;
 val* var74 /* : MProperty */;
-val* var76 /* : MProperty */;
+val* var75 /* : MVisibility */;
 val* var77 /* : MVisibility */;
+val* var78 /* : Sys */;
 val* var79 /* : MVisibility */;
-val* var80 /* : MVisibility */;
-short int var81 /* : Bool */;
-val* var82 /* : MClassDef */;
-val* var84 /* : MClassDef */;
-val* var85 /* : MModule */;
-val* var87 /* : MModule */;
-val* var88 /* : MClassDef */;
-val* var90 /* : MClassDef */;
-val* var91 /* : MClass */;
-val* var93 /* : MClass */;
-val* var94 /* : MVisibility */;
-val* var96 /* : MVisibility */;
-val* var97 /* : String */;
-val* var98 /* : MProperty */;
-val* var100 /* : MProperty */;
-val* var101 /* : MClassDef */;
-val* var103 /* : MClassDef */;
-val* var104 /* : MModule */;
-val* var106 /* : MModule */;
-val* var107 /* : nullable MProject */;
-short int var108 /* : Bool */;
+short int var80 /* : Bool */;
+val* var81 /* : MClassDef */;
+val* var83 /* : MClassDef */;
+val* var84 /* : MModule */;
+val* var86 /* : MModule */;
+val* var87 /* : MClassDef */;
+val* var89 /* : MClassDef */;
+val* var90 /* : MClass */;
+val* var92 /* : MClass */;
+val* var93 /* : MVisibility */;
+val* var95 /* : MVisibility */;
+val* var96 /* : String */;
+val* var97 /* : MProperty */;
+val* var99 /* : MProperty */;
+val* var100 /* : MClassDef */;
+val* var102 /* : MClassDef */;
+val* var103 /* : MModule */;
+val* var105 /* : MModule */;
+val* var106 /* : nullable MProject */;
+short int var107 /* : Bool */;
+short int var109 /* : Bool */;
 short int var110 /* : Bool */;
-short int var111 /* : Bool */;
-static val* varonce112;
-val* var113 /* : String */;
-char* var114 /* : NativeString */;
-long var115 /* : Int */;
-val* var116 /* : FlatString */;
+static val* varonce111;
+val* var112 /* : String */;
+char* var113 /* : NativeString */;
+val* var114 /* : FlatString */;
+val* var115 /* : MProperty */;
 val* var117 /* : MProperty */;
-val* var119 /* : MProperty */;
+val* var118 /* : MClassDef */;
 val* var120 /* : MClassDef */;
-val* var122 /* : MClassDef */;
+val* var121 /* : MModule */;
 val* var123 /* : MModule */;
-val* var125 /* : MModule */;
+val* var124 /* : String */;
 val* var126 /* : String */;
+static val* varonce127;
 val* var128 /* : String */;
-static val* varonce129;
-val* var130 /* : String */;
-char* var131 /* : NativeString */;
-long var132 /* : Int */;
-val* var133 /* : FlatString */;
-val* var134 /* : MClassDef */;
-val* var136 /* : MClassDef */;
-val* var137 /* : MClass */;
-val* var139 /* : MClass */;
-val* var140 /* : MProperty */;
-val* var142 /* : MProperty */;
-val* var143 /* : MClassDef */;
-val* var145 /* : MClassDef */;
-val* var146 /* : MClass */;
-val* var148 /* : MClass */;
+char* var129 /* : NativeString */;
+val* var130 /* : FlatString */;
+val* var131 /* : MClassDef */;
+val* var133 /* : MClassDef */;
+val* var134 /* : MClass */;
+val* var136 /* : MClass */;
+val* var137 /* : MProperty */;
+val* var139 /* : MProperty */;
+val* var140 /* : MClassDef */;
+val* var142 /* : MClassDef */;
+val* var143 /* : MClass */;
+val* var145 /* : MClass */;
+short int var146 /* : Bool */;
+short int var148 /* : Bool */;
 short int var149 /* : Bool */;
-short int var151 /* : Bool */;
-short int var152 /* : Bool */;
-val* var153 /* : MProperty */;
-val* var155 /* : MProperty */;
-val* var156 /* : MClassDef */;
-val* var158 /* : MClassDef */;
-val* var159 /* : String */;
-static val* varonce160;
-val* var161 /* : String */;
-char* var162 /* : NativeString */;
-long var163 /* : Int */;
-val* var164 /* : FlatString */;
-val* var165 /* : MProperty */;
-val* var167 /* : MProperty */;
-val* var168 /* : String */;
-val* var170 /* : String */;
-val* var171 /* : String */;
+val* var150 /* : MProperty */;
+val* var152 /* : MProperty */;
+val* var153 /* : MClassDef */;
+val* var155 /* : MClassDef */;
+val* var156 /* : String */;
+static val* varonce157;
+val* var158 /* : String */;
+char* var159 /* : NativeString */;
+val* var160 /* : FlatString */;
+val* var161 /* : MProperty */;
+val* var163 /* : MProperty */;
+val* var164 /* : String */;
+val* var166 /* : String */;
+val* var167 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MPropDef___full_name].val != NULL; /* _full_name on <self:MPropDef> */
 if(likely(var1)) {
 var2 = self->attrs[COLOR_nit__model__MPropDef___full_name].val; /* _full_name on <self:MPropDef> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _full_name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2033);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2232);
+fatal_exit(1);
 }
 } else {
 {
@@ -5451,7 +6746,7 @@ var5 = NEW_standard__FlatBuffer(&type_standard__FlatBuffer);
 {
 { /* Inline string#FlatBuffer#init (var5) on <var5:FlatBuffer> */
 {
-((void (*)(val* self))(var5->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var5) /* init on <var5:FlatBuffer>*/;
+((void(*)(val* self))(var5->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var5); /* init on <var5:FlatBuffer>*/
 }
 RET_LABEL6:(void)0;
 }
@@ -5462,8 +6757,8 @@ var_res = var5;
 var9 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
 if (unlikely(var9 == 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);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -5475,13 +6770,12 @@ var10 = nit___nit__MClassDef___nit__model_base__MEntity__full_name(var7);
 {
 standard___standard__FlatBuffer___Buffer__append(var_res, var10); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var11 = varonce;
 } else {
 var12 = "#";
-var13 = 1;
-var14 = standard___standard__NativeString___to_s_with_length(var12, var13);
-var11 = var14;
+var13 = standard___standard__NativeString___to_s_with_length(var12, 1l);
+var11 = var13;
 varonce = var11;
 }
 {
@@ -5489,445 +6783,443 @@ standard___standard__FlatBuffer___Buffer__append(var_res, var11); /* Direct call
 }
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var17 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var17 == NULL)) {
+var16 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var16 == 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);
 }
-var15 = var17;
-RET_LABEL16:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var15) on <var15:MClassDef> */
-var20 = var15->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var15:MClassDef> */
-if (unlikely(var20 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var14) on <var14:MClassDef> */
+var19 = var14->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var14:MClassDef> */
+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, 553);
+fatal_exit(1);
 }
-var18 = var20;
-RET_LABEL19:(void)0;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var23 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var23 == NULL)) {
+var22 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var22 == 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);
 }
-var21 = var23;
-RET_LABEL22:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var21) on <var21:MProperty> */
-var26 = var21->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var21:MProperty> */
-if (unlikely(var26 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var20) on <var20:MProperty> */
+var25 = var20->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var20:MProperty> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var24) on <var24:MClassDef> */
-var29 = var24->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var24:MClassDef> */
-if (unlikely(var29 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var23) on <var23:MClassDef> */
+var28 = var23->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var23:MClassDef> */
+if (unlikely(var28 == 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);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var26 = var28;
+RET_LABEL27:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var18,var27) on <var18:MClass> */
-var_other = var27;
+{ /* Inline kernel#Object#== (var17,var26) on <var17:MClass> */
+var_other = var26;
 {
-{ /* Inline kernel#Object#is_same_instance (var18,var_other) on <var18:MClass> */
-var34 = var18 == var_other;
-var32 = var34;
-goto RET_LABEL33;
-RET_LABEL33:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var17,var_other) on <var17:MClass> */
+var33 = var17 == var_other;
+var31 = var33;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
 }
 }
-var30 = var32;
-goto RET_LABEL31;
-RET_LABEL31:(void)0;
+var29 = var31;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
 }
 }
-if (var30){
+if (var29){
 {
-var35 = nit___nit__MPropDef___nit__model_base__MEntity__name(self);
+var34 = nit___nit__MPropDef___nit__model_base__MEntity__name(self);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var35); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var34); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 } else {
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var38 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var38 == NULL)) {
+var37 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var37 == 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);
 }
-var36 = var38;
-RET_LABEL37:(void)0;
+var35 = var37;
+RET_LABEL36:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var36) on <var36:MClassDef> */
-var41 = var36->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var36:MClassDef> */
-if (unlikely(var41 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var35) on <var35:MClassDef> */
+var40 = var35->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var35:MClassDef> */
+if (unlikely(var40 == 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);
 }
-var39 = var41;
-RET_LABEL40:(void)0;
+var38 = var40;
+RET_LABEL39:(void)0;
 }
 }
 {
-var42 = nit___nit__MModule___mproject(var39);
+var41 = nit___nit__MModule___mproject(var38);
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var45 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var45 == NULL)) {
+var44 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var44 == 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);
 }
-var43 = var45;
-RET_LABEL44:(void)0;
+var42 = var44;
+RET_LABEL43:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var43) on <var43:MProperty> */
-var48 = var43->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var43:MProperty> */
-if (unlikely(var48 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var42) on <var42:MProperty> */
+var47 = var42->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var42:MProperty> */
+if (unlikely(var47 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var46 = var48;
-RET_LABEL47:(void)0;
+var45 = var47;
+RET_LABEL46:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var46) on <var46:MClassDef> */
-var51 = var46->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var46:MClassDef> */
-if (unlikely(var51 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var45) on <var45:MClassDef> */
+var50 = var45->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var45:MClassDef> */
+if (unlikely(var50 == 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);
 }
-var49 = var51;
-RET_LABEL50:(void)0;
+var48 = var50;
+RET_LABEL49:(void)0;
 }
 }
 {
-var52 = nit___nit__MModule___mproject(var49);
+var51 = nit___nit__MModule___mproject(var48);
 }
-if (var42 == NULL) {
-var53 = (var52 != NULL);
+if (var41 == NULL) {
+var52 = (var51 != NULL);
 } else {
-{ /* Inline kernel#Object#!= (var42,var52) on <var42:nullable MProject> */
-var_other56 = var52;
+{ /* Inline kernel#Object#!= (var41,var51) on <var41:nullable MProject> */
+var_other55 = var51;
 {
-var57 = ((short int (*)(val* self, val* p0))(var42->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var42, var_other56) /* == on <var42:nullable MProject(MProject)>*/;
+var56 = ((short int(*)(val* self, val* p0))(var41->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var41, var_other55); /* == on <var41:nullable MProject(MProject)>*/
 }
-var58 = !var57;
-var54 = var58;
-goto RET_LABEL55;
-RET_LABEL55:(void)0;
+var57 = !var56;
+var53 = var57;
+goto RET_LABEL54;
+RET_LABEL54:(void)0;
 }
-var53 = var54;
+var52 = var53;
 }
-if (var53){
+if (var52){
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var61 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var61 == NULL)) {
+var60 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var60 == 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);
 }
-var59 = var61;
-RET_LABEL60:(void)0;
+var58 = var60;
+RET_LABEL59:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var59) on <var59:MProperty> */
-var64 = var59->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var59:MProperty> */
-if (unlikely(var64 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var58) on <var58:MProperty> */
+var63 = var58->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var58:MProperty> */
+if (unlikely(var63 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var62 = var64;
-RET_LABEL63:(void)0;
+var61 = var63;
+RET_LABEL62:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var62) on <var62:MClassDef> */
-var67 = var62->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var62:MClassDef> */
-if (unlikely(var67 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var61) on <var61:MClassDef> */
+var66 = var61->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var61:MClassDef> */
+if (unlikely(var66 == 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);
 }
-var65 = var67;
-RET_LABEL66:(void)0;
+var64 = var66;
+RET_LABEL65:(void)0;
 }
 }
 {
-var68 = nit___nit__MModule___nit__model_base__MEntity__full_name(var65);
+var67 = nit___nit__MModule___nit__model_base__MEntity__full_name(var64);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var68); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var67); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
-if (varonce69) {
-var70 = varonce69;
+if (likely(varonce68!=NULL)) {
+var69 = varonce68;
 } else {
-var71 = "::";
-var72 = 2;
-var73 = standard___standard__NativeString___to_s_with_length(var71, var72);
-var70 = var73;
-varonce69 = var70;
+var70 = "::";
+var71 = standard___standard__NativeString___to_s_with_length(var70, 2l);
+var69 = var71;
+varonce68 = var69;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var70); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var69); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 } else {
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var76 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var76 == NULL)) {
+var74 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+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);
 }
-var74 = var76;
-RET_LABEL75:(void)0;
+var72 = var74;
+RET_LABEL73:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#visibility (var74) on <var74:MProperty> */
-var79 = var74->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var74:MProperty> */
-if (unlikely(var79 == NULL)) {
+{ /* Inline model#MProperty#visibility (var72) on <var72:MProperty> */
+var77 = var72->attrs[COLOR_nit__model__MProperty___visibility].val; /* _visibility on <var72:MProperty> */
+if (unlikely(var77 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _visibility");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1757);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1949);
+fatal_exit(1);
 }
-var77 = var79;
-RET_LABEL78:(void)0;
+var75 = var77;
+RET_LABEL76:(void)0;
 }
 }
+var78 = glob_sys;
 {
-var80 = nit__model_base___standard__Object___private_visibility(self);
+var79 = nit__model_base___standard__Sys___private_visibility(var78);
 }
 {
-var81 = standard___standard__Comparable____60d_61d(var77, var80);
+var80 = standard___standard__Comparable____60d_61d(var75, var79);
 }
-if (var81){
+if (var80){
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var84 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var84 == NULL)) {
+var83 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var83 == 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);
 }
-var82 = var84;
-RET_LABEL83:(void)0;
+var81 = var83;
+RET_LABEL82:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var82) on <var82:MClassDef> */
-var87 = var82->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var82:MClassDef> */
-if (unlikely(var87 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var81) on <var81:MClassDef> */
+var86 = var81->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var81:MClassDef> */
+if (unlikely(var86 == 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);
 }
-var85 = var87;
-RET_LABEL86:(void)0;
+var84 = var86;
+RET_LABEL85:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var90 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var90 == NULL)) {
+var89 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var89 == 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);
 }
-var88 = var90;
-RET_LABEL89:(void)0;
+var87 = var89;
+RET_LABEL88:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var88) on <var88:MClassDef> */
-var93 = var88->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var88:MClassDef> */
-if (unlikely(var93 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var87) on <var87:MClassDef> */
+var92 = var87->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var87:MClassDef> */
+if (unlikely(var92 == 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);
 }
-var91 = var93;
-RET_LABEL92:(void)0;
+var90 = var92;
+RET_LABEL91:(void)0;
 }
 }
 {
-{ /* Inline model#MClass#visibility (var91) on <var91:MClass> */
-var96 = var91->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var91:MClass> */
-if (unlikely(var96 == NULL)) {
+{ /* Inline model#MClass#visibility (var90) on <var90:MClass> */
+var95 = var90->attrs[COLOR_nit__model__MClass___visibility].val; /* _visibility on <var90:MClass> */
+if (unlikely(var95 == 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);
 }
-var94 = var96;
-RET_LABEL95:(void)0;
+var93 = var95;
+RET_LABEL94:(void)0;
 }
 }
 {
-var97 = nit___nit__MModule___namespace_for(var85, var94);
+var96 = nit___nit__MModule___namespace_for(var84, var93);
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var100 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var100 == NULL)) {
+var99 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var99 == 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);
 }
-var98 = var100;
-RET_LABEL99:(void)0;
+var97 = var99;
+RET_LABEL98:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var98) on <var98:MProperty> */
-var103 = var98->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var98:MProperty> */
-if (unlikely(var103 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var97) on <var97:MProperty> */
+var102 = var97->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var97:MProperty> */
+if (unlikely(var102 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var101 = var103;
-RET_LABEL102:(void)0;
+var100 = var102;
+RET_LABEL101:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var101) on <var101:MClassDef> */
-var106 = var101->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var101:MClassDef> */
-if (unlikely(var106 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var100) on <var100:MClassDef> */
+var105 = var100->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var100:MClassDef> */
+if (unlikely(var105 == 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);
 }
-var104 = var106;
-RET_LABEL105:(void)0;
+var103 = var105;
+RET_LABEL104:(void)0;
 }
 }
 {
-var107 = nit___nit__MModule___mproject(var104);
+var106 = nit___nit__MModule___mproject(var103);
 }
 {
-{ /* Inline kernel#Object#!= (var97,var107) on <var97:String> */
-var_other56 = var107;
+{ /* Inline kernel#Object#!= (var96,var106) on <var96:String> */
+var_other55 = var106;
 {
-var110 = ((short int (*)(val* self, val* p0))(var97->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var97, var_other56) /* == on <var97:String>*/;
+var109 = ((short int(*)(val* self, val* p0))(var96->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var96, var_other55); /* == on <var96:String>*/
 }
-var111 = !var110;
-var108 = var111;
-goto RET_LABEL109;
-RET_LABEL109:(void)0;
+var110 = !var109;
+var107 = var110;
+goto RET_LABEL108;
+RET_LABEL108:(void)0;
 }
 }
-if (var108){
-if (varonce112) {
-var113 = varonce112;
+if (var107){
+if (likely(varonce111!=NULL)) {
+var112 = varonce111;
 } else {
-var114 = "::";
-var115 = 2;
-var116 = standard___standard__NativeString___to_s_with_length(var114, var115);
-var113 = var116;
-varonce112 = var113;
+var113 = "::";
+var114 = standard___standard__NativeString___to_s_with_length(var113, 2l);
+var112 = var114;
+varonce111 = var112;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var113); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var112); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var119 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var119 == NULL)) {
+var117 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var117 == 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);
 }
-var117 = var119;
-RET_LABEL118:(void)0;
+var115 = var117;
+RET_LABEL116:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var117) on <var117:MProperty> */
-var122 = var117->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var117:MProperty> */
-if (unlikely(var122 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var115) on <var115:MProperty> */
+var120 = var115->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var115:MProperty> */
+if (unlikely(var120 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var120 = var122;
-RET_LABEL121:(void)0;
+var118 = var120;
+RET_LABEL119:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var120) on <var120:MClassDef> */
-var125 = var120->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var120:MClassDef> */
-if (unlikely(var125 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var118) on <var118:MClassDef> */
+var123 = var118->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var118:MClassDef> */
+if (unlikely(var123 == 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);
 }
-var123 = var125;
-RET_LABEL124:(void)0;
+var121 = var123;
+RET_LABEL122:(void)0;
 }
 }
 {
-{ /* Inline mmodule#MModule#name (var123) on <var123:MModule> */
-var128 = var123->attrs[COLOR_nit__mmodule__MModule___name].val; /* _name on <var123:MModule> */
-if (unlikely(var128 == NULL)) {
+{ /* Inline mmodule#MModule#name (var121) on <var121:MModule> */
+var126 = var121->attrs[COLOR_nit__mmodule__MModule___name].val; /* _name on <var121:MModule> */
+if (unlikely(var126 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
 PRINT_ERROR(" (%s:%d)\n", FILE_nit__mmodule, 87);
-show_backtrace(1);
+fatal_exit(1);
 }
-var126 = var128;
-RET_LABEL127:(void)0;
+var124 = var126;
+RET_LABEL125:(void)0;
 }
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var126); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var124); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
-if (varonce129) {
-var130 = varonce129;
+if (likely(varonce127!=NULL)) {
+var128 = varonce127;
 } else {
-var131 = "::";
-var132 = 2;
-var133 = standard___standard__NativeString___to_s_with_length(var131, var132);
-var130 = var133;
-varonce129 = var130;
+var129 = "::";
+var130 = standard___standard__NativeString___to_s_with_length(var129, 2l);
+var128 = var130;
+varonce127 = var128;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var130); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var128); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 } else {
 }
@@ -5936,153 +7228,152 @@ standard___standard__FlatBuffer___Buffer__append(var_res, var130); /* Direct cal
 }
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var136 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var136 == NULL)) {
+var133 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var133 == 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);
+}
+var131 = var133;
+RET_LABEL132:(void)0;
+}
+}
+{
+{ /* Inline model#MClassDef#mclass (var131) on <var131:MClassDef> */
+var136 = var131->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var131:MClassDef> */
+if (unlikely(var136 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
 var134 = var136;
 RET_LABEL135:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var134) on <var134:MClassDef> */
-var139 = var134->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var134:MClassDef> */
+{ /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
+var139 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var139 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
+fatal_exit(1);
 }
 var137 = var139;
 RET_LABEL138:(void)0;
 }
 }
 {
-{ /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var142 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+{ /* Inline model#MProperty#intro_mclassdef (var137) on <var137:MProperty> */
+var142 = var137->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var137:MProperty> */
 if (unlikely(var142 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2013);
-show_backtrace(1);
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
 var140 = var142;
 RET_LABEL141:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var140) on <var140:MProperty> */
-var145 = var140->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var140:MProperty> */
+{ /* Inline model#MClassDef#mclass (var140) on <var140:MClassDef> */
+var145 = var140->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var140:MClassDef> */
 if (unlikely(var145 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
 }
 var143 = var145;
 RET_LABEL144:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var143) on <var143:MClassDef> */
-var148 = var143->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var143:MClassDef> */
-if (unlikely(var148 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 492);
-show_backtrace(1);
-}
-var146 = var148;
-RET_LABEL147:(void)0;
-}
-}
-{
-{ /* Inline kernel#Object#!= (var137,var146) on <var137:MClass> */
-var_other56 = var146;
+{ /* Inline kernel#Object#!= (var134,var143) on <var134:MClass> */
+var_other55 = var143;
 {
-var151 = ((short int (*)(val* self, val* p0))(var137->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var137, var_other56) /* == on <var137:MClass>*/;
+var148 = ((short int(*)(val* self, val* p0))(var134->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var134, var_other55); /* == on <var134:MClass>*/
 }
-var152 = !var151;
-var149 = var152;
-goto RET_LABEL150;
-RET_LABEL150:(void)0;
+var149 = !var148;
+var146 = var149;
+goto RET_LABEL147;
+RET_LABEL147:(void)0;
 }
 }
-if (var149){
+if (var146){
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var155 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var155 == NULL)) {
+var152 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var152 == 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);
 }
-var153 = var155;
-RET_LABEL154:(void)0;
+var150 = var152;
+RET_LABEL151:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var153) on <var153:MProperty> */
-var158 = var153->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var153:MProperty> */
-if (unlikely(var158 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var150) on <var150:MProperty> */
+var155 = var150->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var150:MProperty> */
+if (unlikely(var155 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var156 = var158;
-RET_LABEL157:(void)0;
+var153 = var155;
+RET_LABEL154:(void)0;
 }
 }
 {
-var159 = nit___nit__MClassDef___nit__model_base__MEntity__name(var156);
+var156 = nit___nit__MClassDef___nit__model_base__MEntity__name(var153);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var159); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var156); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
-if (varonce160) {
-var161 = varonce160;
+if (likely(varonce157!=NULL)) {
+var158 = varonce157;
 } else {
-var162 = "::";
-var163 = 2;
-var164 = standard___standard__NativeString___to_s_with_length(var162, var163);
-var161 = var164;
-varonce160 = var161;
+var159 = "::";
+var160 = standard___standard__NativeString___to_s_with_length(var159, 2l);
+var158 = var160;
+varonce157 = var158;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var161); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var158); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 } else {
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var167 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var167 == NULL)) {
+var163 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var163 == 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);
 }
-var165 = var167;
-RET_LABEL166:(void)0;
+var161 = var163;
+RET_LABEL162:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#name (var165) on <var165:MProperty> */
-var170 = var165->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var165:MProperty> */
-if (unlikely(var170 == NULL)) {
+{ /* Inline model#MProperty#name (var161) on <var161:MProperty> */
+var166 = var161->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var161:MProperty> */
+if (unlikely(var166 == 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);
 }
-var168 = var170;
-RET_LABEL169:(void)0;
+var164 = var166;
+RET_LABEL165:(void)0;
 }
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var168); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var164); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 }
 {
-var171 = standard___standard__FlatBuffer___Object__to_s(var_res);
+var167 = standard___standard__FlatBuffer___Object__to_s(var_res);
 }
-var3 = var171;
+var3 = var167;
 goto RET_LABEL4;
 RET_LABEL4:(void)0;
 }
@@ -6107,87 +7398,84 @@ val* var10 /* : String */;
 static val* varonce;
 val* var11 /* : String */;
 char* var12 /* : NativeString */;
-long var13 /* : Int */;
-val* var14 /* : FlatString */;
-val* var15 /* : MClassDef */;
-val* var17 /* : MClassDef */;
-val* var18 /* : MClass */;
-val* var20 /* : MClass */;
-val* var21 /* : MProperty */;
-val* var23 /* : MProperty */;
-val* var24 /* : MClassDef */;
-val* var26 /* : MClassDef */;
-val* var27 /* : MClass */;
-val* var29 /* : MClass */;
-short int var30 /* : Bool */;
+val* var13 /* : FlatString */;
+val* var14 /* : MClassDef */;
+val* var16 /* : MClassDef */;
+val* var17 /* : MClass */;
+val* var19 /* : MClass */;
+val* var20 /* : MProperty */;
+val* var22 /* : MProperty */;
+val* var23 /* : MClassDef */;
+val* var25 /* : MClassDef */;
+val* var26 /* : MClass */;
+val* var28 /* : MClass */;
+short int var29 /* : Bool */;
 val* var_other /* var other: nullable Object */;
-short int var32 /* : Bool */;
-short int var34 /* : Bool */;
+short int var31 /* : Bool */;
+short int var33 /* : Bool */;
+val* var34 /* : String */;
 val* var35 /* : String */;
-val* var36 /* : String */;
-val* var37 /* : MClassDef */;
-val* var39 /* : MClassDef */;
-val* var40 /* : MModule */;
-val* var42 /* : MModule */;
-val* var43 /* : MProperty */;
-val* var45 /* : MProperty */;
-val* var46 /* : MClassDef */;
-val* var48 /* : MClassDef */;
-val* var49 /* : MModule */;
-val* var51 /* : MModule */;
-short int var52 /* : Bool */;
-val* var_other54 /* var other: nullable Object */;
+val* var36 /* : MClassDef */;
+val* var38 /* : MClassDef */;
+val* var39 /* : MModule */;
+val* var41 /* : MModule */;
+val* var42 /* : MProperty */;
+val* var44 /* : MProperty */;
+val* var45 /* : MClassDef */;
+val* var47 /* : MClassDef */;
+val* var48 /* : MModule */;
+val* var50 /* : MModule */;
+short int var51 /* : Bool */;
+val* var_other53 /* var other: nullable Object */;
+short int var54 /* : Bool */;
 short int var55 /* : Bool */;
-short int var56 /* : Bool */;
-val* var57 /* : MProperty */;
-val* var59 /* : MProperty */;
-val* var60 /* : MClassDef */;
-val* var62 /* : MClassDef */;
-val* var63 /* : MModule */;
-val* var65 /* : MModule */;
-val* var66 /* : String */;
-static val* varonce67;
-val* var68 /* : String */;
-char* var69 /* : NativeString */;
-long var70 /* : Int */;
-val* var71 /* : FlatString */;
+val* var56 /* : MProperty */;
+val* var58 /* : MProperty */;
+val* var59 /* : MClassDef */;
+val* var61 /* : MClassDef */;
+val* var62 /* : MModule */;
+val* var64 /* : MModule */;
+val* var65 /* : String */;
+static val* varonce66;
+val* var67 /* : String */;
+char* var68 /* : NativeString */;
+val* var69 /* : FlatString */;
+val* var70 /* : MClassDef */;
 val* var72 /* : MClassDef */;
-val* var74 /* : MClassDef */;
+val* var73 /* : MClass */;
 val* var75 /* : MClass */;
-val* var77 /* : MClass */;
+val* var76 /* : MProperty */;
 val* var78 /* : MProperty */;
-val* var80 /* : MProperty */;
+val* var79 /* : MClassDef */;
 val* var81 /* : MClassDef */;
-val* var83 /* : MClassDef */;
+val* var82 /* : MClass */;
 val* var84 /* : MClass */;
-val* var86 /* : MClass */;
+short int var85 /* : Bool */;
 short int var87 /* : Bool */;
-short int var89 /* : Bool */;
-short int var90 /* : Bool */;
+short int var88 /* : Bool */;
+val* var89 /* : MProperty */;
 val* var91 /* : MProperty */;
-val* var93 /* : MProperty */;
+val* var92 /* : MClassDef */;
 val* var94 /* : MClassDef */;
-val* var96 /* : MClassDef */;
-val* var97 /* : String */;
+val* var95 /* : String */;
+val* var96 /* : String */;
+static val* varonce97;
 val* var98 /* : String */;
-static val* varonce99;
-val* var100 /* : String */;
-char* var101 /* : NativeString */;
-long var102 /* : Int */;
-val* var103 /* : FlatString */;
-val* var104 /* : MProperty */;
-val* var106 /* : MProperty */;
+char* var99 /* : NativeString */;
+val* var100 /* : FlatString */;
+val* var101 /* : MProperty */;
+val* var103 /* : MProperty */;
+val* var104 /* : String */;
+val* var106 /* : String */;
 val* var107 /* : String */;
-val* var109 /* : String */;
-val* var110 /* : String */;
-val* var111 /* : String */;
+val* var108 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MPropDef___c_name].val != NULL; /* _c_name on <self:MPropDef> */
 if(likely(var1)) {
 var2 = self->attrs[COLOR_nit__model__MPropDef___c_name].val; /* _c_name on <self:MPropDef> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _c_name");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2082);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2281);
+fatal_exit(1);
 }
 } else {
 {
@@ -6195,7 +7483,7 @@ var5 = NEW_standard__FlatBuffer(&type_standard__FlatBuffer);
 {
 { /* Inline string#FlatBuffer#init (var5) on <var5:FlatBuffer> */
 {
-((void (*)(val* self))(var5->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var5) /* init on <var5:FlatBuffer>*/;
+((void(*)(val* self))(var5->class->vft[COLOR_standard___standard__FlatBuffer___standard__kernel__Object__init]))(var5); /* init on <var5:FlatBuffer>*/
 }
 RET_LABEL6:(void)0;
 }
@@ -6206,8 +7494,8 @@ var_res = var5;
 var9 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
 if (unlikely(var9 == 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);
 }
 var7 = var9;
 RET_LABEL8:(void)0;
@@ -6219,13 +7507,12 @@ var10 = nit___nit__MClassDef___nit__model_base__MEntity__c_name(var7);
 {
 standard___standard__FlatBuffer___Buffer__append(var_res, var10); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
-if (varonce) {
+if (likely(varonce!=NULL)) {
 var11 = varonce;
 } else {
 var12 = "___";
-var13 = 3;
-var14 = standard___standard__NativeString___to_s_with_length(var12, var13);
-var11 = var14;
+var13 = standard___standard__NativeString___to_s_with_length(var12, 3l);
+var11 = var13;
 varonce = var11;
 }
 {
@@ -6233,375 +7520,373 @@ standard___standard__FlatBuffer___Buffer__append(var_res, var11); /* Direct call
 }
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var17 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var17 == NULL)) {
+var16 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var16 == 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);
 }
-var15 = var17;
-RET_LABEL16:(void)0;
+var14 = var16;
+RET_LABEL15:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var15) on <var15:MClassDef> */
-var20 = var15->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var15:MClassDef> */
-if (unlikely(var20 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var14) on <var14:MClassDef> */
+var19 = var14->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var14:MClassDef> */
+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, 553);
+fatal_exit(1);
 }
-var18 = var20;
-RET_LABEL19:(void)0;
+var17 = var19;
+RET_LABEL18:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var23 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var23 == NULL)) {
+var22 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var22 == 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);
 }
-var21 = var23;
-RET_LABEL22:(void)0;
+var20 = var22;
+RET_LABEL21:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var21) on <var21:MProperty> */
-var26 = var21->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var21:MProperty> */
-if (unlikely(var26 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var20) on <var20:MProperty> */
+var25 = var20->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var20:MProperty> */
+if (unlikely(var25 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var24 = var26;
-RET_LABEL25:(void)0;
+var23 = var25;
+RET_LABEL24:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var24) on <var24:MClassDef> */
-var29 = var24->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var24:MClassDef> */
-if (unlikely(var29 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var23) on <var23:MClassDef> */
+var28 = var23->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var23:MClassDef> */
+if (unlikely(var28 == 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);
 }
-var27 = var29;
-RET_LABEL28:(void)0;
+var26 = var28;
+RET_LABEL27:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#== (var18,var27) on <var18:MClass> */
-var_other = var27;
+{ /* Inline kernel#Object#== (var17,var26) on <var17:MClass> */
+var_other = var26;
 {
-{ /* Inline kernel#Object#is_same_instance (var18,var_other) on <var18:MClass> */
-var34 = var18 == var_other;
-var32 = var34;
-goto RET_LABEL33;
-RET_LABEL33:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var17,var_other) on <var17:MClass> */
+var33 = var17 == var_other;
+var31 = var33;
+goto RET_LABEL32;
+RET_LABEL32:(void)0;
 }
 }
-var30 = var32;
-goto RET_LABEL31;
-RET_LABEL31:(void)0;
+var29 = var31;
+goto RET_LABEL30;
+RET_LABEL30:(void)0;
 }
 }
-if (var30){
+if (var29){
 {
-var35 = nit___nit__MPropDef___nit__model_base__MEntity__name(self);
+var34 = nit___nit__MPropDef___nit__model_base__MEntity__name(self);
 }
 {
-var36 = standard___standard__Text___to_cmangle(var35);
+var35 = standard___standard__Text___to_cmangle(var34);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var36); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var35); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 } else {
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var39 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var39 == NULL)) {
+var38 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var38 == 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);
 }
-var37 = var39;
-RET_LABEL38:(void)0;
+var36 = var38;
+RET_LABEL37:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var37) on <var37:MClassDef> */
-var42 = var37->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var37:MClassDef> */
-if (unlikely(var42 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var36) on <var36:MClassDef> */
+var41 = var36->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var36:MClassDef> */
+if (unlikely(var41 == 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);
 }
-var40 = var42;
-RET_LABEL41:(void)0;
+var39 = var41;
+RET_LABEL40:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var45 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var45 == NULL)) {
+var44 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var44 == 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);
 }
-var43 = var45;
-RET_LABEL44:(void)0;
+var42 = var44;
+RET_LABEL43:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var43) on <var43:MProperty> */
-var48 = var43->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var43:MProperty> */
-if (unlikely(var48 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var42) on <var42:MProperty> */
+var47 = var42->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var42:MProperty> */
+if (unlikely(var47 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var46 = var48;
-RET_LABEL47:(void)0;
+var45 = var47;
+RET_LABEL46:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var46) on <var46:MClassDef> */
-var51 = var46->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var46:MClassDef> */
-if (unlikely(var51 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var45) on <var45:MClassDef> */
+var50 = var45->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var45:MClassDef> */
+if (unlikely(var50 == 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);
 }
-var49 = var51;
-RET_LABEL50:(void)0;
+var48 = var50;
+RET_LABEL49:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#!= (var40,var49) on <var40:MModule> */
-var_other54 = var49;
+{ /* Inline kernel#Object#!= (var39,var48) on <var39:MModule> */
+var_other53 = var48;
 {
-var55 = ((short int (*)(val* self, val* p0))(var40->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var40, var_other54) /* == on <var40:MModule>*/;
+var54 = ((short int(*)(val* self, val* p0))(var39->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var39, var_other53); /* == on <var39:MModule>*/
 }
-var56 = !var55;
-var52 = var56;
-goto RET_LABEL53;
-RET_LABEL53:(void)0;
+var55 = !var54;
+var51 = var55;
+goto RET_LABEL52;
+RET_LABEL52:(void)0;
 }
 }
-if (var52){
+if (var51){
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var59 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var59 == NULL)) {
+var58 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var58 == 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);
 }
-var57 = var59;
-RET_LABEL58:(void)0;
+var56 = var58;
+RET_LABEL57:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var57) on <var57:MProperty> */
-var62 = var57->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var57:MProperty> */
-if (unlikely(var62 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var56) on <var56:MProperty> */
+var61 = var56->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var56:MProperty> */
+if (unlikely(var61 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var60 = var62;
-RET_LABEL61:(void)0;
+var59 = var61;
+RET_LABEL60:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mmodule (var60) on <var60:MClassDef> */
-var65 = var60->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var60:MClassDef> */
-if (unlikely(var65 == NULL)) {
+{ /* Inline model#MClassDef#mmodule (var59) on <var59:MClassDef> */
+var64 = var59->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var59:MClassDef> */
+if (unlikely(var64 == 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);
 }
-var63 = var65;
-RET_LABEL64:(void)0;
+var62 = var64;
+RET_LABEL63:(void)0;
 }
 }
 {
-var66 = nit___nit__MModule___nit__model_base__MEntity__c_name(var63);
+var65 = nit___nit__MModule___nit__model_base__MEntity__c_name(var62);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var66); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var65); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
-if (varonce67) {
-var68 = varonce67;
+if (likely(varonce66!=NULL)) {
+var67 = varonce66;
 } else {
-var69 = "__";
-var70 = 2;
-var71 = standard___standard__NativeString___to_s_with_length(var69, var70);
-var68 = var71;
-varonce67 = var68;
+var68 = "__";
+var69 = standard___standard__NativeString___to_s_with_length(var68, 2l);
+var67 = var69;
+varonce66 = var67;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var68); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var67); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 } else {
 }
 {
 { /* Inline model#MPropDef#mclassdef (self) on <self:MPropDef> */
-var74 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
-if (unlikely(var74 == NULL)) {
+var72 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
+if (unlikely(var72 == 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);
 }
-var72 = var74;
-RET_LABEL73:(void)0;
+var70 = var72;
+RET_LABEL71:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var72) on <var72:MClassDef> */
-var77 = var72->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var72:MClassDef> */
-if (unlikely(var77 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var70) on <var70:MClassDef> */
+var75 = var70->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var70:MClassDef> */
+if (unlikely(var75 == 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);
 }
-var75 = var77;
-RET_LABEL76:(void)0;
+var73 = var75;
+RET_LABEL74:(void)0;
 }
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var80 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var80 == NULL)) {
+var78 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var78 == 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);
 }
-var78 = var80;
-RET_LABEL79:(void)0;
+var76 = var78;
+RET_LABEL77:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var78) on <var78:MProperty> */
-var83 = var78->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var78:MProperty> */
-if (unlikely(var83 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var76) on <var76:MProperty> */
+var81 = var76->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var76:MProperty> */
+if (unlikely(var81 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var81 = var83;
-RET_LABEL82:(void)0;
+var79 = var81;
+RET_LABEL80:(void)0;
 }
 }
 {
-{ /* Inline model#MClassDef#mclass (var81) on <var81:MClassDef> */
-var86 = var81->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var81:MClassDef> */
-if (unlikely(var86 == NULL)) {
+{ /* Inline model#MClassDef#mclass (var79) on <var79:MClassDef> */
+var84 = var79->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var79:MClassDef> */
+if (unlikely(var84 == 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);
 }
-var84 = var86;
-RET_LABEL85:(void)0;
+var82 = var84;
+RET_LABEL83:(void)0;
 }
 }
 {
-{ /* Inline kernel#Object#!= (var75,var84) on <var75:MClass> */
-var_other54 = var84;
+{ /* Inline kernel#Object#!= (var73,var82) on <var73:MClass> */
+var_other53 = var82;
 {
-var89 = ((short int (*)(val* self, val* p0))(var75->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var75, var_other54) /* == on <var75:MClass>*/;
+var87 = ((short int(*)(val* self, val* p0))(var73->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var73, var_other53); /* == on <var73:MClass>*/
 }
-var90 = !var89;
-var87 = var90;
-goto RET_LABEL88;
-RET_LABEL88:(void)0;
+var88 = !var87;
+var85 = var88;
+goto RET_LABEL86;
+RET_LABEL86:(void)0;
 }
 }
-if (var87){
+if (var85){
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var93 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var93 == NULL)) {
+var91 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var91 == 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);
 }
-var91 = var93;
-RET_LABEL92:(void)0;
+var89 = var91;
+RET_LABEL90:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#intro_mclassdef (var91) on <var91:MProperty> */
-var96 = var91->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var91:MProperty> */
-if (unlikely(var96 == NULL)) {
+{ /* Inline model#MProperty#intro_mclassdef (var89) on <var89:MProperty> */
+var94 = var89->attrs[COLOR_nit__model__MProperty___intro_mclassdef].val; /* _intro_mclassdef on <var89:MProperty> */
+if (unlikely(var94 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclassdef");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1736);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1928);
+fatal_exit(1);
 }
-var94 = var96;
-RET_LABEL95:(void)0;
+var92 = var94;
+RET_LABEL93:(void)0;
 }
 }
 {
-var97 = nit___nit__MClassDef___nit__model_base__MEntity__name(var94);
+var95 = nit___nit__MClassDef___nit__model_base__MEntity__name(var92);
 }
 {
-var98 = standard___standard__Text___to_cmangle(var97);
+var96 = standard___standard__Text___to_cmangle(var95);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var98); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var96); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
-if (varonce99) {
-var100 = varonce99;
+if (likely(varonce97!=NULL)) {
+var98 = varonce97;
 } else {
-var101 = "__";
-var102 = 2;
-var103 = standard___standard__NativeString___to_s_with_length(var101, var102);
-var100 = var103;
-varonce99 = var100;
+var99 = "__";
+var100 = standard___standard__NativeString___to_s_with_length(var99, 2l);
+var98 = var100;
+varonce97 = var98;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var100); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var98); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 } else {
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
-var106 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
-if (unlikely(var106 == NULL)) {
+var103 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
+if (unlikely(var103 == 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);
 }
-var104 = var106;
-RET_LABEL105:(void)0;
+var101 = var103;
+RET_LABEL102:(void)0;
 }
 }
 {
-{ /* Inline model#MProperty#name (var104) on <var104:MProperty> */
-var109 = var104->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var104:MProperty> */
-if (unlikely(var109 == NULL)) {
+{ /* Inline model#MProperty#name (var101) on <var101:MProperty> */
+var106 = var101->attrs[COLOR_nit__model__MProperty___name].val; /* _name on <var101:MProperty> */
+if (unlikely(var106 == 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);
 }
-var107 = var109;
-RET_LABEL108:(void)0;
+var104 = var106;
+RET_LABEL105:(void)0;
 }
 }
 {
-var110 = standard___standard__Text___to_cmangle(var107);
+var107 = standard___standard__Text___to_cmangle(var104);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_res, var110); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
+standard___standard__FlatBuffer___Buffer__append(var_res, var107); /* Direct call string#FlatBuffer#append on <var_res:FlatBuffer>*/
 }
 }
 {
-var111 = standard___standard__FlatBuffer___Object__to_s(var_res);
+var108 = standard___standard__FlatBuffer___Object__to_s(var_res);
 }
-var3 = var111;
+var3 = var108;
 goto RET_LABEL4;
 RET_LABEL4:(void)0;
 }
@@ -6623,8 +7908,8 @@ val* var4 /* : Model */;
 var3 = self->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <self:MPropDef> */
 if (unlikely(var3 == 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);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -6645,8 +7930,8 @@ val* var1 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MPropDef___to_s].val; /* _to_s on <self:MPropDef> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2104);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2303);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -6673,8 +7958,8 @@ short int var11 /* : Bool */;
 var3 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var3 == 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);
 }
 var1 = var3;
 RET_LABEL2:(void)0;
@@ -6685,8 +7970,8 @@ RET_LABEL2:(void)0;
 var6 = var1->attrs[COLOR_nit__model__MProperty___intro].val; /* _intro on <var1:MProperty> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1773);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1968);
+fatal_exit(1);
 }
 var4 = var6;
 RET_LABEL5:(void)0;
@@ -6745,21 +8030,21 @@ const char* var_class_name;
 var_mmodule = p0;
 var_mtype = p1;
 {
-var1 = ((short int (*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+var1 = ((short int(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__need_anchor]))(var_mtype); /* need_anchor on <var_mtype:MType>*/
 }
 var2 = !var1;
 if (unlikely(!var2)) {
 PRINT_ERROR("Runtime error: %s", "Assert failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2118);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2317);
+fatal_exit(1);
 }
 {
 { /* Inline model#MPropDef#mproperty (self) on <self:MPropDef> */
 var5 = self->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <self:MPropDef> */
 if (unlikely(var5 == 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);
 }
 var3 = var5;
 RET_LABEL4:(void)0;
@@ -6786,7 +8071,7 @@ var10 = standard__array___standard__array__ArrayIterator___standard__abstract_co
 { /* Inline kernel#Object#!= (var10,self) on <var10:nullable Object(MPropDef)> */
 var_other = self;
 {
-var13 = ((short int (*)(val* self, val* p0))(var10->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var10, var_other) /* == on <var10:nullable Object(MPropDef)>*/;
+var13 = ((short int(*)(val* self, val* p0))(var10->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var10, var_other); /* == on <var10:nullable Object(MPropDef)>*/
 }
 var14 = !var13;
 var11 = var14;
@@ -6812,8 +8097,8 @@ var15 = standard__array___standard__array__ArrayIterator___standard__abstract_co
 }
 if (unlikely(!var15)) {
 PRINT_ERROR("Runtime error: %s", "Assert \'has_property\' failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2123);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2322);
+fatal_exit(1);
 }
 {
 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_i); /* Direct call array#ArrayIterator#next on <var_i:ArrayIterator[MPropDef]>*/
@@ -6823,8 +8108,8 @@ var16 = standard__array___standard__array__ArrayIterator___standard__abstract_co
 }
 if (unlikely(!var16)) {
 PRINT_ERROR("Runtime error: %s", "Assert \'has_next_property\' failed");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2125);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2324);
+fatal_exit(1);
 }
 {
 var17 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_i);
@@ -6841,8 +8126,8 @@ var18 = var17->type->type_table[cltype] == idtype;
 if (unlikely(!var18)) {
 var_class_name = var17 == NULL ? "null" : var17->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MPROPDEF", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2126);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2325);
+fatal_exit(1);
 }
 var = var17;
 goto RET_LABEL;
@@ -6884,8 +8169,8 @@ val* var1 /* : Array[MProperty] */;
 var1 = self->attrs[COLOR_nit__model__MMethodDef___initializers].val; /* _initializers on <self:MMethodDef> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _initializers");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2146);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2345);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -6996,8 +8281,8 @@ val* var1 /* : String */;
 var1 = self->attrs[COLOR_nit__model__MClassKind___to_s].val; /* _to_s on <self:MClassKind> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
-PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
-show_backtrace(1);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2408);
+fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
@@ -7026,210 +8311,214 @@ RET_LABEL:;
 short int nit___nit__MClassKind___can_specialize(val* self, val* p0) {
 short int var /* : Bool */;
 val* var_other /* var other: MClassKind */;
-val* var1 /* : MClassKind */;
-short int var2 /* : Bool */;
-val* var_other4 /* var other: nullable Object */;
-short int var5 /* : Bool */;
-short int var7 /* : Bool */;
+val* var1 /* : Sys */;
+val* var2 /* : MClassKind */;
+short int var3 /* : Bool */;
+val* var_other5 /* var other: nullable Object */;
+short int var6 /* : Bool */;
 short int var8 /* : Bool */;
 short int var9 /* : Bool */;
-val* var10 /* : MClassKind */;
-short int var11 /* : Bool */;
-short int var13 /* : Bool */;
-short int var15 /* : Bool */;
+val* var10 /* : Sys */;
+val* var11 /* : MClassKind */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+short int var16 /* : Bool */;
 short int var_ /* var : Bool */;
-val* var16 /* : MClassKind */;
-short int var17 /* : Bool */;
+val* var17 /* : Sys */;
+val* var18 /* : MClassKind */;
 short int var19 /* : Bool */;
 short int var21 /* : Bool */;
-short int var22 /* : Bool */;
-val* var23 /* : MClassKind */;
-short int var24 /* : Bool */;
+short int var23 /* : Bool */;
+val* var24 /* : Sys */;
+val* var25 /* : MClassKind */;
 short int var26 /* : Bool */;
 short int var28 /* : Bool */;
-short int var29 /* : Bool */;
+short int var30 /* : Bool */;
 short int var31 /* : Bool */;
 short int var33 /* : Bool */;
-short int var34 /* : Bool */;
-val* var35 /* : MClassKind */;
+short int var35 /* : Bool */;
 short int var36 /* : Bool */;
-short int var38 /* : Bool */;
-short int var40 /* : Bool */;
-short int var_41 /* var : Bool */;
-val* var42 /* : MClassKind */;
+val* var37 /* : Sys */;
+val* var38 /* : MClassKind */;
+short int var39 /* : Bool */;
+short int var41 /* : Bool */;
 short int var43 /* : Bool */;
-short int var45 /* : Bool */;
+short int var_44 /* var : Bool */;
+val* var45 /* : Sys */;
+val* var46 /* : MClassKind */;
 short int var47 /* : Bool */;
-short int var48 /* : Bool */;
 short int var49 /* : Bool */;
+short int var51 /* : Bool */;
 var_other = p0;
+var1 = glob_sys;
 {
-var1 = nit__model___standard__Object___interface_kind(self);
+var2 = nit__model___standard__Sys___interface_kind(var1);
 }
 {
-{ /* Inline kernel#Object#== (var_other,var1) on <var_other:MClassKind> */
-var_other4 = var1;
+{ /* Inline kernel#Object#== (var_other,var2) on <var_other:MClassKind> */
+var_other5 = var2;
 {
-{ /* Inline kernel#Object#is_same_instance (var_other,var_other4) on <var_other:MClassKind> */
-var7 = var_other == var_other4;
-var5 = var7;
-goto RET_LABEL6;
-RET_LABEL6:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
+var8 = var_other == var_other5;
+var6 = var8;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
 }
 }
-var2 = var5;
-goto RET_LABEL3;
-RET_LABEL3:(void)0;
+var3 = var6;
+goto RET_LABEL4;
+RET_LABEL4:(void)0;
 }
 }
-if (var2){
-var8 = 1;
-var = var8;
+if (var3){
+var = 1;
 goto RET_LABEL;
 } else {
 }
+var10 = glob_sys;
 {
-var10 = nit__model___standard__Object___interface_kind(self);
+var11 = nit__model___standard__Sys___interface_kind(var10);
 }
 {
-{ /* Inline kernel#Object#== (self,var10) on <self:MClassKind> */
-var_other4 = var10;
+{ /* Inline kernel#Object#== (self,var11) on <self:MClassKind> */
+var_other5 = var11;
 {
-{ /* Inline kernel#Object#is_same_instance (self,var_other4) on <self:MClassKind> */
-var15 = self == var_other4;
-var13 = var15;
-goto RET_LABEL14;
-RET_LABEL14:(void)0;
+{ /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
+var16 = self == var_other5;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
 }
 }
-var11 = var13;
-goto RET_LABEL12;
-RET_LABEL12:(void)0;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
 }
 }
-var_ = var11;
-if (var11){
+var_ = var12;
+if (var12){
 var9 = var_;
 } else {
+var17 = glob_sys;
 {
-var16 = nit__model___standard__Object___enum_kind(self);
+var18 = nit__model___standard__Sys___enum_kind(var17);
 }
 {
-{ /* Inline kernel#Object#== (self,var16) on <self:MClassKind> */
-var_other4 = var16;
+{ /* Inline kernel#Object#== (self,var18) on <self:MClassKind> */
+var_other5 = var18;
 {
-{ /* Inline kernel#Object#is_same_instance (self,var_other4) on <self:MClassKind> */
-var21 = self == var_other4;
+{ /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
+var23 = self == var_other5;
+var21 = var23;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
+}
+}
 var19 = var21;
 goto RET_LABEL20;
 RET_LABEL20:(void)0;
 }
 }
-var17 = var19;
-goto RET_LABEL18;
-RET_LABEL18:(void)0;
-}
-}
-var9 = var17;
+var9 = var19;
 }
 if (var9){
-var22 = 0;
-var = var22;
+var = 0;
 goto RET_LABEL;
 } else {
+var24 = glob_sys;
 {
-var23 = nit__model___standard__Object___extern_kind(self);
+var25 = nit__model___standard__Sys___extern_kind(var24);
 }
 {
-{ /* Inline kernel#Object#== (self,var23) on <self:MClassKind> */
-var_other4 = var23;
+{ /* Inline kernel#Object#== (self,var25) on <self:MClassKind> */
+var_other5 = var25;
 {
-{ /* Inline kernel#Object#is_same_instance (self,var_other4) on <self:MClassKind> */
-var28 = self == var_other4;
+{ /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
+var30 = self == var_other5;
+var28 = var30;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
+}
+}
 var26 = var28;
 goto RET_LABEL27;
 RET_LABEL27:(void)0;
 }
 }
-var24 = var26;
-goto RET_LABEL25;
-RET_LABEL25:(void)0;
-}
-}
-if (var24){
+if (var26){
 {
 { /* Inline kernel#Object#== (self,var_other) on <self:MClassKind> */
-var_other4 = var_other;
+var_other5 = var_other;
 {
-{ /* Inline kernel#Object#is_same_instance (self,var_other4) on <self:MClassKind> */
-var33 = self == var_other4;
+{ /* Inline kernel#Object#is_same_instance (self,var_other5) on <self:MClassKind> */
+var35 = self == var_other5;
+var33 = var35;
+goto RET_LABEL34;
+RET_LABEL34:(void)0;
+}
+}
 var31 = var33;
 goto RET_LABEL32;
 RET_LABEL32:(void)0;
 }
 }
-var29 = var31;
-goto RET_LABEL30;
-RET_LABEL30:(void)0;
-}
-}
-var = var29;
+var = var31;
 goto RET_LABEL;
 } else {
+var37 = glob_sys;
 {
-var35 = nit__model___standard__Object___enum_kind(self);
+var38 = nit__model___standard__Sys___enum_kind(var37);
 }
 {
-{ /* Inline kernel#Object#== (var_other,var35) on <var_other:MClassKind> */
-var_other4 = var35;
+{ /* Inline kernel#Object#== (var_other,var38) on <var_other:MClassKind> */
+var_other5 = var38;
 {
-{ /* Inline kernel#Object#is_same_instance (var_other,var_other4) on <var_other:MClassKind> */
-var40 = var_other == var_other4;
-var38 = var40;
-goto RET_LABEL39;
-RET_LABEL39:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
+var43 = var_other == var_other5;
+var41 = var43;
+goto RET_LABEL42;
+RET_LABEL42:(void)0;
 }
 }
-var36 = var38;
-goto RET_LABEL37;
-RET_LABEL37:(void)0;
+var39 = var41;
+goto RET_LABEL40;
+RET_LABEL40:(void)0;
 }
 }
-var_41 = var36;
-if (var36){
-var34 = var_41;
+var_44 = var39;
+if (var39){
+var36 = var_44;
 } else {
+var45 = glob_sys;
 {
-var42 = nit__model___standard__Object___extern_kind(self);
+var46 = nit__model___standard__Sys___extern_kind(var45);
 }
 {
-{ /* Inline kernel#Object#== (var_other,var42) on <var_other:MClassKind> */
-var_other4 = var42;
+{ /* Inline kernel#Object#== (var_other,var46) on <var_other:MClassKind> */
+var_other5 = var46;
 {
-{ /* Inline kernel#Object#is_same_instance (var_other,var_other4) on <var_other:MClassKind> */
-var47 = var_other == var_other4;
-var45 = var47;
-goto RET_LABEL46;
-RET_LABEL46:(void)0;
+{ /* Inline kernel#Object#is_same_instance (var_other,var_other5) on <var_other:MClassKind> */
+var51 = var_other == var_other5;
+var49 = var51;
+goto RET_LABEL50;
+RET_LABEL50:(void)0;
 }
 }
-var43 = var45;
-goto RET_LABEL44;
-RET_LABEL44:(void)0;
+var47 = var49;
+goto RET_LABEL48;
+RET_LABEL48:(void)0;
 }
 }
-var34 = var43;
+var36 = var47;
 }
-if (var34){
-var48 = 0;
-var = var48;
+if (var36){
+var = 0;
 goto RET_LABEL;
 } else {
 }
 }
 }
-var49 = 1;
-var = var49;
+var = 1;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -7237,12 +8526,12 @@ return var;
 /* method model#MClassKind#init for (self: MClassKind) */
 void nit___nit__MClassKind___standard__kernel__Object__init(val* self) {
 {
-((void (*)(val* self))(self->class->vft[COLOR_nit___nit__MClassKind___standard__kernel__Object__init]))(self) /* init on <self:MClassKind>*/;
+((void(*)(val* self))(self->class->vft[COLOR_nit___nit__MClassKind___standard__kernel__Object__init]))(self); /* init on <self:MClassKind>*/
 }
 RET_LABEL:;
 }
-/* method model#Object#abstract_kind for (self: Object): MClassKind */
-val* nit__model___standard__Object___abstract_kind(val* self) {
+/* method model#Sys#abstract_kind for (self: Sys): MClassKind */
+val* nit__model___standard__Sys___abstract_kind(val* self) {
 val* var /* : MClassKind */;
 static val* varonce;
 static int varonce_guard;
@@ -7251,31 +8540,27 @@ val* var2 /* : MClassKind */;
 static val* varonce3;
 val* var4 /* : String */;
 char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : FlatString */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
+val* var6 /* : FlatString */;
+if (likely(varonce_guard)) {
 var1 = varonce;
 } else {
 var2 = NEW_nit__MClassKind(&type_nit__MClassKind);
-if (varonce3) {
+if (likely(varonce3!=NULL)) {
 var4 = varonce3;
 } else {
 var5 = "abstract class";
-var6 = 14;
-var7 = standard___standard__NativeString___to_s_with_length(var5, var6);
-var4 = var7;
+var6 = standard___standard__NativeString___to_s_with_length(var5, 14l);
+var4 = var6;
 varonce3 = var4;
 }
-var8 = 1;
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4) /* to_s= on <var2:MClassKind>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4); /* to_s= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, var8) /* need_init= on <var2:MClassKind>*/;
+((void(*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, 1); /* need_init= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2) /* init on <var2:MClassKind>*/;
+((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:MClassKind>*/
 }
 var1 = var2;
 varonce = var1;
@@ -7286,8 +8571,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#Object#concrete_kind for (self: Object): MClassKind */
-val* nit__model___standard__Object___concrete_kind(val* self) {
+/* method model#Sys#concrete_kind for (self: Sys): MClassKind */
+val* nit__model___standard__Sys___concrete_kind(val* self) {
 val* var /* : MClassKind */;
 static val* varonce;
 static int varonce_guard;
@@ -7296,31 +8581,27 @@ val* var2 /* : MClassKind */;
 static val* varonce3;
 val* var4 /* : String */;
 char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : FlatString */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
+val* var6 /* : FlatString */;
+if (likely(varonce_guard)) {
 var1 = varonce;
 } else {
 var2 = NEW_nit__MClassKind(&type_nit__MClassKind);
-if (varonce3) {
+if (likely(varonce3!=NULL)) {
 var4 = varonce3;
 } else {
 var5 = "class";
-var6 = 5;
-var7 = standard___standard__NativeString___to_s_with_length(var5, var6);
-var4 = var7;
+var6 = standard___standard__NativeString___to_s_with_length(var5, 5l);
+var4 = var6;
 varonce3 = var4;
 }
-var8 = 1;
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4) /* to_s= on <var2:MClassKind>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4); /* to_s= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, var8) /* need_init= on <var2:MClassKind>*/;
+((void(*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, 1); /* need_init= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2) /* init on <var2:MClassKind>*/;
+((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:MClassKind>*/
 }
 var1 = var2;
 varonce = var1;
@@ -7331,8 +8612,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#Object#interface_kind for (self: Object): MClassKind */
-val* nit__model___standard__Object___interface_kind(val* self) {
+/* method model#Sys#interface_kind for (self: Sys): MClassKind */
+val* nit__model___standard__Sys___interface_kind(val* self) {
 val* var /* : MClassKind */;
 static val* varonce;
 static int varonce_guard;
@@ -7341,31 +8622,27 @@ val* var2 /* : MClassKind */;
 static val* varonce3;
 val* var4 /* : String */;
 char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : FlatString */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
+val* var6 /* : FlatString */;
+if (likely(varonce_guard)) {
 var1 = varonce;
 } else {
 var2 = NEW_nit__MClassKind(&type_nit__MClassKind);
-if (varonce3) {
+if (likely(varonce3!=NULL)) {
 var4 = varonce3;
 } else {
 var5 = "interface";
-var6 = 9;
-var7 = standard___standard__NativeString___to_s_with_length(var5, var6);
-var4 = var7;
+var6 = standard___standard__NativeString___to_s_with_length(var5, 9l);
+var4 = var6;
 varonce3 = var4;
 }
-var8 = 0;
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4) /* to_s= on <var2:MClassKind>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4); /* to_s= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, var8) /* need_init= on <var2:MClassKind>*/;
+((void(*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, 0); /* need_init= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2) /* init on <var2:MClassKind>*/;
+((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:MClassKind>*/
 }
 var1 = var2;
 varonce = var1;
@@ -7376,8 +8653,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#Object#enum_kind for (self: Object): MClassKind */
-val* nit__model___standard__Object___enum_kind(val* self) {
+/* method model#Sys#enum_kind for (self: Sys): MClassKind */
+val* nit__model___standard__Sys___enum_kind(val* self) {
 val* var /* : MClassKind */;
 static val* varonce;
 static int varonce_guard;
@@ -7386,31 +8663,27 @@ val* var2 /* : MClassKind */;
 static val* varonce3;
 val* var4 /* : String */;
 char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : FlatString */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
+val* var6 /* : FlatString */;
+if (likely(varonce_guard)) {
 var1 = varonce;
 } else {
 var2 = NEW_nit__MClassKind(&type_nit__MClassKind);
-if (varonce3) {
+if (likely(varonce3!=NULL)) {
 var4 = varonce3;
 } else {
 var5 = "enum";
-var6 = 4;
-var7 = standard___standard__NativeString___to_s_with_length(var5, var6);
-var4 = var7;
+var6 = standard___standard__NativeString___to_s_with_length(var5, 4l);
+var4 = var6;
 varonce3 = var4;
 }
-var8 = 0;
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4) /* to_s= on <var2:MClassKind>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4); /* to_s= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, var8) /* need_init= on <var2:MClassKind>*/;
+((void(*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, 0); /* need_init= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2) /* init on <var2:MClassKind>*/;
+((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:MClassKind>*/
 }
 var1 = var2;
 varonce = var1;
@@ -7421,8 +8694,8 @@ goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method model#Object#extern_kind for (self: Object): MClassKind */
-val* nit__model___standard__Object___extern_kind(val* self) {
+/* method model#Sys#extern_kind for (self: Sys): MClassKind */
+val* nit__model___standard__Sys___extern_kind(val* self) {
 val* var /* : MClassKind */;
 static val* varonce;
 static int varonce_guard;
@@ -7431,31 +8704,27 @@ val* var2 /* : MClassKind */;
 static val* varonce3;
 val* var4 /* : String */;
 char* var5 /* : NativeString */;
-long var6 /* : Int */;
-val* var7 /* : FlatString */;
-short int var8 /* : Bool */;
-if (varonce_guard) {
+val* var6 /* : FlatString */;
+if (likely(varonce_guard)) {
 var1 = varonce;
 } else {
 var2 = NEW_nit__MClassKind(&type_nit__MClassKind);
-if (varonce3) {
+if (likely(varonce3!=NULL)) {
 var4 = varonce3;
 } else {
 var5 = "extern class";
-var6 = 12;
-var7 = standard___standard__NativeString___to_s_with_length(var5, var6);
-var4 = var7;
+var6 = standard___standard__NativeString___to_s_with_length(var5, 12l);
+var4 = var6;
 varonce3 = var4;
 }
-var8 = 0;
 {
-((void (*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4) /* to_s= on <var2:MClassKind>*/;
+((void(*)(val* self, val* p0))(var2->class->vft[COLOR_nit__model__MClassKind__to_s_61d]))(var2, var4); /* to_s= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, var8) /* need_init= on <var2:MClassKind>*/;
+((void(*)(val* self, short int p0))(var2->class->vft[COLOR_nit__model__MClassKind__need_init_61d]))(var2, 0); /* need_init= on <var2:MClassKind>*/
 }
 {
-((void (*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2) /* init on <var2:MClassKind>*/;
+((void(*)(val* self))(var2->class->vft[COLOR_standard__kernel__Object__init]))(var2); /* init on <var2:MClassKind>*/
 }
 var1 = var2;
 varonce = var1;