tests: add tests for tests.sh so we can test the test script
[nit.git] / c_src / modelize_property.sep.1.c
index a23e6d6..d3e547a 100644 (file)
@@ -5,8 +5,9 @@ val* var /* : Phase */;
 val* var1 /* : Phase */;
 var1 = self->attrs[COLOR_modelize_property__ToolContext___64dmodelize_property_phase].val; /* @modelize_property_phase on <self:ToolContext> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @modelize_property_phase", "src/modelize_property.nit", 23);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @modelize_property_phase");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 23);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -69,8 +70,9 @@ val* var /* : HashMap[MPropDef, APropdef] */;
 val* var1 /* : HashMap[MPropDef, APropdef] */;
 var1 = self->attrs[COLOR_modelize_property__ModelBuilder___64dmpropdef2npropdef].val; /* @mpropdef2npropdef on <self:ModelBuilder> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mpropdef2npropdef", "src/modelize_property.nit", 37);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mpropdef2npropdef");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 37);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -138,8 +140,9 @@ var1 = 1;
 ((void (*)(val*, short int))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__build_properties_is_done_61d]))(var_nclassdef, var1) /* build_properties_is_done= on <var_nclassdef:AClassdef>*/;
 var2 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var2 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 48);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 48);
+show_backtrace(1);
 }
 var_mclassdef = var2;
 var3 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef) /* in_hierarchy on <var_mclassdef:MClassDef>*/;
@@ -155,8 +158,9 @@ goto RET_LABEL;
 }
 var6 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__in_hierarchy]))(var_mclassdef) /* in_hierarchy on <var_mclassdef:MClassDef>*/;
 if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 50);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 50);
+show_backtrace(1);
 } else {
 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_poset__POSetElement__direct_greaters]))(var6) /* direct_greaters on <var6:nullable POSetElement[MClassDef]>*/;
 }
@@ -272,6 +276,7 @@ val* var39 /* : nullable MProperty */;
 short int var40 /* : Bool */;
 int cltype41;
 int idtype42;
+const char* var_class_name;
 val* var_candidate /* var candidate: nullable MMethod */;
 short int var43 /* : Bool */;
 val* var44 /* : null */;
@@ -440,8 +445,9 @@ long var199 /* : Int */;
 var_nclassdef = p0;
 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 70);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 70);
+show_backtrace(1);
 }
 var_mclassdef = var;
 var1 = ((short int (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__is_intro]))(var_mclassdef) /* is_intro on <var_mclassdef:MClassDef>*/;
@@ -503,15 +509,15 @@ goto RET_LABEL;
 }
 var19 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef(AStdClassdef)>*/;
 if (var19 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 86);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 86);
+show_backtrace(1);
 } else {
 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MClassDef__mmodule]))(var19) /* mmodule on <var19:nullable MClassDef>*/;
 }
 var_mmodule = var20;
 var21 = NEW_array__Array(&type_array__Arraymodel__MMethod);
 ((void (*)(val*))(var21->class->vft[COLOR_array__Array__init]))(var21) /* init on <var21:Array[MMethod]>*/;
-CHECK_NEW_array__Array(var21);
 var_combine = var21;
 var22 = NULL;
 var_inhc = var22;
@@ -533,8 +539,9 @@ goto CONTINUE_label31;
 }
 var32 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef(AStdClassdef)>*/;
 if (var32 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 93);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 93);
+show_backtrace(1);
 } else {
 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_model__MClassDef__bound_mtype]))(var32) /* bound_mtype on <var32:nullable MClassDef>*/;
 }
@@ -563,8 +570,10 @@ var40 = var39->type->type_table[cltype41] == idtype42;
 }
 }
 if (!var40) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 94);
-exit(1);
+var_class_name = var39 == NULL ? "null" : var39->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 94);
+show_backtrace(1);
 }
 var_candidate = var39;
 var44 = NULL;
@@ -578,8 +587,9 @@ if (var45){
 var46 = ((val* (*)(val*))(var_candidate->class->vft[COLOR_model__MProperty__intro]))(var_candidate) /* intro on <var_candidate:nullable MMethod(MMethod)>*/;
 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_model__MMethodDef__msignature]))(var46) /* msignature on <var46:MPropDef(MMethodDef)>*/;
 if (var47 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 95);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 95);
+show_backtrace(1);
 } else {
 var48 = ((long (*)(val*))(var47->class->vft[COLOR_model__MSignature__arity]))(var47) /* arity on <var47:nullable MSignature>*/;
 }
@@ -650,7 +660,6 @@ var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65;
 ((struct instance_array__NativeArray*)var71)->values[3] = (val*) var_c;
 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
-CHECK_NEW_array__Array(var69);
 }
 var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var72) /* error on <self:ModelBuilder>*/;
@@ -693,7 +702,6 @@ var86 = NEW_array__NativeArray(var85, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var86)->values[1] = (val*) var80;
 ((struct instance_array__NativeArray*)var86)->values[2] = (val*) var_inhc;
 ((void (*)(val*, val*, long))(var84->class->vft[COLOR_array__Array__with_native]))(var84, var86, var85) /* with_native on <var84:Array[Object]>*/;
-CHECK_NEW_array__Array(var84);
 }
 var87 = ((val* (*)(val*))(var84->class->vft[COLOR_string__Object__to_s]))(var84) /* to_s on <var84:Array[Object]>*/;
 var88 = 3;
@@ -755,7 +763,6 @@ var114 = NEW_array__NativeArray(var113, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var114)->values[2] = (val*) var108;
 ((struct instance_array__NativeArray*)var114)->values[3] = (val*) var_inhc;
 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[Object]>*/;
-CHECK_NEW_array__Array(var112);
 }
 var115 = ((val* (*)(val*))(var112->class->vft[COLOR_string__Object__to_s]))(var112) /* to_s on <var112:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(self, var_nclassdef, var115) /* error on <self:ModelBuilder>*/;
@@ -779,21 +786,17 @@ varonce119 = var120;
 var124 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
 var125 = ((val* (*)(val*))(var124->class->vft[COLOR_model__MClass__visibility]))(var124) /* visibility on <var124:MClass>*/;
 ((void (*)(val*, val*, val*, val*))(var118->class->vft[COLOR_model__MMethod__init]))(var118, var_mclassdef, var120, var125) /* init on <var118:MMethod>*/;
-CHECK_NEW_model__MMethod(var118);
 var_mprop = var118;
 var126 = NEW_model__MMethodDef(&type_model__MMethodDef);
 var127 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:AClassdef(AStdClassdef)>*/;
 ((void (*)(val*, val*, val*, val*))(var126->class->vft[COLOR_model__MMethodDef__init]))(var126, var_mclassdef, var_mprop, var127) /* init on <var126:MMethodDef>*/;
-CHECK_NEW_model__MMethodDef(var126);
 var_mpropdef128 = var126;
 var129 = NEW_array__Array(&type_array__Arraymodel__MParameter);
 ((void (*)(val*))(var129->class->vft[COLOR_array__Array__init]))(var129) /* init on <var129:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var129);
 var_mparameters = var129;
 var130 = NEW_model__MSignature(&type_model__MSignature);
 var131 = NULL;
 ((void (*)(val*, val*, val*))(var130->class->vft[COLOR_model__MSignature__init]))(var130, var_mparameters, var131) /* init on <var130:MSignature>*/;
-CHECK_NEW_model__MSignature(var130);
 var_msignature = var130;
 ((void (*)(val*, val*))(var_mpropdef128->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mpropdef128, var_msignature) /* msignature= on <var_mpropdef128:MMethodDef>*/;
 var132 = 1;
@@ -818,7 +821,6 @@ var141 = NEW_array__NativeArray(var140, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var141)->values[2] = (val*) var_mpropdef128;
 ((struct instance_array__NativeArray*)var141)->values[3] = (val*) var_msignature;
 ((void (*)(val*, val*, long))(var139->class->vft[COLOR_array__Array__with_native]))(var139, var141, var140) /* with_native on <var139:Array[Object]>*/;
-CHECK_NEW_array__Array(var139);
 }
 var142 = ((val* (*)(val*))(var139->class->vft[COLOR_string__Object__to_s]))(var139) /* to_s on <var139:Array[Object]>*/;
 var143 = 3;
@@ -828,7 +830,6 @@ goto RET_LABEL;
 }
 var144 = NEW_array__Array(&type_array__Arraymodel__MParameter);
 ((void (*)(val*))(var144->class->vft[COLOR_array__Array__init]))(var144) /* init on <var144:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var144);
 var_mparameters145 = var144;
 var146 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef(AStdClassdef)>*/;
 var147 = ((val* (*)(val*))(var146->class->vft[COLOR_abstract_collection__Collection__iterator]))(var146) /* iterator on <var146:ANodes[APropdef]>*/;
@@ -872,8 +873,9 @@ goto RET_LABEL;
 }
 var161 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on <var_npropdef:APropdef(AAttrPropdef)>*/;
 if (var161 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 137);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 137);
+show_backtrace(1);
 } else {
 var162 = ((val* (*)(val*))(var161->class->vft[COLOR_model__MPropDef__mproperty]))(var161) /* mproperty on <var161:nullable MPropDef(nullable MAttributeDef)>*/;
 }
@@ -883,8 +885,9 @@ var165 = ((val* (*)(val*, long))(var163->class->vft[COLOR_string__AbstractString
 var_paramname = var165;
 var166 = ((val* (*)(val*))(var_npropdef->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(var_npropdef) /* mpropdef on <var_npropdef:APropdef(AAttrPropdef)>*/;
 if (var166 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 138);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 138);
+show_backtrace(1);
 } else {
 var167 = ((val* (*)(val*))(var166->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var166) /* static_mtype on <var166:nullable MPropDef(nullable MAttributeDef)>*/;
 }
@@ -902,7 +905,6 @@ goto RET_LABEL;
 var170 = NEW_model__MParameter(&type_model__MParameter);
 var171 = 0;
 ((void (*)(val*, val*, val*, short int))(var170->class->vft[COLOR_model__MParameter__init]))(var170, var_paramname, var_ret_type, var171) /* init on <var170:MParameter>*/;
-CHECK_NEW_model__MParameter(var170);
 var_mparameter = var170;
 ((void (*)(val*, val*))(var_mparameters145->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mparameters145, var_mparameter) /* add on <var_mparameters145:Array[MParameter]>*/;
 } else {
@@ -924,17 +926,14 @@ varonce174 = var175;
 var179 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
 var180 = ((val* (*)(val*))(var179->class->vft[COLOR_model__MClass__visibility]))(var179) /* visibility on <var179:MClass>*/;
 ((void (*)(val*, val*, val*, val*))(var173->class->vft[COLOR_model__MMethod__init]))(var173, var_mclassdef, var175, var180) /* init on <var173:MMethod>*/;
-CHECK_NEW_model__MMethod(var173);
 var_mprop181 = var173;
 var182 = NEW_model__MMethodDef(&type_model__MMethodDef);
 var183 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:AClassdef(AStdClassdef)>*/;
 ((void (*)(val*, val*, val*, val*))(var182->class->vft[COLOR_model__MMethodDef__init]))(var182, var_mclassdef, var_mprop181, var183) /* init on <var182:MMethodDef>*/;
-CHECK_NEW_model__MMethodDef(var182);
 var_mpropdef184 = var182;
 var185 = NEW_model__MSignature(&type_model__MSignature);
 var186 = NULL;
 ((void (*)(val*, val*, val*))(var185->class->vft[COLOR_model__MSignature__init]))(var185, var_mparameters145, var186) /* init on <var185:MSignature>*/;
-CHECK_NEW_model__MSignature(var185);
 var_msignature187 = var185;
 ((void (*)(val*, val*))(var_mpropdef184->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mpropdef184, var_msignature187) /* msignature= on <var_mpropdef184:MMethodDef>*/;
 var188 = 1;
@@ -959,7 +958,6 @@ var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var197)->values[2] = (val*) var_mpropdef184;
 ((struct instance_array__NativeArray*)var197)->values[3] = (val*) var_msignature187;
 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
-CHECK_NEW_array__Array(var195);
 }
 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
 var199 = 3;
@@ -999,6 +997,67 @@ void VIRTUAL_modelize_property__MClass__inherit_init_from_61d(val* self, val* p0
 modelize_property__MClass__inherit_init_from_61d(self, p0);
 RET_LABEL:;
 }
+/* method modelize_property#MClassDef#propdef_names for (self: MClassDef): HashSet[String] */
+val* modelize_property__MClassDef__propdef_names(val* self) {
+val* var /* : HashSet[String] */;
+val* var1 /* : HashSet[String] */;
+var1 = self->attrs[COLOR_modelize_property__MClassDef___64dpropdef_names].val; /* @propdef_names on <self:MClassDef> */
+if (var1 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @propdef_names");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 162);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MClassDef#propdef_names for (self: Object): HashSet[String] */
+val* VIRTUAL_modelize_property__MClassDef__propdef_names(val* self) {
+val* var /* : HashSet[String] */;
+val* var1 /* : HashSet[String] */;
+var1 = modelize_property__MClassDef__propdef_names(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MClassDef#propdef_names= for (self: MClassDef, HashSet[String]) */
+void modelize_property__MClassDef__propdef_names_61d(val* self, val* p0) {
+self->attrs[COLOR_modelize_property__MClassDef___64dpropdef_names].val = p0; /* @propdef_names on <self:MClassDef> */
+RET_LABEL:;
+}
+/* method modelize_property#MClassDef#propdef_names= for (self: Object, HashSet[String]) */
+void VIRTUAL_modelize_property__MClassDef__propdef_names_61d(val* self, val* p0) {
+modelize_property__MClassDef__propdef_names_61d(self, p0);
+RET_LABEL:;
+}
+/* method modelize_property#MPropDef#has_supercall for (self: MPropDef): Bool */
+short int modelize_property__MPropDef__has_supercall(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_modelize_property__MPropDef___64dhas_supercall].s; /* @has_supercall on <self:MPropDef> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MPropDef#has_supercall for (self: Object): Bool */
+short int VIRTUAL_modelize_property__MPropDef__has_supercall(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = modelize_property__MPropDef__has_supercall(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method modelize_property#MPropDef#has_supercall= for (self: MPropDef, Bool) */
+void modelize_property__MPropDef__has_supercall_61d(val* self, short int p0) {
+self->attrs[COLOR_modelize_property__MPropDef___64dhas_supercall].s = p0; /* @has_supercall on <self:MPropDef> */
+RET_LABEL:;
+}
+/* method modelize_property#MPropDef#has_supercall= for (self: Object, Bool) */
+void VIRTUAL_modelize_property__MPropDef__has_supercall_61d(val* self, short int p0) {
+modelize_property__MPropDef__has_supercall_61d(self, p0);
+RET_LABEL:;
+}
 /* method modelize_property#AClassdef#build_properties_is_done for (self: AClassdef): Bool */
 short int modelize_property__AClassdef__build_properties_is_done(val* self) {
 short int var /* : Bool */;
@@ -1089,8 +1148,9 @@ val* var /* : Map[MProperty, APropdef] */;
 val* var1 /* : Map[MProperty, APropdef] */;
 var1 = self->attrs[COLOR_modelize_property__AClassdef___64dmprop2npropdef].val; /* @mprop2npropdef on <self:AClassdef> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @mprop2npropdef", "src/modelize_property.nit", 170);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @mprop2npropdef");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 180);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1130,7 +1190,6 @@ short int var7 /* : Bool */;
 val* var8 /* : String */;
 var1 = NEW_modelize_property__TextCollectorVisitor(&type_modelize_property__TextCollectorVisitor);
 ((void (*)(val*))(var1->class->vft[COLOR_modelize_property__TextCollectorVisitor__init]))(var1) /* init on <var1:TextCollectorVisitor>*/;
-CHECK_NEW_modelize_property__TextCollectorVisitor(var1);
 var_v = var1;
 ((void (*)(val*, val*))(var_v->class->vft[COLOR_parser_nodes__Visitor__enter_visit]))(var_v, self) /* enter_visit on <var_v:TextCollectorVisitor>*/;
 var2 = ((val* (*)(val*))(var_v->class->vft[COLOR_modelize_property__TextCollectorVisitor__text]))(var_v) /* text on <var_v:TextCollectorVisitor>*/;
@@ -1145,8 +1204,9 @@ varonce = var3;
 }
 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___33d_61d]))(var2, var3) /* != on <var2:String>*/;
 if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/modelize_property.nit", 182);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 192);
+show_backtrace(1);
 }
 var8 = ((val* (*)(val*))(var_v->class->vft[COLOR_modelize_property__TextCollectorVisitor__text]))(var_v) /* text on <var_v:TextCollectorVisitor>*/;
 var = var8;
@@ -1169,8 +1229,9 @@ val* var /* : String */;
 val* var1 /* : String */;
 var1 = self->attrs[COLOR_modelize_property__TextCollectorVisitor___64dtext].val; /* @text on <self:TextCollectorVisitor> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @text", "src/modelize_property.nit", 189);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @text");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 199);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1264,9 +1325,10 @@ short int var /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
+const char* var_class_name;
 /* Covariant cast for argument 0 (mpropdef) <p0:nullable MPropDef> isa nullable MPROPDEF */
 /* <p0:nullable MPropDef> isa nullable MPROPDEF */
-type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
+type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
 cltype = type_struct->color;
 idtype = type_struct->id;
 if(p0 == NULL) {
@@ -1279,8 +1341,10 @@ var = p0->type->type_table[cltype] == idtype;
 }
 }
 if (!var) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 201);
-exit(1);
+var_class_name = p0 == NULL ? "null" : p0->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 211);
+show_backtrace(1);
 }
 self->attrs[COLOR_modelize_property__APropdef___64dmpropdef].val = p0; /* @mpropdef on <self:APropdef> */
 RET_LABEL:;
@@ -1292,8 +1356,11 @@ RET_LABEL:;
 }
 /* method modelize_property#APropdef#build_property for (self: APropdef, ModelBuilder, AClassdef) */
 void modelize_property__APropdef__build_property(val* self, val* p0, val* p1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/modelize_property.nit", 204);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "build_property", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 214);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method modelize_property#APropdef#build_property for (self: Object, ModelBuilder, AClassdef) */
@@ -1303,8 +1370,11 @@ RET_LABEL:;
 }
 /* method modelize_property#APropdef#build_signature for (self: APropdef, ModelBuilder, AClassdef) */
 void modelize_property__APropdef__build_signature(val* self, val* p0, val* p1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/modelize_property.nit", 205);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "build_signature", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 215);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method modelize_property#APropdef#build_signature for (self: Object, ModelBuilder, AClassdef) */
@@ -1314,8 +1384,11 @@ RET_LABEL:;
 }
 /* method modelize_property#APropdef#check_signature for (self: APropdef, ModelBuilder, AClassdef) */
 void modelize_property__APropdef__check_signature(val* self, val* p0, val* p1) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Deferred method called", "src/modelize_property.nit", 206);
-exit(1);
+const char* var_class_name;
+var_class_name = self == NULL ? "null" : self->type->name;
+fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "check_signature", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 216);
+show_backtrace(1);
 RET_LABEL:;
 }
 /* method modelize_property#APropdef#check_signature for (self: Object, ModelBuilder, AClassdef) */
@@ -1396,8 +1469,9 @@ var_mvisibility = var11;
 }
 var12 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var12 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 217);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 227);
+show_backtrace(1);
 } else {
 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClassDef__mclass]))(var12) /* mclass on <var12:nullable MClassDef>*/;
 }
@@ -1415,8 +1489,9 @@ var20 = 0; /* is null */
 var20 = 1; /* arg is null and recv is not */
 }
 if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/modelize_property.nit", 219);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 229);
+show_backtrace(1);
 }
 if (varonce21) {
 var22 = varonce21;
@@ -1439,8 +1514,9 @@ var29 = 0; /* is null */
 var29 = 1; /* arg is null and recv is not */
 }
 if (!var29) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/modelize_property.nit", 222);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 232);
+show_backtrace(1);
 }
 } else {
 }
@@ -1549,7 +1625,6 @@ var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var20)->values[2] = (val*) var14;
 ((struct instance_array__NativeArray*)var20)->values[3] = (val*) var_mvisibility;
 ((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
-CHECK_NEW_array__Array(var18);
 }
 var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_nvisibility, var21) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -1672,8 +1747,9 @@ varonce7 = var8;
 }
 var12 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var12 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 243);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 253);
+show_backtrace(1);
 } else {
 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClassDef__mclass]))(var12) /* mclass on <var12:nullable MClassDef>*/;
 }
@@ -1696,7 +1772,6 @@ var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var21)->values[3] = (val*) var13;
 ((struct instance_array__NativeArray*)var21)->values[4] = (val*) var15;
 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
-CHECK_NEW_array__Array(var19);
 }
 var22 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var22) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -1724,8 +1799,9 @@ varonce26 = var27;
 }
 var31 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var31 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 248);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 258);
+show_backtrace(1);
 } else {
 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_model__MClassDef__mclass]))(var31) /* mclass on <var31:nullable MClassDef>*/;
 }
@@ -1758,7 +1834,6 @@ var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var46)->values[3] = (val*) var38;
 ((struct instance_array__NativeArray*)var46)->values[4] = (val*) var40;
 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
-CHECK_NEW_array__Array(var44);
 }
 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var47) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -1781,8 +1856,9 @@ varonce50 = var51;
 }
 var55 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var55 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 253);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 263);
+show_backtrace(1);
 } else {
 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_model__MClassDef__mclass]))(var55) /* mclass on <var55:nullable MClassDef>*/;
 }
@@ -1815,7 +1891,6 @@ var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var70)->values[3] = (val*) var62;
 ((struct instance_array__NativeArray*)var70)->values[4] = (val*) var64;
 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
-CHECK_NEW_array__Array(var68);
 }
 var71 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var71) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -1874,8 +1949,9 @@ val* var /* : Array[String] */;
 val* var1 /* : Array[String] */;
 var1 = self->attrs[COLOR_modelize_property__ASignature___64dparam_names].val; /* @param_names on <self:ASignature> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @param_names", "src/modelize_property.nit", 265);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @param_names");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 275);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -1906,8 +1982,9 @@ val* var /* : Array[MType] */;
 val* var1 /* : Array[MType] */;
 var1 = self->attrs[COLOR_modelize_property__ASignature___64dparam_types].val; /* @param_types on <self:ASignature> */
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Uninitialized attribute @param_types", "src/modelize_property.nit", 268);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @param_types");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 278);
+show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
@@ -2066,17 +2143,8 @@ val* var68 /* : nullable MType */;
 val* var69 /* : null */;
 short int var70 /* : Bool */;
 short int var71 /* : Bool */;
-val* var72 /* : ANodes[AClosureDecl] */;
-val* var73 /* : Iterator[nullable Object] */;
-short int var74 /* : Bool */;
-val* var75 /* : nullable Object */;
-val* var_nclosure /* var nclosure: AClosureDecl */;
-val* var76 /* : ASignature */;
-short int var77 /* : Bool */;
-short int var78 /* : Bool */;
-short int var79 /* : Bool */;
-short int var81 /* : Bool */;
-short int var82 /* : Bool */;
+short int var72 /* : Bool */;
+short int var73 /* : Bool */;
 var_modelbuilder = p0;
 var_nclassdef = p1;
 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__param_names]))(self) /* param_names on <self:ASignature>*/;
@@ -2129,7 +2197,6 @@ RET_LABEL21:(void)0;
 var23 = BOX_kernel__Int(var17); /* autobox from Int to Discrete */
 var24 = BOX_kernel__Int(var20); /* autobox from Int to Discrete */
 ((void (*)(val*, val*, val*))(var16->class->vft[COLOR_range__Range__without_last]))(var16, var23, var24) /* without_last on <var16:Range[Int]>*/;
-CHECK_NEW_range__Range(var16);
 var25 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Collection__iterator]))(var16) /* iterator on <var16:Range[Int]>*/;
 for(;;) {
 var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on <var25:Iterator[nullable Object]>*/;
@@ -2194,7 +2261,6 @@ var54 = NEW_array__NativeArray(var53, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var54)->values[1] = (val*) var46;
 ((struct instance_array__NativeArray*)var54)->values[2] = (val*) var48;
 ((void (*)(val*, val*, long))(var52->class->vft[COLOR_array__Array__with_native]))(var52, var54, var53) /* with_native on <var52:Array[Object]>*/;
-CHECK_NEW_array__Array(var52);
 }
 var55 = ((val* (*)(val*))(var52->class->vft[COLOR_string__Object__to_s]))(var52) /* to_s on <var52:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_np, var55) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -2246,30 +2312,10 @@ goto RET_LABEL;
 }
 } else {
 }
-var72 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASignature__n_closure_decls]))(self) /* n_closure_decls on <self:ASignature>*/;
-var73 = ((val* (*)(val*))(var72->class->vft[COLOR_abstract_collection__Collection__iterator]))(var72) /* iterator on <var72:ANodes[AClosureDecl]>*/;
-for(;;) {
-var74 = ((short int (*)(val*))(var73->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var73) /* is_ok on <var73:Iterator[nullable Object]>*/;
-if(!var74) break;
-var75 = ((val* (*)(val*))(var73->class->vft[COLOR_abstract_collection__Iterator__item]))(var73) /* item on <var73:Iterator[nullable Object]>*/;
-var_nclosure = var75;
-var76 = ((val* (*)(val*))(var_nclosure->class->vft[COLOR_parser_nodes__AClosureDecl__n_signature]))(var_nclosure) /* n_signature on <var_nclosure:AClosureDecl>*/;
-var77 = ((short int (*)(val*, val*, val*))(var76->class->vft[COLOR_modelize_property__ASignature__visit_signature]))(var76, var_modelbuilder, var_nclassdef) /* visit_signature on <var76:ASignature>*/;
-var78 = !var77;
-if (var78){
-var79 = 0;
-var = var79;
-goto RET_LABEL;
-} else {
-}
-CONTINUE_label80: (void)0;
-((void (*)(val*))(var73->class->vft[COLOR_abstract_collection__Iterator__next]))(var73) /* next on <var73:Iterator[nullable Object]>*/;
-}
-BREAK_label80: (void)0;
-var81 = 1;
-((void (*)(val*, short int))(self->class->vft[COLOR_modelize_property__ASignature__is_visited_61d]))(self, var81) /* is_visited= on <self:ASignature>*/;
-var82 = 1;
-var = var82;
+var72 = 1;
+((void (*)(val*, short int))(self->class->vft[COLOR_modelize_property__ASignature__is_visited_61d]))(self, var72) /* is_visited= on <self:ASignature>*/;
+var73 = 1;
+var = var73;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
@@ -2393,7 +2439,6 @@ var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var20;
 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
-CHECK_NEW_array__Array(var26);
 }
 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var12, var29) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -2404,7 +2449,6 @@ goto RET_LABEL;
 }
 var31 = NEW_array__Array(&type_array__Arraymodel__MParameter);
 ((void (*)(val*))(var31->class->vft[COLOR_array__Array__init]))(var31) /* init on <var31:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var31);
 var_mparameters = var31;
 var32 = NEW_range__Range(&type_range__Rangekernel__Int);
 var33 = 0;
@@ -2413,7 +2457,6 @@ var35 = ((long (*)(val*))(var34->class->vft[COLOR_abstract_collection__Collectio
 var36 = BOX_kernel__Int(var33); /* autobox from Int to Discrete */
 var37 = BOX_kernel__Int(var35); /* autobox from Int to Discrete */
 ((void (*)(val*, val*, val*))(var32->class->vft[COLOR_range__Range__without_last]))(var32, var36, var37) /* without_last on <var32:Range[Int]>*/;
-CHECK_NEW_range__Range(var32);
 var38 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_collection__Collection__iterator]))(var32) /* iterator on <var32:Range[Int]>*/;
 for(;;) {
 var39 = ((short int (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var38) /* is_ok on <var38:Iterator[nullable Object]>*/;
@@ -2434,7 +2477,6 @@ goto RET_LABEL49;
 RET_LABEL49:(void)0;
 }
 ((void (*)(val*, val*, val*, short int))(var42->class->vft[COLOR_model__MParameter__init]))(var42, var44, var46, var48) /* init on <var42:MParameter>*/;
-CHECK_NEW_model__MParameter(var42);
 var_mparameter = var42;
 var51 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ASignature__n_params]))(self) /* n_params on <self:ASignature>*/;
 var52 = ((val* (*)(val*, long))(var51->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var51, var_i) /* [] on <var51:ANodes[AParam]>*/;
@@ -2447,7 +2489,6 @@ BREAK_label: (void)0;
 var53 = NEW_model__MSignature(&type_model__MSignature);
 var54 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__ASignature__ret_type]))(self) /* ret_type on <self:ASignature>*/;
 ((void (*)(val*, val*, val*))(var53->class->vft[COLOR_model__MSignature__init]))(var53, var_mparameters, var54) /* init on <var53:MSignature>*/;
-CHECK_NEW_model__MSignature(var53);
 var_msignature = var53;
 var = var_msignature;
 goto RET_LABEL;
@@ -2569,6 +2610,7 @@ val* var61 /* : nullable MProperty */;
 short int var62 /* : Bool */;
 int cltype63;
 int idtype64;
+const char* var_class_name;
 val* var65 /* : null */;
 short int var66 /* : Bool */;
 val* var67 /* : nullable AVisibility */;
@@ -2597,36 +2639,77 @@ val* var88 /* : Map[MProperty, APropdef] */;
 val* var89 /* : MMethodDef */;
 val* var90 /* : Location */;
 val* var_mpropdef /* var mpropdef: MMethodDef */;
-short int var91 /* : Bool */;
-int cltype92;
-int idtype93;
-const struct type* type_struct;
-val* var94 /* : HashMap[MPropDef, APropdef] */;
-short int var95 /* : Bool */;
-val* var96 /* : ToolContext */;
-static val* varonce97;
-val* var98 /* : String */;
-char* var99 /* : NativeString */;
-long var100 /* : Int */;
+val* var91 /* : HashSet[String] */;
+val* var92 /* : String */;
+short int var93 /* : Bool */;
+val* var94 /* : null */;
+val* var_loc /* var loc: nullable Location */;
+val* var95 /* : Array[MPropDef] */;
+val* var96 /* : Iterator[nullable Object] */;
+short int var97 /* : Bool */;
+val* var98 /* : nullable Object */;
+val* var_i /* var i: MPropDef */;
+val* var99 /* : MProperty */;
+val* var100 /* : String */;
 val* var101 /* : String */;
-val* var102 /* : String */;
-val* var103 /* : Array[Object] */;
-long var104 /* : Int */;
-val* var105 /* : NativeArray[Object] */;
-val* var106 /* : String */;
-long var107 /* : Int */;
-val* var108 /* : ToolContext */;
-static val* varonce109;
+short int var102 /* : Bool */;
+val* var103 /* : Location */;
+val* var104 /* : null */;
+short int var105 /* : Bool */;
+static val* varonce106;
+val* var107 /* : String */;
+char* var108 /* : NativeString */;
+long var109 /* : Int */;
 val* var110 /* : String */;
-char* var111 /* : NativeString */;
-long var112 /* : Int */;
-val* var113 /* : String */;
-val* var114 /* : String */;
-val* var115 /* : Array[Object] */;
-long var116 /* : Int */;
-val* var117 /* : NativeArray[Object] */;
+static val* varonce111;
+val* var112 /* : String */;
+char* var113 /* : NativeString */;
+long var114 /* : Int */;
+val* var115 /* : String */;
+val* var116 /* : MClass */;
+static val* varonce117;
 val* var118 /* : String */;
-long var119 /* : Int */;
+char* var119 /* : NativeString */;
+long var120 /* : Int */;
+val* var121 /* : String */;
+val* var122 /* : Array[Object] */;
+long var123 /* : Int */;
+val* var124 /* : NativeArray[Object] */;
+val* var125 /* : String */;
+val* var126 /* : HashSet[String] */;
+val* var127 /* : MProperty */;
+val* var128 /* : String */;
+short int var129 /* : Bool */;
+int cltype130;
+int idtype131;
+const struct type* type_struct;
+const char* var_class_name132;
+val* var133 /* : HashMap[MPropDef, APropdef] */;
+short int var134 /* : Bool */;
+val* var135 /* : ToolContext */;
+static val* varonce136;
+val* var137 /* : String */;
+char* var138 /* : NativeString */;
+long var139 /* : Int */;
+val* var140 /* : String */;
+val* var141 /* : String */;
+val* var142 /* : Array[Object] */;
+long var143 /* : Int */;
+val* var144 /* : NativeArray[Object] */;
+val* var145 /* : String */;
+long var146 /* : Int */;
+val* var147 /* : ToolContext */;
+static val* varonce148;
+val* var149 /* : String */;
+char* var150 /* : NativeString */;
+long var151 /* : Int */;
+val* var152 /* : String */;
+val* var153 /* : String */;
+val* var154 /* : Array[Object] */;
+long var155 /* : Int */;
+val* var156 /* : NativeArray[Object] */;
+val* var157 /* : String */;
+long var158 /* : Int */;
 var_modelbuilder = p0;
 var_nclassdef = p1;
 /* <self:AMethPropdef> isa AInitPropdef */
@@ -2640,8 +2723,9 @@ var = self->type->type_table[cltype] == idtype;
 var_is_init = var;
 var1 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 347);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 353);
+show_backtrace(1);
 }
 var_mclassdef = var1;
 var2 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_methid]))(self) /* n_methid on <self:AMethPropdef>*/;
@@ -2718,8 +2802,9 @@ var_name = var25;
 var29 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AExternInitPropdef__n_kwnew]))(self) /* n_kwnew on <self:AMethPropdef(AExternInitPropdef)>*/;
 var_name_node = var29;
 } else {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Aborted", "src/modelize_property.nit", 362);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 368);
+show_backtrace(1);
 }
 }
 }
@@ -2756,8 +2841,9 @@ var36 = 0;
 } else {
 var43 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_signature]))(self) /* n_signature on <self:AMethPropdef>*/;
 if (var43 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 372);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 378);
+show_backtrace(1);
 } else {
 var44 = ((val* (*)(val*))(var43->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var43) /* n_params on <var43:nullable ASignature>*/;
 }
@@ -2817,8 +2903,10 @@ var62 = var61->type->type_table[cltype63] == idtype64;
 }
 }
 if (!var62) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 378);
-exit(1);
+var_class_name = var61 == NULL ? "null" : var61->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 384);
+show_backtrace(1);
 }
 var_mprop = var61;
 } else {
@@ -2835,7 +2923,6 @@ var68 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_prop
 var_mvisibility = var68;
 var69 = NEW_model__MMethod(&type_model__MMethod);
 ((void (*)(val*, val*, val*, val*))(var69->class->vft[COLOR_model__MMethod__init]))(var69, var_mclassdef, var_name, var_mvisibility) /* init on <var69:MMethod>*/;
-CHECK_NEW_model__MMethod(var69);
 var_mprop = var69;
 ((void (*)(val*, short int))(var_mprop->class->vft[COLOR_model__MMethod__is_init_61d]))(var_mprop, var_is_init) /* is_init= on <var_mprop:nullable MMethod(MMethod)>*/;
 /* <self:AMethPropdef> isa AExternInitPropdef */
@@ -2893,75 +2980,161 @@ var88 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__ACl
 var89 = NEW_model__MMethodDef(&type_model__MMethodDef);
 var90 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AMethPropdef>*/;
 ((void (*)(val*, val*, val*, val*))(var89->class->vft[COLOR_model__MMethodDef__init]))(var89, var_mclassdef, var_mprop, var90) /* init on <var89:MMethodDef>*/;
-CHECK_NEW_model__MMethodDef(var89);
 var_mpropdef = var89;
-/* <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
-type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
-cltype92 = type_struct->color;
-idtype93 = type_struct->id;
-if(cltype92 >= var_mpropdef->type->table_size) {
-var91 = 0;
+var91 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_modelize_property__MClassDef__propdef_names]))(var_mclassdef) /* propdef_names on <var_mclassdef:MClassDef>*/;
+var92 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__name]))(var_mprop) /* name on <var_mprop:nullable MMethod(MMethod)>*/;
+var93 = ((short int (*)(val*, val*))(var91->class->vft[COLOR_abstract_collection__Collection__has]))(var91, var92) /* has on <var91:HashSet[String]>*/;
+if (var93){
+var94 = NULL;
+var_loc = var94;
+var95 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
+var96 = ((val* (*)(val*))(var95->class->vft[COLOR_abstract_collection__Collection__iterator]))(var95) /* iterator on <var95:Array[MPropDef]>*/;
+for(;;) {
+var97 = ((short int (*)(val*))(var96->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var96) /* is_ok on <var96:Iterator[nullable Object]>*/;
+if(!var97) break;
+var98 = ((val* (*)(val*))(var96->class->vft[COLOR_abstract_collection__Iterator__item]))(var96) /* item on <var96:Iterator[nullable Object]>*/;
+var_i = var98;
+var99 = ((val* (*)(val*))(var_i->class->vft[COLOR_model__MPropDef__mproperty]))(var_i) /* mproperty on <var_i:MPropDef>*/;
+var100 = ((val* (*)(val*))(var99->class->vft[COLOR_model__MProperty__name]))(var99) /* name on <var99:MProperty>*/;
+var101 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__name]))(var_mprop) /* name on <var_mprop:nullable MMethod(MMethod)>*/;
+var102 = ((short int (*)(val*, val*))(var100->class->vft[COLOR_kernel__Object___61d_61d]))(var100, var101) /* == on <var100:String>*/;
+if (var102){
+var103 = ((val* (*)(val*))(var_i->class->vft[COLOR_model__MPropDef__location]))(var_i) /* location on <var_i:MPropDef>*/;
+var_loc = var103;
+goto BREAK_label;
 } else {
-var91 = var_mpropdef->type->type_table[cltype92] == idtype93;
-}
-if (!var91) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 399);
-exit(1);
 }
-((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:AMethPropdef>*/;
-var94 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
-((void (*)(val*, val*, val*))(var94->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var94, var_mpropdef, self) /* []= on <var94:HashMap[MPropDef, APropdef]>*/;
-var95 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__is_intro]))(var_mpropdef) /* is_intro on <var_mpropdef:MMethodDef>*/;
-if (var95){
-var96 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var_modelbuilder) /* toolcontext on <var_modelbuilder:ModelBuilder>*/;
-if (varonce97) {
-var98 = varonce97;
-} else {
-var99 = " introduces new method ";
-var100 = 23;
-var101 = string__NativeString__to_s_with_length(var99, var100);
-var98 = var101;
-varonce97 = var98;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var96->class->vft[COLOR_abstract_collection__Iterator__next]))(var96) /* next on <var96:Iterator[nullable Object]>*/;
 }
-var102 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:nullable MMethod(MMethod)>*/;
-var103 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var103 = array_instance Array[Object] */
-var104 = 3;
-var105 = NEW_array__NativeArray(var104, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var105)->values[0] = (val*) var_mpropdef;
-((struct instance_array__NativeArray*)var105)->values[1] = (val*) var98;
-((struct instance_array__NativeArray*)var105)->values[2] = (val*) var102;
-((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[Object]>*/;
-CHECK_NEW_array__Array(var103);
-}
-var106 = ((val* (*)(val*))(var103->class->vft[COLOR_string__Object__to_s]))(var103) /* to_s on <var103:Array[Object]>*/;
-var107 = 3;
-((void (*)(val*, val*, long))(var96->class->vft[COLOR_toolcontext__ToolContext__info]))(var96, var106, var107) /* info on <var96:ToolContext>*/;
-} else {
-var108 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var_modelbuilder) /* toolcontext on <var_modelbuilder:ModelBuilder>*/;
-if (varonce109) {
-var110 = varonce109;
+BREAK_label: (void)0;
+var104 = NULL;
+if (var_loc == NULL) {
+var105 = 1; /* is null */
+} else {
+var105 = 0; /* arg is null but recv is not */
+}
+if (var105){
+fprintf(stderr, "Runtime error: %s", "Aborted");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 413);
+show_backtrace(1);
+} else {
+}
+if (varonce106) {
+var107 = varonce106;
+} else {
+var108 = "Error: a property ";
+var109 = 18;
+var110 = string__NativeString__to_s_with_length(var108, var109);
+var107 = var110;
+varonce106 = var107;
+}
+if (varonce111) {
+var112 = varonce111;
+} else {
+var113 = " is already defined in class ";
+var114 = 29;
+var115 = string__NativeString__to_s_with_length(var113, var114);
+var112 = var115;
+varonce111 = var112;
+}
+var116 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
+if (varonce117) {
+var118 = varonce117;
+} else {
+var119 = " at ";
+var120 = 4;
+var121 = string__NativeString__to_s_with_length(var119, var120);
+var118 = var121;
+varonce117 = var118;
+}
+var122 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var122 = array_instance Array[Object] */
+var123 = 6;
+var124 = NEW_array__NativeArray(var123, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var124)->values[0] = (val*) var107;
+((struct instance_array__NativeArray*)var124)->values[1] = (val*) var_mprop;
+((struct instance_array__NativeArray*)var124)->values[2] = (val*) var112;
+((struct instance_array__NativeArray*)var124)->values[3] = (val*) var116;
+((struct instance_array__NativeArray*)var124)->values[4] = (val*) var118;
+((struct instance_array__NativeArray*)var124)->values[5] = (val*) var_loc;
+((void (*)(val*, val*, long))(var122->class->vft[COLOR_array__Array__with_native]))(var122, var124, var123) /* with_native on <var122:Array[Object]>*/;
+}
+var125 = ((val* (*)(val*))(var122->class->vft[COLOR_string__Object__to_s]))(var122) /* to_s on <var122:Array[Object]>*/;
+((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var125) /* error on <var_modelbuilder:ModelBuilder>*/;
+} else {
+}
+var126 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_modelize_property__MClassDef__propdef_names]))(var_mclassdef) /* propdef_names on <var_mclassdef:MClassDef>*/;
+var127 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:MMethodDef>*/;
+var128 = ((val* (*)(val*))(var127->class->vft[COLOR_model__MProperty__name]))(var127) /* name on <var127:MProperty(MMethod)>*/;
+((void (*)(val*, val*))(var126->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var126, var128) /* add on <var126:HashSet[String]>*/;
+/* <var_mpropdef:MMethodDef> isa nullable MPROPDEF */
+type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
+cltype130 = type_struct->color;
+idtype131 = type_struct->id;
+if(cltype130 >= var_mpropdef->type->table_size) {
+var129 = 0;
 } else {
-var111 = " redefines method ";
-var112 = 18;
-var113 = string__NativeString__to_s_with_length(var111, var112);
-var110 = var113;
-varonce109 = var110;
+var129 = var_mpropdef->type->type_table[cltype130] == idtype131;
 }
-var114 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:nullable MMethod(MMethod)>*/;
-var115 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var115 = array_instance Array[Object] */
-var116 = 3;
-var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var117)->values[0] = (val*) var_mpropdef;
-((struct instance_array__NativeArray*)var117)->values[1] = (val*) var110;
-((struct instance_array__NativeArray*)var117)->values[2] = (val*) var114;
-((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
-CHECK_NEW_array__Array(var115);
+if (!var129) {
+var_class_name132 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name132);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 419);
+show_backtrace(1);
 }
-var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
-var119 = 3;
-((void (*)(val*, val*, long))(var108->class->vft[COLOR_toolcontext__ToolContext__info]))(var108, var118, var119) /* info on <var108:ToolContext>*/;
+((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:AMethPropdef>*/;
+var133 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
+((void (*)(val*, val*, val*))(var133->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var133, var_mpropdef, self) /* []= on <var133:HashMap[MPropDef, APropdef]>*/;
+var134 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__is_intro]))(var_mpropdef) /* is_intro on <var_mpropdef:MMethodDef>*/;
+if (var134){
+var135 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var_modelbuilder) /* toolcontext on <var_modelbuilder:ModelBuilder>*/;
+if (varonce136) {
+var137 = varonce136;
+} else {
+var138 = " introduces new method ";
+var139 = 23;
+var140 = string__NativeString__to_s_with_length(var138, var139);
+var137 = var140;
+varonce136 = var137;
+}
+var141 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:nullable MMethod(MMethod)>*/;
+var142 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var142 = array_instance Array[Object] */
+var143 = 3;
+var144 = NEW_array__NativeArray(var143, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var144)->values[0] = (val*) var_mpropdef;
+((struct instance_array__NativeArray*)var144)->values[1] = (val*) var137;
+((struct instance_array__NativeArray*)var144)->values[2] = (val*) var141;
+((void (*)(val*, val*, long))(var142->class->vft[COLOR_array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[Object]>*/;
+}
+var145 = ((val* (*)(val*))(var142->class->vft[COLOR_string__Object__to_s]))(var142) /* to_s on <var142:Array[Object]>*/;
+var146 = 3;
+((void (*)(val*, val*, long))(var135->class->vft[COLOR_toolcontext__ToolContext__info]))(var135, var145, var146) /* info on <var135:ToolContext>*/;
+} else {
+var147 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var_modelbuilder) /* toolcontext on <var_modelbuilder:ModelBuilder>*/;
+if (varonce148) {
+var149 = varonce148;
+} else {
+var150 = " redefines method ";
+var151 = 18;
+var152 = string__NativeString__to_s_with_length(var150, var151);
+var149 = var152;
+varonce148 = var149;
+}
+var153 = ((val* (*)(val*))(var_mprop->class->vft[COLOR_model__MProperty__full_name]))(var_mprop) /* full_name on <var_mprop:nullable MMethod(MMethod)>*/;
+var154 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var154 = array_instance Array[Object] */
+var155 = 3;
+var156 = NEW_array__NativeArray(var155, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var156)->values[0] = (val*) var_mpropdef;
+((struct instance_array__NativeArray*)var156)->values[1] = (val*) var149;
+((struct instance_array__NativeArray*)var156)->values[2] = (val*) var153;
+((void (*)(val*, val*, long))(var154->class->vft[COLOR_array__Array__with_native]))(var154, var156, var155) /* with_native on <var154:Array[Object]>*/;
+}
+var157 = ((val* (*)(val*))(var154->class->vft[COLOR_string__Object__to_s]))(var154) /* to_s on <var154:Array[Object]>*/;
+var158 = 3;
+((void (*)(val*, val*, long))(var147->class->vft[COLOR_toolcontext__ToolContext__info]))(var147, var157, var158) /* info on <var147:ToolContext>*/;
 }
 RET_LABEL:;
 }
@@ -3076,6 +3249,7 @@ val* var88 /* : MPropDef */;
 short int var89 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 val* var90 /* : nullable MSignature */;
 short int var91 /* : Bool */;
 short int var92 /* : Bool */;
@@ -3163,24 +3337,6 @@ val* var176 /* : MSignature */;
 short int var177 /* : Bool */;
 int cltype178;
 int idtype179;
-val* var180 /* : null */;
-short int var181 /* : Bool */;
-val* var182 /* : ANodes[AClosureDecl] */;
-val* var183 /* : Iterator[nullable Object] */;
-short int var184 /* : Bool */;
-val* var185 /* : nullable Object */;
-val* var_nclosure /* var nclosure: AClosureDecl */;
-val* var186 /* : ASignature */;
-val* var187 /* : nullable MSignature */;
-val* var_clos_signature /* var clos_signature: nullable MSignature */;
-val* var188 /* : null */;
-short int var189 /* : Bool */;
-val* var190 /* : MParameter */;
-val* var191 /* : TId */;
-val* var192 /* : String */;
-short int var193 /* : Bool */;
-val* var_mparameter194 /* var mparameter: MParameter */;
-val* var195 /* : Array[MParameter] */;
 var_modelbuilder = p0;
 var_nclassdef = p1;
 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AMethPropdef>*/;
@@ -3202,11 +3358,9 @@ var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_si
 var_nsig = var5;
 var6 = NEW_array__Array(&type_array__Arraystring__String);
 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[String]>*/;
-CHECK_NEW_array__Array(var6);
 var_param_names = var6;
 var7 = NEW_array__Array(&type_array__Arraymodel__MType);
 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[MType]>*/;
-CHECK_NEW_array__Array(var7);
 var_param_types = var7;
 var8 = 1;
 { /* Inline kernel#Int#unary - (var8) */
@@ -3348,7 +3502,6 @@ var69 = BOX_kernel__Int(var59); /* autobox from Int to Object */
 ((struct instance_array__NativeArray*)var67)->values[9] = (val*) var_mpropdef;
 ((struct instance_array__NativeArray*)var67)->values[10] = (val*) var_msignature;
 ((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
-CHECK_NEW_array__Array(var65);
 }
 var70 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node, var70) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -3361,8 +3514,9 @@ var72 = ((short int (*)(val*))(var71->class->vft[COLOR_model__MMethod__is_init])
 if (var72){
 var73 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var73 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 444);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 464);
+show_backtrace(1);
 } else {
 var74 = ((val* (*)(val*))(var73->class->vft[COLOR_model__MClassDef__supertypes]))(var73) /* supertypes on <var73:nullable MClassDef>*/;
 }
@@ -3374,8 +3528,9 @@ var77 = ((val* (*)(val*))(var75->class->vft[COLOR_abstract_collection__Iterator_
 var_msupertype = var77;
 var78 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var78 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 445);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 465);
+show_backtrace(1);
 } else {
 var79 = ((val* (*)(val*))(var78->class->vft[COLOR_model__MClassDef__bound_mtype]))(var78) /* bound_mtype on <var78:nullable MClassDef>*/;
 }
@@ -3409,8 +3564,10 @@ var89 = 0;
 var89 = var88->type->type_table[cltype] == idtype;
 }
 if (!var89) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 449);
-exit(1);
+var_class_name = var88 == NULL ? "null" : var88->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MMethodDef", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 469);
+show_backtrace(1);
 }
 var90 = ((val* (*)(val*))(var88->class->vft[COLOR_model__MMethodDef__msignature]))(var88) /* msignature on <var88:MPropDef(MMethodDef)>*/;
 var_msignature = var90;
@@ -3477,7 +3634,6 @@ var91 = var_108;
 if (var91){
 var114 = NEW_array__Array(&type_array__Arraymodel__MType);
 ((void (*)(val*))(var114->class->vft[COLOR_array__Array__init]))(var114) /* init on <var114:Array[MType]>*/;
-CHECK_NEW_array__Array(var114);
 var_param_types = var114;
 var115 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:nullable MSignature(MSignature)>*/;
 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_collection__Collection__iterator]))(var115) /* iterator on <var115:Array[MParameter]>*/;
@@ -3530,8 +3686,9 @@ RET_LABEL132:(void)0;
 }
 if (var131){
 if (var_nsig == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 471);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 491);
+show_backtrace(1);
 } else {
 var135 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var_nsig) /* n_params on <var_nsig:nullable ASignature>*/;
 }
@@ -3565,7 +3722,6 @@ var152 = NEW_array__NativeArray(var151, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var152)->values[1] = (val*) var144;
 ((struct instance_array__NativeArray*)var152)->values[2] = (val*) var146;
 ((void (*)(val*, val*, long))(var150->class->vft[COLOR_array__Array__with_native]))(var150, var152, var151) /* with_native on <var150:Array[Object]>*/;
-CHECK_NEW_array__Array(var150);
 }
 var153 = ((val* (*)(val*))(var150->class->vft[COLOR_string__Object__to_s]))(var150) /* to_s on <var150:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var137, var153) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -3574,7 +3730,6 @@ goto RET_LABEL;
 }
 var154 = NEW_array__Array(&type_array__Arraymodel__MParameter);
 ((void (*)(val*))(var154->class->vft[COLOR_array__Array__init]))(var154) /* init on <var154:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var154);
 var_mparameters = var154;
 var155 = NEW_range__Range(&type_range__Rangekernel__Int);
 var156 = 0;
@@ -3582,7 +3737,6 @@ var157 = ((long (*)(val*))(var_param_names->class->vft[COLOR_abstract_collection
 var158 = BOX_kernel__Int(var156); /* autobox from Int to Discrete */
 var159 = BOX_kernel__Int(var157); /* autobox from Int to Discrete */
 ((void (*)(val*, val*, val*))(var155->class->vft[COLOR_range__Range__without_last]))(var155, var158, var159) /* without_last on <var155:Range[Int]>*/;
-CHECK_NEW_range__Range(var155);
 var160 = ((val* (*)(val*))(var155->class->vft[COLOR_abstract_collection__Collection__iterator]))(var155) /* iterator on <var155:Range[Int]>*/;
 for(;;) {
 var161 = ((short int (*)(val*))(var160->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var160) /* is_ok on <var160:Iterator[nullable Object]>*/;
@@ -3600,7 +3754,6 @@ goto RET_LABEL168;
 RET_LABEL168:(void)0;
 }
 ((void (*)(val*, val*, val*, short int))(var164->class->vft[COLOR_model__MParameter__init]))(var164, var165, var166, var167) /* init on <var164:MParameter>*/;
-CHECK_NEW_model__MParameter(var164);
 var_mparameter170 = var164;
 var171 = NULL;
 if (var_nsig == NULL) {
@@ -3621,7 +3774,6 @@ CONTINUE_label175: (void)0;
 BREAK_label175: (void)0;
 var176 = NEW_model__MSignature(&type_model__MSignature);
 ((void (*)(val*, val*, val*))(var176->class->vft[COLOR_model__MSignature__init]))(var176, var_mparameters, var_ret_type) /* init on <var176:MSignature>*/;
-CHECK_NEW_model__MSignature(var176);
 var_msignature = var176;
 ((void (*)(val*, val*))(var_mpropdef->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mpropdef, var_msignature) /* msignature= on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
 /* <self:AMethPropdef> isa ADeferredMethPropdef */
@@ -3633,48 +3785,6 @@ var177 = 0;
 var177 = self->type->type_table[cltype178] == idtype179;
 }
 ((void (*)(val*, short int))(var_mpropdef->class->vft[COLOR_model__MMethodDef__is_abstract_61d]))(var_mpropdef, var177) /* is_abstract= on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
-var180 = NULL;
-if (var_nsig == NULL) {
-var181 = 0; /* is null */
-} else {
-var181 = 1; /* arg is null and recv is not */
-}
-if (var181){
-var182 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_closure_decls]))(var_nsig) /* n_closure_decls on <var_nsig:nullable ASignature(ASignature)>*/;
-var183 = ((val* (*)(val*))(var182->class->vft[COLOR_abstract_collection__Collection__iterator]))(var182) /* iterator on <var182:ANodes[AClosureDecl]>*/;
-for(;;) {
-var184 = ((short int (*)(val*))(var183->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var183) /* is_ok on <var183:Iterator[nullable Object]>*/;
-if(!var184) break;
-var185 = ((val* (*)(val*))(var183->class->vft[COLOR_abstract_collection__Iterator__item]))(var183) /* item on <var183:Iterator[nullable Object]>*/;
-var_nclosure = var185;
-var186 = ((val* (*)(val*))(var_nclosure->class->vft[COLOR_parser_nodes__AClosureDecl__n_signature]))(var_nclosure) /* n_signature on <var_nclosure:AClosureDecl>*/;
-var187 = ((val* (*)(val*, val*, val*))(var186->class->vft[COLOR_modelize_property__ASignature__build_signature]))(var186, var_modelbuilder, var_nclassdef) /* build_signature on <var186:ASignature>*/;
-var_clos_signature = var187;
-var188 = NULL;
-if (var_clos_signature == NULL) {
-var189 = 1; /* is null */
-} else {
-var189 = 0; /* arg is null but recv is not */
-}
-if (var189){
-goto RET_LABEL;
-} else {
-}
-var190 = NEW_model__MParameter(&type_model__MParameter);
-var191 = ((val* (*)(val*))(var_nclosure->class->vft[COLOR_parser_nodes__AClosureDecl__n_id]))(var_nclosure) /* n_id on <var_nclosure:AClosureDecl>*/;
-var192 = ((val* (*)(val*))(var191->class->vft[COLOR_parser_nodes__Token__text]))(var191) /* text on <var191:TId>*/;
-var193 = 0;
-((void (*)(val*, val*, val*, short int))(var190->class->vft[COLOR_model__MParameter__init]))(var190, var192, var_clos_signature, var193) /* init on <var190:MParameter>*/;
-CHECK_NEW_model__MParameter(var190);
-var_mparameter194 = var190;
-var195 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mclosures]))(var_msignature) /* mclosures on <var_msignature:nullable MSignature(MSignature)>*/;
-((void (*)(val*, val*))(var195->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var195, var_mparameter194) /* add on <var195:Array[MParameter]>*/;
-CONTINUE_label196: (void)0;
-((void (*)(val*))(var183->class->vft[COLOR_abstract_collection__Iterator__next]))(var183) /* next on <var183:Iterator[nullable Object]>*/;
-}
-BREAK_label196: (void)0;
-} else {
-}
 RET_LABEL:;
 }
 /* method modelize_property#AMethPropdef#build_signature for (self: Object, ModelBuilder, AClassdef) */
@@ -3740,6 +3850,7 @@ short int var41 /* : Bool */;
 short int var43 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 short int var44 /* : Bool */;
 val* var45 /* : Range[Int] */;
 long var46 /* : Int */;
@@ -3794,38 +3905,52 @@ val* var91 /* : String */;
 char* var92 /* : NativeString */;
 long var93 /* : Int */;
 val* var94 /* : String */;
-val* var95 /* : Array[Object] */;
-long var96 /* : Int */;
-val* var97 /* : NativeArray[Object] */;
+val* var95 /* : MProperty */;
+val* var96 /* : MPropDef */;
+static val* varonce97;
 val* var98 /* : String */;
-val* var99 /* : null */;
-short int var100 /* : Bool */;
-val* var101 /* : null */;
-short int var102 /* : Bool */;
-val* var103 /* : nullable MClassDef */;
-val* var104 /* : MClassType */;
-short int var105 /* : Bool */;
-short int var106 /* : Bool */;
-val* var107 /* : nullable AType */;
-static val* varonce108;
-val* var109 /* : String */;
-char* var110 /* : NativeString */;
-long var111 /* : Int */;
-val* var112 /* : String */;
-static val* varonce113;
-val* var114 /* : String */;
-char* var115 /* : NativeString */;
-long var116 /* : Int */;
-val* var117 /* : String */;
-static val* varonce118;
+char* var99 /* : NativeString */;
+long var100 /* : Int */;
+val* var101 /* : String */;
+val* var102 /* : Array[Object] */;
+long var103 /* : Int */;
+val* var104 /* : NativeArray[Object] */;
+val* var105 /* : String */;
+val* var106 /* : null */;
+short int var107 /* : Bool */;
+val* var108 /* : null */;
+short int var109 /* : Bool */;
+val* var110 /* : nullable MClassDef */;
+val* var111 /* : MClassType */;
+short int var112 /* : Bool */;
+short int var113 /* : Bool */;
+val* var114 /* : nullable AType */;
+static val* varonce115;
+val* var116 /* : String */;
+char* var117 /* : NativeString */;
+long var118 /* : Int */;
 val* var119 /* : String */;
-char* var120 /* : NativeString */;
-long var121 /* : Int */;
-val* var122 /* : String */;
-val* var123 /* : Array[Object] */;
-long var124 /* : Int */;
-val* var125 /* : NativeArray[Object] */;
+static val* varonce120;
+val* var121 /* : String */;
+char* var122 /* : NativeString */;
+long var123 /* : Int */;
+val* var124 /* : String */;
+static val* varonce125;
 val* var126 /* : String */;
+char* var127 /* : NativeString */;
+long var128 /* : Int */;
+val* var129 /* : String */;
+val* var130 /* : MProperty */;
+val* var131 /* : MPropDef */;
+static val* varonce132;
+val* var133 /* : String */;
+char* var134 /* : NativeString */;
+long var135 /* : Int */;
+val* var136 /* : String */;
+val* var137 /* : Array[Object] */;
+long var138 /* : Int */;
+val* var139 /* : NativeArray[Object] */;
+val* var140 /* : String */;
 var_modelbuilder = p0;
 var_nclassdef = p1;
 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AMethPropdef>*/;
@@ -3847,8 +3972,9 @@ var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AMethPropdef__n_si
 var_nsig = var5;
 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AMethPropdef>*/;
 if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 503);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 513);
+show_backtrace(1);
 } else {
 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MMethodDef__msignature]))(var6) /* msignature on <var6:nullable MPropDef(nullable MMethodDef)>*/;
 }
@@ -3904,14 +4030,16 @@ var19 = var_;
 }
 if (var19){
 if (var_nsig == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 515);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 525);
+show_backtrace(1);
 } else {
 var24 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_type]))(var_nsig) /* n_type on <var_nsig:nullable ASignature>*/;
 }
 if (var24 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 515);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 525);
+show_backtrace(1);
 }
 if (varonce) {
 var25 = varonce;
@@ -3940,7 +4068,6 @@ var37 = NEW_array__NativeArray(var36, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var37)->values[1] = (val*) var29;
 ((struct instance_array__NativeArray*)var37)->values[2] = (val*) var31;
 ((void (*)(val*, val*, long))(var35->class->vft[COLOR_array__Array__with_native]))(var35, var37, var36) /* with_native on <var35:Array[Object]>*/;
-CHECK_NEW_array__Array(var35);
 }
 var38 = ((val* (*)(val*))(var35->class->vft[COLOR_string__Object__to_s]))(var35) /* to_s on <var35:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var24, var38) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -3954,8 +4081,10 @@ var40 = 0;
 /* <var40:Int> isa OTHER */
 var43 = 1; /* easy <var40:Int> isa OTHER*/
 if (!var43) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
-exit(1);
+var_class_name = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
+show_backtrace(1);
 }
 var44 = var39 > var40;
 var41 = var44;
@@ -3969,7 +4098,6 @@ var47 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__a
 var48 = BOX_kernel__Int(var46); /* autobox from Int to Discrete */
 var49 = BOX_kernel__Int(var47); /* autobox from Int to Discrete */
 ((void (*)(val*, val*, val*))(var45->class->vft[COLOR_range__Range__without_last]))(var45, var48, var49) /* without_last on <var45:Range[Int]>*/;
-CHECK_NEW_range__Range(var45);
 var50 = ((val* (*)(val*))(var45->class->vft[COLOR_abstract_collection__Collection__iterator]))(var45) /* iterator on <var45:Range[Int]>*/;
 for(;;) {
 var51 = ((short int (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var50) /* is_ok on <var50:Iterator[nullable Object]>*/;
@@ -3987,8 +4115,9 @@ var59 = ((val* (*)(val*))(var58->class->vft[COLOR_model__MParameter__mtype]))(va
 var_prt = var59;
 var61 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var61 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 524);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 534);
+show_backtrace(1);
 } else {
 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MClassDef__bound_mtype]))(var61) /* bound_mtype on <var61:nullable MClassDef>*/;
 }
@@ -3996,23 +4125,25 @@ var63 = ((short int (*)(val*, val*, val*, val*))(var_myt->class->vft[COLOR_model
 var64 = !var63;
 var_65 = var64;
 if (var64){
+var60 = var_65;
+} else {
 var66 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var66 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 525);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 535);
+show_backtrace(1);
 } else {
 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_model__MClassDef__bound_mtype]))(var66) /* bound_mtype on <var66:nullable MClassDef>*/;
 }
 var68 = ((short int (*)(val*, val*, val*, val*))(var_prt->class->vft[COLOR_model__MType__is_subtype]))(var_prt, var_mmodule, var67, var_myt) /* is_subtype on <var_prt:MType>*/;
 var69 = !var68;
 var60 = var69;
-} else {
-var60 = var_65;
 }
 if (var60){
 if (var_nsig == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 526);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 536);
+show_backtrace(1);
 } else {
 var70 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_params]))(var_nsig) /* n_params on <var_nsig:nullable ASignature>*/;
 }
@@ -4050,28 +4181,40 @@ varonce85 = var86;
 if (varonce90) {
 var91 = varonce90;
 } else {
-var92 = ".";
-var93 = 1;
+var92 = " as in ";
+var93 = 7;
 var94 = string__NativeString__to_s_with_length(var92, var93);
 var91 = var94;
 varonce90 = var91;
 }
-var95 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var95 = array_instance Array[Object] */
-var96 = 7;
-var97 = NEW_array__NativeArray(var96, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var97)->values[0] = (val*) var73;
-((struct instance_array__NativeArray*)var97)->values[1] = (val*) var79;
-((struct instance_array__NativeArray*)var97)->values[2] = (val*) var81;
-((struct instance_array__NativeArray*)var97)->values[3] = (val*) var_myt;
-((struct instance_array__NativeArray*)var97)->values[4] = (val*) var86;
-((struct instance_array__NativeArray*)var97)->values[5] = (val*) var_prt;
-((struct instance_array__NativeArray*)var97)->values[6] = (val*) var91;
-((void (*)(val*, val*, long))(var95->class->vft[COLOR_array__Array__with_native]))(var95, var97, var96) /* with_native on <var95:Array[Object]>*/;
-CHECK_NEW_array__Array(var95);
+var95 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
+var96 = ((val* (*)(val*))(var95->class->vft[COLOR_model__MProperty__intro]))(var95) /* intro on <var95:MProperty(MMethod)>*/;
+if (varonce97) {
+var98 = varonce97;
+} else {
+var99 = ".";
+var100 = 1;
+var101 = string__NativeString__to_s_with_length(var99, var100);
+var98 = var101;
+varonce97 = var98;
 }
-var98 = ((val* (*)(val*))(var95->class->vft[COLOR_string__Object__to_s]))(var95) /* to_s on <var95:Array[Object]>*/;
-((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var71, var98) /* error on <var_modelbuilder:ModelBuilder>*/;
+var102 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var102 = array_instance Array[Object] */
+var103 = 9;
+var104 = NEW_array__NativeArray(var103, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var104)->values[0] = (val*) var73;
+((struct instance_array__NativeArray*)var104)->values[1] = (val*) var79;
+((struct instance_array__NativeArray*)var104)->values[2] = (val*) var81;
+((struct instance_array__NativeArray*)var104)->values[3] = (val*) var_myt;
+((struct instance_array__NativeArray*)var104)->values[4] = (val*) var86;
+((struct instance_array__NativeArray*)var104)->values[5] = (val*) var_prt;
+((struct instance_array__NativeArray*)var104)->values[6] = (val*) var91;
+((struct instance_array__NativeArray*)var104)->values[7] = (val*) var96;
+((struct instance_array__NativeArray*)var104)->values[8] = (val*) var98;
+((void (*)(val*, val*, long))(var102->class->vft[COLOR_array__Array__with_native]))(var102, var104, var103) /* with_native on <var102:Array[Object]>*/;
+}
+var105 = ((val* (*)(val*))(var102->class->vft[COLOR_string__Object__to_s]))(var102) /* to_s on <var102:Array[Object]>*/;
+((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var71, var105) /* error on <var_modelbuilder:ModelBuilder>*/;
 } else {
 }
 CONTINUE_label: (void)0;
@@ -4080,83 +4223,98 @@ CONTINUE_label: (void)0;
 BREAK_label: (void)0;
 } else {
 }
-var99 = NULL;
+var106 = NULL;
 if (var_precursor_ret_type == NULL) {
-var100 = 0; /* is null */
+var107 = 0; /* is null */
 } else {
-var100 = 1; /* arg is null and recv is not */
+var107 = 1; /* arg is null and recv is not */
 }
-if (var100){
-var101 = NULL;
+if (var107){
+var108 = NULL;
 if (var_ret_type == NULL) {
-var102 = 1; /* is null */
+var109 = 1; /* is null */
 } else {
-var102 = 0; /* arg is null but recv is not */
+var109 = 0; /* arg is null but recv is not */
 }
-if (var102){
+if (var109){
 var_ret_type = var_precursor_ret_type;
 } else {
-var103 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
-if (var103 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 534);
-exit(1);
+var110 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
+if (var110 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 544);
+show_backtrace(1);
 } else {
-var104 = ((val* (*)(val*))(var103->class->vft[COLOR_model__MClassDef__bound_mtype]))(var103) /* bound_mtype on <var103:nullable MClassDef>*/;
+var111 = ((val* (*)(val*))(var110->class->vft[COLOR_model__MClassDef__bound_mtype]))(var110) /* bound_mtype on <var110:nullable MClassDef>*/;
 }
-var105 = ((short int (*)(val*, val*, val*, val*))(var_ret_type->class->vft[COLOR_model__MType__is_subtype]))(var_ret_type, var_mmodule, var104, var_precursor_ret_type) /* is_subtype on <var_ret_type:nullable MType(MType)>*/;
-var106 = !var105;
-if (var106){
+var112 = ((short int (*)(val*, val*, val*, val*))(var_ret_type->class->vft[COLOR_model__MType__is_subtype]))(var_ret_type, var_mmodule, var111, var_precursor_ret_type) /* is_subtype on <var_ret_type:nullable MType(MType)>*/;
+var113 = !var112;
+if (var113){
 if (var_nsig == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 535);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 545);
+show_backtrace(1);
 } else {
-var107 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_type]))(var_nsig) /* n_type on <var_nsig:nullable ASignature>*/;
+var114 = ((val* (*)(val*))(var_nsig->class->vft[COLOR_parser_nodes__ASignature__n_type]))(var_nsig) /* n_type on <var_nsig:nullable ASignature>*/;
 }
-if (var107 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 535);
-exit(1);
+if (var114 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 545);
+show_backtrace(1);
+}
+if (varonce115) {
+var116 = varonce115;
+} else {
+var117 = "Redef Error: Wrong return type. found ";
+var118 = 38;
+var119 = string__NativeString__to_s_with_length(var117, var118);
+var116 = var119;
+varonce115 = var116;
 }
-if (varonce108) {
-var109 = varonce108;
+if (varonce120) {
+var121 = varonce120;
 } else {
-var110 = "Redef Error: Wrong return type. found ";
-var111 = 38;
-var112 = string__NativeString__to_s_with_length(var110, var111);
-var109 = var112;
-varonce108 = var109;
+var122 = ", expected ";
+var123 = 11;
+var124 = string__NativeString__to_s_with_length(var122, var123);
+var121 = var124;
+varonce120 = var121;
 }
-if (varonce113) {
-var114 = varonce113;
+if (varonce125) {
+var126 = varonce125;
 } else {
-var115 = ", expected ";
-var116 = 11;
-var117 = string__NativeString__to_s_with_length(var115, var116);
-var114 = var117;
-varonce113 = var114;
+var127 = " as in ";
+var128 = 7;
+var129 = string__NativeString__to_s_with_length(var127, var128);
+var126 = var129;
+varonce125 = var126;
 }
-if (varonce118) {
-var119 = varonce118;
+var130 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mpropdef) /* mproperty on <var_mpropdef:nullable MMethodDef(MMethodDef)>*/;
+var131 = ((val* (*)(val*))(var130->class->vft[COLOR_model__MProperty__intro]))(var130) /* intro on <var130:MProperty(MMethod)>*/;
+if (varonce132) {
+var133 = varonce132;
 } else {
-var120 = ".";
-var121 = 1;
-var122 = string__NativeString__to_s_with_length(var120, var121);
-var119 = var122;
-varonce118 = var119;
+var134 = ".";
+var135 = 1;
+var136 = string__NativeString__to_s_with_length(var134, var135);
+var133 = var136;
+varonce132 = var133;
 }
-var123 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var123 = array_instance Array[Object] */
-var124 = 5;
-var125 = NEW_array__NativeArray(var124, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var125)->values[0] = (val*) var109;
-((struct instance_array__NativeArray*)var125)->values[1] = (val*) var_ret_type;
-((struct instance_array__NativeArray*)var125)->values[2] = (val*) var114;
-((struct instance_array__NativeArray*)var125)->values[3] = (val*) var_precursor_ret_type;
-((struct instance_array__NativeArray*)var125)->values[4] = (val*) var119;
-((void (*)(val*, val*, long))(var123->class->vft[COLOR_array__Array__with_native]))(var123, var125, var124) /* with_native on <var123:Array[Object]>*/;
-CHECK_NEW_array__Array(var123);
+var137 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var137 = array_instance Array[Object] */
+var138 = 7;
+var139 = NEW_array__NativeArray(var138, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var139)->values[0] = (val*) var116;
+((struct instance_array__NativeArray*)var139)->values[1] = (val*) var_ret_type;
+((struct instance_array__NativeArray*)var139)->values[2] = (val*) var121;
+((struct instance_array__NativeArray*)var139)->values[3] = (val*) var_precursor_ret_type;
+((struct instance_array__NativeArray*)var139)->values[4] = (val*) var126;
+((struct instance_array__NativeArray*)var139)->values[5] = (val*) var131;
+((struct instance_array__NativeArray*)var139)->values[6] = (val*) var133;
+((void (*)(val*, val*, long))(var137->class->vft[COLOR_array__Array__with_native]))(var137, var139, var138) /* with_native on <var137:Array[Object]>*/;
 }
-var126 = ((val* (*)(val*))(var123->class->vft[COLOR_string__Object__to_s]))(var123) /* to_s on <var123:Array[Object]>*/;
-((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var107, var126) /* error on <var_modelbuilder:ModelBuilder>*/;
+var140 = ((val* (*)(val*))(var137->class->vft[COLOR_string__Object__to_s]))(var137) /* to_s on <var137:Array[Object]>*/;
+((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var114, var140) /* error on <var_modelbuilder:ModelBuilder>*/;
 } else {
 }
 }
@@ -4347,6 +4505,7 @@ short int var101 /* : Bool */;
 int cltype102;
 int idtype103;
 const struct type* type_struct;
+const char* var_class_name;
 val* var104 /* : HashMap[MPropDef, APropdef] */;
 val* var105 /* : nullable AAble */;
 val* var_nreadable /* var nreadable: nullable AAble */;
@@ -4359,158 +4518,164 @@ val* var110 /* : nullable MProperty */;
 short int var111 /* : Bool */;
 int cltype112;
 int idtype113;
+const char* var_class_name114;
 val* var_mreadprop /* var mreadprop: nullable MMethod */;
-val* var114 /* : null */;
-short int var115 /* : Bool */;
-val* var116 /* : nullable AVisibility */;
-val* var117 /* : MVisibility */;
-val* var_mvisibility118 /* var mvisibility: MVisibility */;
-val* var119 /* : MMethod */;
-val* var120 /* : nullable TKwredef */;
-short int var121 /* : Bool */;
+val* var115 /* : null */;
+short int var116 /* : Bool */;
+val* var117 /* : nullable AVisibility */;
+val* var118 /* : MVisibility */;
+val* var_mvisibility119 /* var mvisibility: MVisibility */;
+val* var120 /* : MMethod */;
+val* var121 /* : nullable TKwredef */;
 short int var122 /* : Bool */;
 short int var123 /* : Bool */;
-val* var124 /* : nullable TKwredef */;
-short int var125 /* : Bool */;
+short int var124 /* : Bool */;
+val* var125 /* : nullable TKwredef */;
 short int var126 /* : Bool */;
 short int var127 /* : Bool */;
-val* var128 /* : nullable AVisibility */;
-val* var129 /* : Map[MProperty, APropdef] */;
-val* var130 /* : MMethodDef */;
-val* var131 /* : Location */;
+short int var128 /* : Bool */;
+val* var129 /* : nullable AVisibility */;
+val* var130 /* : Map[MProperty, APropdef] */;
+val* var131 /* : MMethodDef */;
+val* var132 /* : Location */;
 val* var_mreadpropdef /* var mreadpropdef: MMethodDef */;
-val* var132 /* : HashMap[MPropDef, APropdef] */;
-val* var133 /* : nullable AAble */;
+val* var133 /* : HashMap[MPropDef, APropdef] */;
+val* var134 /* : nullable AAble */;
 val* var_nwritable /* var nwritable: nullable AAble */;
-val* var134 /* : null */;
-short int var135 /* : Bool */;
-long var136 /* : Int */;
-val* var137 /* : String */;
-static val* varonce138;
-val* var139 /* : String */;
-char* var140 /* : NativeString */;
-long var141 /* : Int */;
-val* var142 /* : String */;
+val* var135 /* : null */;
+short int var136 /* : Bool */;
+long var137 /* : Int */;
+val* var138 /* : String */;
+static val* varonce139;
+val* var140 /* : String */;
+char* var141 /* : NativeString */;
+long var142 /* : Int */;
 val* var143 /* : String */;
+val* var144 /* : String */;
 val* var_writename /* var writename: String */;
-val* var144 /* : nullable MProperty */;
-short int var145 /* : Bool */;
-int cltype146;
-int idtype147;
+val* var145 /* : nullable MProperty */;
+short int var146 /* : Bool */;
+int cltype147;
+int idtype148;
+const char* var_class_name149;
 val* var_mwriteprop /* var mwriteprop: nullable MMethod */;
-val* var148 /* : null */;
-short int var149 /* : Bool */;
-val* var150 /* : nullable AVisibility */;
-val* var151 /* : MVisibility */;
-val* var_mvisibility152 /* var mvisibility: MVisibility */;
-val* var153 /* : MMethod */;
-val* var154 /* : nullable TKwredef */;
-short int var155 /* : Bool */;
-short int var156 /* : Bool */;
+val* var150 /* : null */;
+short int var151 /* : Bool */;
+val* var152 /* : nullable AVisibility */;
+val* var153 /* : MVisibility */;
+val* var_mvisibility154 /* var mvisibility: MVisibility */;
+val* var155 /* : MMethod */;
+val* var156 /* : nullable TKwredef */;
 short int var157 /* : Bool */;
-val* var158 /* : nullable TKwredef */;
+short int var158 /* : Bool */;
 short int var159 /* : Bool */;
-short int var160 /* : Bool */;
+val* var160 /* : nullable TKwredef */;
 short int var161 /* : Bool */;
-val* var162 /* : nullable AVisibility */;
-val* var163 /* : Map[MProperty, APropdef] */;
-val* var164 /* : MMethodDef */;
-val* var165 /* : Location */;
+short int var162 /* : Bool */;
+short int var163 /* : Bool */;
+val* var164 /* : nullable AVisibility */;
+val* var165 /* : Map[MProperty, APropdef] */;
+val* var166 /* : MMethodDef */;
+val* var167 /* : Location */;
 val* var_mwritepropdef /* var mwritepropdef: MMethodDef */;
-val* var166 /* : HashMap[MPropDef, APropdef] */;
-val* var167 /* : nullable TId */;
+val* var168 /* : HashMap[MPropDef, APropdef] */;
+val* var169 /* : nullable TId */;
 val* var_nid2 /* var nid2: TId */;
-val* var168 /* : MAttribute */;
-static val* varonce169;
-val* var170 /* : String */;
-char* var171 /* : NativeString */;
-long var172 /* : Int */;
-val* var173 /* : String */;
-val* var174 /* : String */;
-val* var175 /* : MVisibility */;
-val* var_mprop176 /* var mprop: MAttribute */;
-val* var177 /* : MAttributeDef */;
-val* var178 /* : Location */;
-val* var_mpropdef179 /* var mpropdef: MAttributeDef */;
-short int var180 /* : Bool */;
-int cltype181;
-int idtype182;
-const struct type* type_struct183;
-val* var184 /* : HashMap[MPropDef, APropdef] */;
-val* var_readname185 /* var readname: String */;
-val* var186 /* : nullable MProperty */;
-short int var187 /* : Bool */;
-int cltype188;
-int idtype189;
-val* var_mreadprop190 /* var mreadprop: nullable MMethod */;
-val* var191 /* : null */;
-short int var192 /* : Bool */;
-val* var193 /* : AVisibility */;
-val* var194 /* : MVisibility */;
-val* var_mvisibility195 /* var mvisibility: MVisibility */;
-val* var196 /* : MMethod */;
-val* var197 /* : nullable TKwredef */;
-short int var198 /* : Bool */;
-short int var199 /* : Bool */;
-short int var200 /* : Bool */;
+val* var170 /* : MAttribute */;
+static val* varonce171;
+val* var172 /* : String */;
+char* var173 /* : NativeString */;
+long var174 /* : Int */;
+val* var175 /* : String */;
+val* var176 /* : String */;
+val* var177 /* : MVisibility */;
+val* var_mprop178 /* var mprop: MAttribute */;
+val* var179 /* : MAttributeDef */;
+val* var180 /* : Location */;
+val* var_mpropdef181 /* var mpropdef: MAttributeDef */;
+short int var182 /* : Bool */;
+int cltype183;
+int idtype184;
+const struct type* type_struct185;
+const char* var_class_name186;
+val* var187 /* : HashMap[MPropDef, APropdef] */;
+val* var_readname188 /* var readname: String */;
+val* var189 /* : nullable MProperty */;
+short int var190 /* : Bool */;
+int cltype191;
+int idtype192;
+const char* var_class_name193;
+val* var_mreadprop194 /* var mreadprop: nullable MMethod */;
+val* var195 /* : null */;
+short int var196 /* : Bool */;
+val* var197 /* : AVisibility */;
+val* var198 /* : MVisibility */;
+val* var_mvisibility199 /* var mvisibility: MVisibility */;
+val* var200 /* : MMethod */;
 val* var201 /* : nullable TKwredef */;
 short int var202 /* : Bool */;
 short int var203 /* : Bool */;
 short int var204 /* : Bool */;
-val* var205 /* : AVisibility */;
-val* var206 /* : Map[MProperty, APropdef] */;
-val* var207 /* : MMethodDef */;
-val* var208 /* : Location */;
-val* var_mreadpropdef209 /* var mreadpropdef: MMethodDef */;
-val* var210 /* : HashMap[MPropDef, APropdef] */;
-static val* varonce211;
-val* var212 /* : String */;
-char* var213 /* : NativeString */;
-long var214 /* : Int */;
-val* var215 /* : String */;
+val* var205 /* : nullable TKwredef */;
+short int var206 /* : Bool */;
+short int var207 /* : Bool */;
+short int var208 /* : Bool */;
+val* var209 /* : AVisibility */;
+val* var210 /* : Map[MProperty, APropdef] */;
+val* var211 /* : MMethodDef */;
+val* var212 /* : Location */;
+val* var_mreadpropdef213 /* var mreadpropdef: MMethodDef */;
+val* var214 /* : HashMap[MPropDef, APropdef] */;
+static val* varonce215;
 val* var216 /* : String */;
-val* var_writename217 /* var writename: String */;
-val* var218 /* : nullable AAble */;
-val* var_nwritable219 /* var nwritable: nullable AAble */;
-val* var220 /* : nullable MProperty */;
-short int var221 /* : Bool */;
-int cltype222;
-int idtype223;
-val* var_mwriteprop224 /* var mwriteprop: nullable MMethod */;
-val* var225 /* : null */;
+char* var217 /* : NativeString */;
+long var218 /* : Int */;
+val* var219 /* : String */;
+val* var220 /* : String */;
+val* var_writename221 /* var writename: String */;
+val* var222 /* : nullable AAble */;
+val* var_nwritable223 /* var nwritable: nullable AAble */;
+val* var224 /* : nullable MProperty */;
+short int var225 /* : Bool */;
+int cltype226;
+int idtype227;
+const char* var_class_name228;
+val* var_mwriteprop229 /* var mwriteprop: nullable MMethod */;
+val* var230 /* : null */;
 val* var_nwkwredef /* var nwkwredef: nullable Token */;
-val* var226 /* : null */;
-short int var227 /* : Bool */;
-val* var228 /* : nullable TKwredef */;
-val* var229 /* : null */;
-short int var230 /* : Bool */;
 val* var231 /* : null */;
 short int var232 /* : Bool */;
-val* var233 /* : nullable AVisibility */;
-val* var234 /* : MVisibility */;
-val* var_mvisibility235 /* var mvisibility: nullable Object */;
-val* var236 /* : MVisibility */;
-val* var237 /* : MMethod */;
-short int var238 /* : Bool */;
-short int var239 /* : Bool */;
-short int var240 /* : Bool */;
-short int var241 /* : Bool */;
-short int var242 /* : Bool */;
+val* var233 /* : nullable TKwredef */;
+val* var234 /* : null */;
+short int var235 /* : Bool */;
+val* var236 /* : null */;
+short int var237 /* : Bool */;
+val* var238 /* : nullable AVisibility */;
+val* var239 /* : MVisibility */;
+val* var_mvisibility240 /* var mvisibility: nullable Object */;
+val* var241 /* : MVisibility */;
+val* var242 /* : MMethod */;
 short int var243 /* : Bool */;
-val* var244 /* : null */;
+short int var244 /* : Bool */;
 short int var245 /* : Bool */;
-val* var246 /* : nullable AVisibility */;
-val* var247 /* : Map[MProperty, APropdef] */;
-val* var248 /* : MMethodDef */;
-val* var249 /* : Location */;
-val* var_mwritepropdef250 /* var mwritepropdef: MMethodDef */;
-val* var251 /* : HashMap[MPropDef, APropdef] */;
+short int var246 /* : Bool */;
+short int var247 /* : Bool */;
+short int var248 /* : Bool */;
+val* var249 /* : null */;
+short int var250 /* : Bool */;
+val* var251 /* : nullable AVisibility */;
+val* var252 /* : Map[MProperty, APropdef] */;
+val* var253 /* : MMethodDef */;
+val* var254 /* : Location */;
+val* var_mwritepropdef255 /* var mwritepropdef: MMethodDef */;
+val* var256 /* : HashMap[MPropDef, APropdef] */;
 var_modelbuilder = p0;
 var_nclassdef = p1;
 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 551);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 561);
+show_backtrace(1);
 }
 var_mclassdef = var;
 var1 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mclass]))(var_mclassdef) /* mclass on <var_mclassdef:MClassDef>*/;
@@ -4525,8 +4690,9 @@ var4 = 1; /* arg is null and recv is not */
 if (var4){
 var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
 if (var5 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 556);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 566);
+show_backtrace(1);
 } else {
 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_parser_nodes__Token__text]))(var5) /* text on <var5:nullable TAttrid>*/;
 }
@@ -4534,8 +4700,9 @@ var_name = var6;
 } else {
 var7 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
 if (var7 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 558);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 568);
+show_backtrace(1);
 } else {
 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_parser_nodes__Token__text]))(var7) /* text on <var7:nullable TId>*/;
 }
@@ -4592,7 +4759,6 @@ var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var33)->values[3] = (val*) var_mclass;
 ((struct instance_array__NativeArray*)var33)->values[4] = (val*) var27;
 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
-CHECK_NEW_array__Array(var31);
 }
 var34 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var34) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -4638,7 +4804,6 @@ var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var55)->values[3] = (val*) var_mclass;
 ((struct instance_array__NativeArray*)var55)->values[4] = (val*) var49;
 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
-CHECK_NEW_array__Array(var53);
 }
 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var56) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -4684,7 +4849,6 @@ var77 = NEW_array__NativeArray(var76, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var77)->values[3] = (val*) var_mclass;
 ((struct instance_array__NativeArray*)var77)->values[4] = (val*) var71;
 ((void (*)(val*, val*, long))(var75->class->vft[COLOR_array__Array__with_native]))(var75, var77, var76) /* with_native on <var75:Array[Object]>*/;
-CHECK_NEW_array__Array(var75);
 }
 var78 = ((val* (*)(val*))(var75->class->vft[COLOR_string__Object__to_s]))(var75) /* to_s on <var75:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var78) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -4715,7 +4879,6 @@ var86 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_prop
 var_mvisibility = var86;
 var87 = NEW_model__MAttribute(&type_model__MAttribute);
 ((void (*)(val*, val*, val*, val*))(var87->class->vft[COLOR_model__MAttribute__init]))(var87, var_mclassdef, var_name, var_mvisibility) /* init on <var87:MAttribute>*/;
-CHECK_NEW_model__MAttribute(var87);
 var_mprop = var87;
 var88 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
 var89 = 0;
@@ -4735,8 +4898,9 @@ var92 = 0;
 var92 = var_mprop->type->type_table[cltype] == idtype;
 }
 if (!var92) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/modelize_property.nit", 578);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 588);
+show_backtrace(1);
 }
 var93 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
 ((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var93, var_mprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
@@ -4754,10 +4918,9 @@ var98 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__ACl
 var99 = NEW_model__MAttributeDef(&type_model__MAttributeDef);
 var100 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
 ((void (*)(val*, val*, val*, val*))(var99->class->vft[COLOR_model__MAttributeDef__init]))(var99, var_mclassdef, var_mprop, var100) /* init on <var99:MAttributeDef>*/;
-CHECK_NEW_model__MAttributeDef(var99);
 var_mpropdef = var99;
 /* <var_mpropdef:MAttributeDef> isa nullable MPROPDEF */
-type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
+type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
 cltype102 = type_struct->color;
 idtype103 = type_struct->id;
 if(cltype102 >= var_mpropdef->type->table_size) {
@@ -4766,8 +4929,10 @@ var101 = 0;
 var101 = var_mpropdef->type->type_table[cltype102] == idtype103;
 }
 if (!var101) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 585);
-exit(1);
+var_class_name = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 595);
+show_backtrace(1);
 }
 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:AAttrPropdef>*/;
 var104 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
@@ -4798,354 +4963,355 @@ var111 = var110->type->type_table[cltype112] == idtype113;
 }
 }
 if (!var111) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 591);
-exit(1);
+var_class_name114 = var110 == NULL ? "null" : var110->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name114);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 601);
+show_backtrace(1);
 }
 var_mreadprop = var110;
-var114 = NULL;
+var115 = NULL;
 if (var_mreadprop == NULL) {
-var115 = 1; /* is null */
-} else {
-var115 = 0; /* arg is null but recv is not */
-}
-if (var115){
-var116 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nreadable) /* n_visibility on <var_nreadable:nullable AAble(AAble)>*/;
-var117 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var116) /* new_property_visibility on <self:AAttrPropdef>*/;
-var_mvisibility118 = var117;
-var119 = NEW_model__MMethod(&type_model__MMethod);
-((void (*)(val*, val*, val*, val*))(var119->class->vft[COLOR_model__MMethod__init]))(var119, var_mclassdef, var_readname, var_mvisibility118) /* init on <var119:MMethod>*/;
-CHECK_NEW_model__MMethod(var119);
-var_mreadprop = var119;
-var120 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nreadable) /* n_kwredef on <var_nreadable:nullable AAble(AAble)>*/;
-var121 = 0;
-var122 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var120, var121, var_mreadprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
-var123 = !var122;
-if (var123){
+var116 = 1; /* is null */
+} else {
+var116 = 0; /* arg is null but recv is not */
+}
+if (var116){
+var117 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nreadable) /* n_visibility on <var_nreadable:nullable AAble(AAble)>*/;
+var118 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var117) /* new_property_visibility on <self:AAttrPropdef>*/;
+var_mvisibility119 = var118;
+var120 = NEW_model__MMethod(&type_model__MMethod);
+((void (*)(val*, val*, val*, val*))(var120->class->vft[COLOR_model__MMethod__init]))(var120, var_mclassdef, var_readname, var_mvisibility119) /* init on <var120:MMethod>*/;
+var_mreadprop = var120;
+var121 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nreadable) /* n_kwredef on <var_nreadable:nullable AAble(AAble)>*/;
+var122 = 0;
+var123 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var121, var122, var_mreadprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var124 = !var123;
+if (var124){
 goto RET_LABEL;
 } else {
 }
 } else {
-var124 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nreadable) /* n_kwredef on <var_nreadable:nullable AAble(AAble)>*/;
-var125 = 1;
-var126 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var124, var125, var_mreadprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
-var127 = !var126;
-if (var127){
+var125 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nreadable) /* n_kwredef on <var_nreadable:nullable AAble(AAble)>*/;
+var126 = 1;
+var127 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var125, var126, var_mreadprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var128 = !var127;
+if (var128){
 goto RET_LABEL;
 } else {
 }
-var128 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nreadable) /* n_visibility on <var_nreadable:nullable AAble(AAble)>*/;
-((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var128, var_mreadprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
+var129 = ((val* (*)(val*))(var_nreadable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nreadable) /* n_visibility on <var_nreadable:nullable AAble(AAble)>*/;
+((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var129, var_mreadprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
 }
-var129 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
-((void (*)(val*, val*, val*))(var129->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var129, var_mreadprop, self) /* []= on <var129:Map[MProperty, APropdef]>*/;
-var130 = NEW_model__MMethodDef(&type_model__MMethodDef);
-var131 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
-((void (*)(val*, val*, val*, val*))(var130->class->vft[COLOR_model__MMethodDef__init]))(var130, var_mclassdef, var_mreadprop, var131) /* init on <var130:MMethodDef>*/;
-CHECK_NEW_model__MMethodDef(var130);
-var_mreadpropdef = var130;
+var130 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
+((void (*)(val*, val*, val*))(var130->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var130, var_mreadprop, self) /* []= on <var130:Map[MProperty, APropdef]>*/;
+var131 = NEW_model__MMethodDef(&type_model__MMethodDef);
+var132 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
+((void (*)(val*, val*, val*, val*))(var131->class->vft[COLOR_model__MMethodDef__init]))(var131, var_mclassdef, var_mreadprop, var132) /* init on <var131:MMethodDef>*/;
+var_mreadpropdef = var131;
 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mreadpropdef_61d]))(self, var_mreadpropdef) /* mreadpropdef= on <self:AAttrPropdef>*/;
-var132 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
-((void (*)(val*, val*, val*))(var132->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var132, var_mreadpropdef, self) /* []= on <var132:HashMap[MPropDef, APropdef]>*/;
+var133 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
+((void (*)(val*, val*, val*))(var133->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var133, var_mreadpropdef, self) /* []= on <var133:HashMap[MPropDef, APropdef]>*/;
 } else {
 }
-var133 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_writable]))(self) /* n_writable on <self:AAttrPropdef>*/;
-var_nwritable = var133;
-var134 = NULL;
+var134 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_writable]))(self) /* n_writable on <self:AAttrPropdef>*/;
+var_nwritable = var134;
+var135 = NULL;
 if (var_nwritable == NULL) {
-var135 = 0; /* is null */
+var136 = 0; /* is null */
 } else {
-var135 = 1; /* arg is null and recv is not */
+var136 = 1; /* arg is null and recv is not */
 }
-if (var135){
-var136 = 1;
-var137 = ((val* (*)(val*, long))(var_name->class->vft[COLOR_string__AbstractString__substring_from]))(var_name, var136) /* substring_from on <var_name:String>*/;
-if (varonce138) {
-var139 = varonce138;
+if (var136){
+var137 = 1;
+var138 = ((val* (*)(val*, long))(var_name->class->vft[COLOR_string__AbstractString__substring_from]))(var_name, var137) /* substring_from on <var_name:String>*/;
+if (varonce139) {
+var140 = varonce139;
 } else {
-var140 = "=";
-var141 = 1;
-var142 = string__NativeString__to_s_with_length(var140, var141);
-var139 = var142;
-varonce138 = var139;
+var141 = "=";
+var142 = 1;
+var143 = string__NativeString__to_s_with_length(var141, var142);
+var140 = var143;
+varonce139 = var140;
 }
-var143 = ((val* (*)(val*, val*))(var137->class->vft[COLOR_string__String___43d]))(var137, var139) /* + on <var137:String>*/;
-var_writename = var143;
-var144 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid, var_mclassdef, var_writename) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
-/* <var144:nullable MProperty> isa nullable MMethod */
-cltype146 = type_nullable_model__MMethod.color;
-idtype147 = type_nullable_model__MMethod.id;
-if(var144 == NULL) {
-var145 = 1;
+var144 = ((val* (*)(val*, val*))(var138->class->vft[COLOR_string__String___43d]))(var138, var140) /* + on <var138:String>*/;
+var_writename = var144;
+var145 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid, var_mclassdef, var_writename) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
+/* <var145:nullable MProperty> isa nullable MMethod */
+cltype147 = type_nullable_model__MMethod.color;
+idtype148 = type_nullable_model__MMethod.id;
+if(var145 == NULL) {
+var146 = 1;
 } else {
-if(cltype146 >= var144->type->table_size) {
-var145 = 0;
+if(cltype147 >= var145->type->table_size) {
+var146 = 0;
 } else {
-var145 = var144->type->type_table[cltype146] == idtype147;
+var146 = var145->type->type_table[cltype147] == idtype148;
 }
 }
-if (!var145) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 610);
-exit(1);
+if (!var146) {
+var_class_name149 = var145 == NULL ? "null" : var145->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name149);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 620);
+show_backtrace(1);
 }
-var_mwriteprop = var144;
-var148 = NULL;
+var_mwriteprop = var145;
+var150 = NULL;
 if (var_mwriteprop == NULL) {
-var149 = 1; /* is null */
-} else {
-var149 = 0; /* arg is null but recv is not */
-}
-if (var149){
-var150 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable) /* n_visibility on <var_nwritable:nullable AAble(AAble)>*/;
-var151 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var150) /* new_property_visibility on <self:AAttrPropdef>*/;
-var_mvisibility152 = var151;
-var153 = NEW_model__MMethod(&type_model__MMethod);
-((void (*)(val*, val*, val*, val*))(var153->class->vft[COLOR_model__MMethod__init]))(var153, var_mclassdef, var_writename, var_mvisibility152) /* init on <var153:MMethod>*/;
-CHECK_NEW_model__MMethod(var153);
-var_mwriteprop = var153;
-var154 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable) /* n_kwredef on <var_nwritable:nullable AAble(AAble)>*/;
-var155 = 0;
-var156 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var154, var155, var_mwriteprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
-var157 = !var156;
-if (var157){
+var151 = 1; /* is null */
+} else {
+var151 = 0; /* arg is null but recv is not */
+}
+if (var151){
+var152 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable) /* n_visibility on <var_nwritable:nullable AAble(AAble)>*/;
+var153 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var152) /* new_property_visibility on <self:AAttrPropdef>*/;
+var_mvisibility154 = var153;
+var155 = NEW_model__MMethod(&type_model__MMethod);
+((void (*)(val*, val*, val*, val*))(var155->class->vft[COLOR_model__MMethod__init]))(var155, var_mclassdef, var_writename, var_mvisibility154) /* init on <var155:MMethod>*/;
+var_mwriteprop = var155;
+var156 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable) /* n_kwredef on <var_nwritable:nullable AAble(AAble)>*/;
+var157 = 0;
+var158 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var156, var157, var_mwriteprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var159 = !var158;
+if (var159){
 goto RET_LABEL;
 } else {
 }
 } else {
-var158 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable) /* n_kwredef on <var_nwritable:nullable AAble(AAble)>*/;
-var159 = 1;
-var160 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var158, var159, var_mwriteprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
-var161 = !var160;
-if (var161){
+var160 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable) /* n_kwredef on <var_nwritable:nullable AAble(AAble)>*/;
+var161 = 1;
+var162 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var160, var161, var_mwriteprop) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var163 = !var162;
+if (var163){
 goto RET_LABEL;
 } else {
 }
-var162 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable) /* n_visibility on <var_nwritable:nullable AAble(AAble)>*/;
-((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var162, var_mwriteprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
+var164 = ((val* (*)(val*))(var_nwritable->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable) /* n_visibility on <var_nwritable:nullable AAble(AAble)>*/;
+((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var164, var_mwriteprop) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
 }
-var163 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
-((void (*)(val*, val*, val*))(var163->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var163, var_mwriteprop, self) /* []= on <var163:Map[MProperty, APropdef]>*/;
-var164 = NEW_model__MMethodDef(&type_model__MMethodDef);
-var165 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
-((void (*)(val*, val*, val*, val*))(var164->class->vft[COLOR_model__MMethodDef__init]))(var164, var_mclassdef, var_mwriteprop, var165) /* init on <var164:MMethodDef>*/;
-CHECK_NEW_model__MMethodDef(var164);
-var_mwritepropdef = var164;
+var165 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
+((void (*)(val*, val*, val*))(var165->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var165, var_mwriteprop, self) /* []= on <var165:Map[MProperty, APropdef]>*/;
+var166 = NEW_model__MMethodDef(&type_model__MMethodDef);
+var167 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
+((void (*)(val*, val*, val*, val*))(var166->class->vft[COLOR_model__MMethodDef__init]))(var166, var_mclassdef, var_mwriteprop, var167) /* init on <var166:MMethodDef>*/;
+var_mwritepropdef = var166;
 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef_61d]))(self, var_mwritepropdef) /* mwritepropdef= on <self:AAttrPropdef>*/;
-var166 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
-((void (*)(val*, val*, val*))(var166->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var166, var_mwritepropdef, self) /* []= on <var166:HashMap[MPropDef, APropdef]>*/;
-} else {
-}
-} else {
-var167 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
-if (var167 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 627);
-exit(1);
-}
-var_nid2 = var167;
-var168 = NEW_model__MAttribute(&type_model__MAttribute);
-if (varonce169) {
-var170 = varonce169;
-} else {
-var171 = "@";
-var172 = 1;
-var173 = string__NativeString__to_s_with_length(var171, var172);
-var170 = var173;
-varonce169 = var170;
-}
-var174 = ((val* (*)(val*, val*))(var170->class->vft[COLOR_string__String___43d]))(var170, var_name) /* + on <var170:String>*/;
-var175 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__none_visibility]))(self) /* none_visibility on <self:AAttrPropdef>*/;
-((void (*)(val*, val*, val*, val*))(var168->class->vft[COLOR_model__MAttribute__init]))(var168, var_mclassdef, var174, var175) /* init on <var168:MAttribute>*/;
-CHECK_NEW_model__MAttribute(var168);
-var_mprop176 = var168;
-var177 = NEW_model__MAttributeDef(&type_model__MAttributeDef);
-var178 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
-((void (*)(val*, val*, val*, val*))(var177->class->vft[COLOR_model__MAttributeDef__init]))(var177, var_mclassdef, var_mprop176, var178) /* init on <var177:MAttributeDef>*/;
-CHECK_NEW_model__MAttributeDef(var177);
-var_mpropdef179 = var177;
-/* <var_mpropdef179:MAttributeDef> isa nullable MPROPDEF */
-type_struct183 = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
-cltype181 = type_struct183->color;
-idtype182 = type_struct183->id;
-if(cltype181 >= var_mpropdef179->type->table_size) {
-var180 = 0;
-} else {
-var180 = var_mpropdef179->type->type_table[cltype181] == idtype182;
-}
-if (!var180) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 630);
-exit(1);
-}
-((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef179) /* mpropdef= on <self:AAttrPropdef>*/;
-var184 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
-((void (*)(val*, val*, val*))(var184->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var184, var_mpropdef179, self) /* []= on <var184:HashMap[MPropDef, APropdef]>*/;
-var_readname185 = var_name;
-var186 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid2, var_mclassdef, var_readname185) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
-/* <var186:nullable MProperty> isa nullable MMethod */
-cltype188 = type_nullable_model__MMethod.color;
-idtype189 = type_nullable_model__MMethod.id;
-if(var186 == NULL) {
-var187 = 1;
-} else {
-if(cltype188 >= var186->type->table_size) {
-var187 = 0;
-} else {
-var187 = var186->type->type_table[cltype188] == idtype189;
-}
-}
-if (!var187) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 634);
-exit(1);
-}
-var_mreadprop190 = var186;
-var191 = NULL;
-if (var_mreadprop190 == NULL) {
-var192 = 1; /* is null */
-} else {
-var192 = 0; /* arg is null but recv is not */
-}
-if (var192){
-var193 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
-var194 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var193) /* new_property_visibility on <self:AAttrPropdef>*/;
-var_mvisibility195 = var194;
-var196 = NEW_model__MMethod(&type_model__MMethod);
-((void (*)(val*, val*, val*, val*))(var196->class->vft[COLOR_model__MMethod__init]))(var196, var_mclassdef, var_readname185, var_mvisibility195) /* init on <var196:MMethod>*/;
-CHECK_NEW_model__MMethod(var196);
-var_mreadprop190 = var196;
-var197 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
-var198 = 0;
-var199 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var197, var198, var_mreadprop190) /* check_redef_keyword on <self:AAttrPropdef>*/;
-var200 = !var199;
-if (var200){
-goto RET_LABEL;
-} else {
-}
-} else {
+var168 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
+((void (*)(val*, val*, val*))(var168->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var168, var_mwritepropdef, self) /* []= on <var168:HashMap[MPropDef, APropdef]>*/;
+} else {
+}
+} else {
+var169 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
+if (var169 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 637);
+show_backtrace(1);
+}
+var_nid2 = var169;
+var170 = NEW_model__MAttribute(&type_model__MAttribute);
+if (varonce171) {
+var172 = varonce171;
+} else {
+var173 = "@";
+var174 = 1;
+var175 = string__NativeString__to_s_with_length(var173, var174);
+var172 = var175;
+varonce171 = var172;
+}
+var176 = ((val* (*)(val*, val*))(var172->class->vft[COLOR_string__String___43d]))(var172, var_name) /* + on <var172:String>*/;
+var177 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__none_visibility]))(self) /* none_visibility on <self:AAttrPropdef>*/;
+((void (*)(val*, val*, val*, val*))(var170->class->vft[COLOR_model__MAttribute__init]))(var170, var_mclassdef, var176, var177) /* init on <var170:MAttribute>*/;
+var_mprop178 = var170;
+var179 = NEW_model__MAttributeDef(&type_model__MAttributeDef);
+var180 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
+((void (*)(val*, val*, val*, val*))(var179->class->vft[COLOR_model__MAttributeDef__init]))(var179, var_mclassdef, var_mprop178, var180) /* init on <var179:MAttributeDef>*/;
+var_mpropdef181 = var179;
+/* <var_mpropdef181:MAttributeDef> isa nullable MPROPDEF */
+type_struct185 = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
+cltype183 = type_struct185->color;
+idtype184 = type_struct185->id;
+if(cltype183 >= var_mpropdef181->type->table_size) {
+var182 = 0;
+} else {
+var182 = var_mpropdef181->type->type_table[cltype183] == idtype184;
+}
+if (!var182) {
+var_class_name186 = var_mpropdef181 == NULL ? "null" : var_mpropdef181->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name186);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 640);
+show_backtrace(1);
+}
+((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef181) /* mpropdef= on <self:AAttrPropdef>*/;
+var187 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
+((void (*)(val*, val*, val*))(var187->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var187, var_mpropdef181, self) /* []= on <var187:HashMap[MPropDef, APropdef]>*/;
+var_readname188 = var_name;
+var189 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid2, var_mclassdef, var_readname188) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
+/* <var189:nullable MProperty> isa nullable MMethod */
+cltype191 = type_nullable_model__MMethod.color;
+idtype192 = type_nullable_model__MMethod.id;
+if(var189 == NULL) {
+var190 = 1;
+} else {
+if(cltype191 >= var189->type->table_size) {
+var190 = 0;
+} else {
+var190 = var189->type->type_table[cltype191] == idtype192;
+}
+}
+if (!var190) {
+var_class_name193 = var189 == NULL ? "null" : var189->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name193);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 644);
+show_backtrace(1);
+}
+var_mreadprop194 = var189;
+var195 = NULL;
+if (var_mreadprop194 == NULL) {
+var196 = 1; /* is null */
+} else {
+var196 = 0; /* arg is null but recv is not */
+}
+if (var196){
+var197 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
+var198 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var197) /* new_property_visibility on <self:AAttrPropdef>*/;
+var_mvisibility199 = var198;
+var200 = NEW_model__MMethod(&type_model__MMethod);
+((void (*)(val*, val*, val*, val*))(var200->class->vft[COLOR_model__MMethod__init]))(var200, var_mclassdef, var_readname188, var_mvisibility199) /* init on <var200:MMethod>*/;
+var_mreadprop194 = var200;
 var201 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
-var202 = 1;
-var203 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var201, var202, var_mreadprop190) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var202 = 0;
+var203 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var201, var202, var_mreadprop194) /* check_redef_keyword on <self:AAttrPropdef>*/;
 var204 = !var203;
 if (var204){
 goto RET_LABEL;
 } else {
 }
-var205 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
-((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var205, var_mreadprop190) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
-}
-var206 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
-((void (*)(val*, val*, val*))(var206->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var206, var_mreadprop190, self) /* []= on <var206:Map[MProperty, APropdef]>*/;
-var207 = NEW_model__MMethodDef(&type_model__MMethodDef);
-var208 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
-((void (*)(val*, val*, val*, val*))(var207->class->vft[COLOR_model__MMethodDef__init]))(var207, var_mclassdef, var_mreadprop190, var208) /* init on <var207:MMethodDef>*/;
-CHECK_NEW_model__MMethodDef(var207);
-var_mreadpropdef209 = var207;
-((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mreadpropdef_61d]))(self, var_mreadpropdef209) /* mreadpropdef= on <self:AAttrPropdef>*/;
-var210 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
-((void (*)(val*, val*, val*))(var210->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var210, var_mreadpropdef209, self) /* []= on <var210:HashMap[MPropDef, APropdef]>*/;
-if (varonce211) {
-var212 = varonce211;
 } else {
-var213 = "=";
-var214 = 1;
-var215 = string__NativeString__to_s_with_length(var213, var214);
-var212 = var215;
-varonce211 = var212;
-}
-var216 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var212) /* + on <var_name:String>*/;
-var_writename217 = var216;
-var218 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_writable]))(self) /* n_writable on <self:AAttrPropdef>*/;
-var_nwritable219 = var218;
-var220 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid2, var_mclassdef, var_writename217) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
-/* <var220:nullable MProperty> isa nullable MMethod */
-cltype222 = type_nullable_model__MMethod.color;
-idtype223 = type_nullable_model__MMethod.id;
-if(var220 == NULL) {
-var221 = 1;
-} else {
-if(cltype222 >= var220->type->table_size) {
-var221 = 0;
+var205 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_kwredef]))(self) /* n_kwredef on <self:AAttrPropdef>*/;
+var206 = 1;
+var207 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var205, var206, var_mreadprop194) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var208 = !var207;
+if (var208){
+goto RET_LABEL;
 } else {
-var221 = var220->type->type_table[cltype222] == idtype223;
 }
+var209 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_visibility]))(self) /* n_visibility on <self:AAttrPropdef>*/;
+((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var209, var_mreadprop194) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
+}
+var210 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
+((void (*)(val*, val*, val*))(var210->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var210, var_mreadprop194, self) /* []= on <var210:Map[MProperty, APropdef]>*/;
+var211 = NEW_model__MMethodDef(&type_model__MMethodDef);
+var212 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
+((void (*)(val*, val*, val*, val*))(var211->class->vft[COLOR_model__MMethodDef__init]))(var211, var_mclassdef, var_mreadprop194, var212) /* init on <var211:MMethodDef>*/;
+var_mreadpropdef213 = var211;
+((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mreadpropdef_61d]))(self, var_mreadpropdef213) /* mreadpropdef= on <self:AAttrPropdef>*/;
+var214 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
+((void (*)(val*, val*, val*))(var214->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var214, var_mreadpropdef213, self) /* []= on <var214:HashMap[MPropDef, APropdef]>*/;
+if (varonce215) {
+var216 = varonce215;
+} else {
+var217 = "=";
+var218 = 1;
+var219 = string__NativeString__to_s_with_length(var217, var218);
+var216 = var219;
+varonce215 = var216;
+}
+var220 = ((val* (*)(val*, val*))(var_name->class->vft[COLOR_string__String___43d]))(var_name, var216) /* + on <var_name:String>*/;
+var_writename221 = var220;
+var222 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_writable]))(self) /* n_writable on <self:AAttrPropdef>*/;
+var_nwritable223 = var222;
+var224 = ((val* (*)(val*, val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__try_get_mproperty_by_name]))(var_modelbuilder, var_nid2, var_mclassdef, var_writename221) /* try_get_mproperty_by_name on <var_modelbuilder:ModelBuilder>*/;
+/* <var224:nullable MProperty> isa nullable MMethod */
+cltype226 = type_nullable_model__MMethod.color;
+idtype227 = type_nullable_model__MMethod.id;
+if(var224 == NULL) {
+var225 = 1;
+} else {
+if(cltype226 >= var224->type->table_size) {
+var225 = 0;
+} else {
+var225 = var224->type->type_table[cltype226] == idtype227;
+}
+}
+if (!var225) {
+var_class_name228 = var224 == NULL ? "null" : var224->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MMethod", var_class_name228);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 661);
+show_backtrace(1);
+}
+var_mwriteprop229 = var224;
+var230 = NULL;
+var_nwkwredef = var230;
+var231 = NULL;
+if (var_nwritable223 == NULL) {
+var232 = 0; /* is null */
+} else {
+var232 = 1; /* arg is null and recv is not */
 }
-if (!var221) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 651);
-exit(1);
-}
-var_mwriteprop224 = var220;
-var225 = NULL;
-var_nwkwredef = var225;
-var226 = NULL;
-if (var_nwritable219 == NULL) {
-var227 = 0; /* is null */
+if (var232){
+var233 = ((val* (*)(val*))(var_nwritable223->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable223) /* n_kwredef on <var_nwritable223:nullable AAble(AAble)>*/;
+var_nwkwredef = var233;
 } else {
-var227 = 1; /* arg is null and recv is not */
 }
-if (var227){
-var228 = ((val* (*)(val*))(var_nwritable219->class->vft[COLOR_parser_nodes__AAble__n_kwredef]))(var_nwritable219) /* n_kwredef on <var_nwritable219:nullable AAble(AAble)>*/;
-var_nwkwredef = var228;
+var234 = NULL;
+if (var_mwriteprop229 == NULL) {
+var235 = 1; /* is null */
 } else {
+var235 = 0; /* arg is null but recv is not */
 }
-var229 = NULL;
-if (var_mwriteprop224 == NULL) {
-var230 = 1; /* is null */
+if (var235){
+var236 = NULL;
+if (var_nwritable223 == NULL) {
+var237 = 0; /* is null */
 } else {
-var230 = 0; /* arg is null but recv is not */
+var237 = 1; /* arg is null and recv is not */
 }
-if (var230){
-var231 = NULL;
-if (var_nwritable219 == NULL) {
-var232 = 0; /* is null */
+if (var237){
+var238 = ((val* (*)(val*))(var_nwritable223->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable223) /* n_visibility on <var_nwritable223:nullable AAble(AAble)>*/;
+var239 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var238) /* new_property_visibility on <self:AAttrPropdef>*/;
+var_mvisibility240 = var239;
 } else {
-var232 = 1; /* arg is null and recv is not */
+var241 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:AAttrPropdef>*/;
+var_mvisibility240 = var241;
 }
-if (var232){
-var233 = ((val* (*)(val*))(var_nwritable219->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable219) /* n_visibility on <var_nwritable219:nullable AAble(AAble)>*/;
-var234 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__new_property_visibility]))(self, var_modelbuilder, var_nclassdef, var233) /* new_property_visibility on <self:AAttrPropdef>*/;
-var_mvisibility235 = var234;
-} else {
-var236 = ((val* (*)(val*))(self->class->vft[COLOR_model_base__Object__private_visibility]))(self) /* private_visibility on <self:AAttrPropdef>*/;
-var_mvisibility235 = var236;
-}
-var237 = NEW_model__MMethod(&type_model__MMethod);
-((void (*)(val*, val*, val*, val*))(var237->class->vft[COLOR_model__MMethod__init]))(var237, var_mclassdef, var_writename217, var_mvisibility235) /* init on <var237:MMethod>*/;
-CHECK_NEW_model__MMethod(var237);
-var_mwriteprop224 = var237;
-var238 = 0;
-var239 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var_nwkwredef, var238, var_mwriteprop224) /* check_redef_keyword on <self:AAttrPropdef>*/;
-var240 = !var239;
-if (var240){
+var242 = NEW_model__MMethod(&type_model__MMethod);
+((void (*)(val*, val*, val*, val*))(var242->class->vft[COLOR_model__MMethod__init]))(var242, var_mclassdef, var_writename221, var_mvisibility240) /* init on <var242:MMethod>*/;
+var_mwriteprop229 = var242;
+var243 = 0;
+var244 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var_nwkwredef, var243, var_mwriteprop229) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var245 = !var244;
+if (var245){
 goto RET_LABEL;
 } else {
 }
 } else {
-var241 = 1;
-var242 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var_nwkwredef, var241, var_mwriteprop224) /* check_redef_keyword on <self:AAttrPropdef>*/;
-var243 = !var242;
-if (var243){
+var246 = 1;
+var247 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var_nwkwredef, var246, var_mwriteprop229) /* check_redef_keyword on <self:AAttrPropdef>*/;
+var248 = !var247;
+if (var248){
 goto RET_LABEL;
 } else {
 }
-var244 = NULL;
-if (var_nwritable219 == NULL) {
-var245 = 0; /* is null */
+var249 = NULL;
+if (var_nwritable223 == NULL) {
+var250 = 0; /* is null */
 } else {
-var245 = 1; /* arg is null and recv is not */
+var250 = 1; /* arg is null and recv is not */
 }
-if (var245){
-var246 = ((val* (*)(val*))(var_nwritable219->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable219) /* n_visibility on <var_nwritable219:nullable AAble(AAble)>*/;
-((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var246, var_mwriteprop224) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
+if (var250){
+var251 = ((val* (*)(val*))(var_nwritable223->class->vft[COLOR_parser_nodes__AAble__n_visibility]))(var_nwritable223) /* n_visibility on <var_nwritable223:nullable AAble(AAble)>*/;
+((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var251, var_mwriteprop229) /* check_redef_property_visibility on <self:AAttrPropdef>*/;
 } else {
 }
 }
-var247 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
-((void (*)(val*, val*, val*))(var247->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var247, var_mwriteprop224, self) /* []= on <var247:Map[MProperty, APropdef]>*/;
-var248 = NEW_model__MMethodDef(&type_model__MMethodDef);
-var249 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
-((void (*)(val*, val*, val*, val*))(var248->class->vft[COLOR_model__MMethodDef__init]))(var248, var_mclassdef, var_mwriteprop224, var249) /* init on <var248:MMethodDef>*/;
-CHECK_NEW_model__MMethodDef(var248);
-var_mwritepropdef250 = var248;
-((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef_61d]))(self, var_mwritepropdef250) /* mwritepropdef= on <self:AAttrPropdef>*/;
-var251 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
-((void (*)(val*, val*, val*))(var251->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var251, var_mwritepropdef250, self) /* []= on <var251:HashMap[MPropDef, APropdef]>*/;
+var252 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
+((void (*)(val*, val*, val*))(var252->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var252, var_mwriteprop229, self) /* []= on <var252:Map[MProperty, APropdef]>*/;
+var253 = NEW_model__MMethodDef(&type_model__MMethodDef);
+var254 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:AAttrPropdef>*/;
+((void (*)(val*, val*, val*, val*))(var253->class->vft[COLOR_model__MMethodDef__init]))(var253, var_mclassdef, var_mwriteprop229, var254) /* init on <var253:MMethodDef>*/;
+var_mwritepropdef255 = var253;
+((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef_61d]))(self, var_mwritepropdef255) /* mwritepropdef= on <self:AAttrPropdef>*/;
+var256 = ((val* (*)(val*))(var_modelbuilder->class->vft[COLOR_modelize_property__ModelBuilder__mpropdef2npropdef]))(var_modelbuilder) /* mpropdef2npropdef on <var_modelbuilder:ModelBuilder>*/;
+((void (*)(val*, val*, val*))(var256->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var256, var_mwritepropdef255, self) /* []= on <var256:HashMap[MPropDef, APropdef]>*/;
 }
 RET_LABEL:;
 }
@@ -5305,6 +5471,7 @@ short int var132 /* : Bool */;
 short int var134 /* : Bool */;
 int cltype135;
 int idtype136;
+const char* var_class_name;
 long var137 /* : Int */;
 short int var138 /* : Bool */;
 static val* varonce139;
@@ -5635,7 +5802,6 @@ var108 = NEW_array__NativeArray(var107, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var108)->values[1] = (val*) var_mpropdef;
 ((struct instance_array__NativeArray*)var108)->values[2] = (val*) var102;
 ((void (*)(val*, val*, long))(var106->class->vft[COLOR_array__Array__with_native]))(var106, var108, var107) /* with_native on <var106:Array[Object]>*/;
-CHECK_NEW_array__Array(var106);
 }
 var109 = ((val* (*)(val*))(var106->class->vft[COLOR_string__Object__to_s]))(var106) /* to_s on <var106:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var109) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -5663,7 +5829,6 @@ var117 = NEW_array__NativeArray(var116, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var117)->values[0] = (val*) var111;
 ((struct instance_array__NativeArray*)var117)->values[1] = (val*) var_mpropdef;
 ((void (*)(val*, val*, long))(var115->class->vft[COLOR_array__Array__with_native]))(var115, var117, var116) /* with_native on <var115:Array[Object]>*/;
-CHECK_NEW_array__Array(var115);
 }
 var118 = ((val* (*)(val*))(var115->class->vft[COLOR_string__Object__to_s]))(var115) /* to_s on <var115:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var118) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -5676,8 +5841,9 @@ var120 = 0; /* is null */
 var120 = 1; /* arg is null and recv is not */
 }
 if (!var120) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/modelize_property.nit", 721);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 731);
+show_backtrace(1);
 }
 /* <var_nexpr:nullable AExpr> isa ANewExpr */
 cltype122 = type_parser_nodes__ANewExpr.color;
@@ -5711,8 +5877,10 @@ var131 = 2;
 /* <var131:Int> isa OTHER */
 var134 = 1; /* easy <var131:Int> isa OTHER*/
 if (!var134) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 258);
-exit(1);
+var_class_name = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
+show_backtrace(1);
 }
 var137 = ((struct instance_kernel__Int*)var130)->value; /* autounbox from nullable Object to Int */;
 var138 = var137 >= var131;
@@ -5763,9 +5931,7 @@ if (var148){
 var149 = NEW_model__MSignature(&type_model__MSignature);
 var150 = NEW_array__Array(&type_array__Arraymodel__MParameter);
 ((void (*)(val*))(var150->class->vft[COLOR_array__Array__init]))(var150) /* init on <var150:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var150);
 ((void (*)(val*, val*, val*))(var149->class->vft[COLOR_model__MSignature__init]))(var149, var150, var_mtype) /* init on <var149:MSignature>*/;
-CHECK_NEW_model__MSignature(var149);
 var_msignature = var149;
 ((void (*)(val*, val*))(var_mreadpropdef->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var_mreadpropdef, var_msignature) /* msignature= on <var_mreadpropdef:nullable MMethodDef(MMethodDef)>*/;
 } else {
@@ -5790,8 +5956,9 @@ var157 = 1; /* arg is null and recv is not */
 if (var157){
 var158 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(self) /* n_id on <self:AAttrPropdef>*/;
 if (var158 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 744);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 754);
+show_backtrace(1);
 } else {
 var159 = ((val* (*)(val*))(var158->class->vft[COLOR_parser_nodes__Token__text]))(var158) /* text on <var158:nullable TAttrid>*/;
 }
@@ -5801,8 +5968,9 @@ var_name = var161;
 } else {
 var162 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(self) /* n_id2 on <self:AAttrPropdef>*/;
 if (var162 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 746);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 756);
+show_backtrace(1);
 } else {
 var163 = ((val* (*)(val*))(var162->class->vft[COLOR_parser_nodes__Token__text]))(var162) /* text on <var162:nullable TId>*/;
 }
@@ -5811,23 +5979,21 @@ var_name = var163;
 var164 = NEW_model__MParameter(&type_model__MParameter);
 var165 = 0;
 ((void (*)(val*, val*, val*, short int))(var164->class->vft[COLOR_model__MParameter__init]))(var164, var_name, var_mtype, var165) /* init on <var164:MParameter>*/;
-CHECK_NEW_model__MParameter(var164);
 var_mparameter = var164;
 var166 = NEW_model__MSignature(&type_model__MSignature);
 var167 = NEW_array__Array(&type_array__Arraymodel__MParameter);
 var168 = 1;
 ((void (*)(val*, long))(var167->class->vft[COLOR_array__Array__with_capacity]))(var167, var168) /* with_capacity on <var167:Array[MParameter]>*/;
-CHECK_NEW_array__Array(var167);
 var_169 = var167;
 ((void (*)(val*, val*))(var_169->class->vft[COLOR_abstract_collection__Sequence__push]))(var_169, var_mparameter) /* push on <var_169:Array[MParameter]>*/;
 var170 = NULL;
 ((void (*)(val*, val*, val*))(var166->class->vft[COLOR_model__MSignature__init]))(var166, var_169, var170) /* init on <var166:MSignature>*/;
-CHECK_NEW_model__MSignature(var166);
 var_msignature171 = var166;
 var172 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__AAttrPropdef__mwritepropdef]))(self) /* mwritepropdef on <self:AAttrPropdef>*/;
 if (var172 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 750);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 760);
+show_backtrace(1);
 } else {
 ((void (*)(val*, val*))(var172->class->vft[COLOR_model__MMethodDef__msignature_61d]))(var172, var_msignature171) /* msignature= on <var172:nullable MMethodDef>*/;
 }
@@ -5914,8 +6080,9 @@ var5 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__AAttrPropdef__n_ty
 var_ntype = var5;
 var6 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:AAttrPropdef>*/;
 if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 760);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 770);
+show_backtrace(1);
 } else {
 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MAttributeDef__static_mtype]))(var6) /* static_mtype on <var6:nullable MPropDef(nullable MAttributeDef)>*/;
 }
@@ -5950,8 +6117,9 @@ goto RET_LABEL;
 var17 = ((short int (*)(val*, val*))(var_mtype->class->vft[COLOR_kernel__Object___33d_61d]))(var_mtype, var_precursor_type) /* != on <var_mtype:nullable MType(MType)>*/;
 if (var17){
 if (var_ntype == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 770);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 780);
+show_backtrace(1);
 }
 if (varonce) {
 var18 = varonce;
@@ -5990,7 +6158,6 @@ var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var34)->values[3] = (val*) var_precursor_type;
 ((struct instance_array__NativeArray*)var34)->values[4] = (val*) var28;
 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
-CHECK_NEW_array__Array(var32);
 }
 var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_ntype, var35) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -6117,6 +6284,7 @@ short int var70 /* : Bool */;
 short int var72 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 short int var73 /* : Bool */;
 val* var74 /* : Range[Int] */;
 long var75 /* : Int */;
@@ -6307,7 +6475,6 @@ var41 = BOX_kernel__Int(var31); /* autobox from Int to Object */
 ((struct instance_array__NativeArray*)var39)->values[5] = (val*) var_mpropdef;
 ((struct instance_array__NativeArray*)var39)->values[6] = (val*) var_msignature;
 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
-CHECK_NEW_array__Array(var37);
 }
 var42 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node, var42) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -6375,7 +6542,6 @@ var66 = NEW_array__NativeArray(var65, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var66)->values[1] = (val*) var58;
 ((struct instance_array__NativeArray*)var66)->values[2] = (val*) var60;
 ((void (*)(val*, val*, long))(var64->class->vft[COLOR_array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
-CHECK_NEW_array__Array(var64);
 }
 var67 = ((val* (*)(val*))(var64->class->vft[COLOR_string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node52, var67) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -6389,8 +6555,10 @@ var69 = 0;
 /* <var69:Int> isa OTHER */
 var72 = 1; /* easy <var69:Int> isa OTHER*/
 if (!var72) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 259);
-exit(1);
+var_class_name = type_kernel__Int.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
+show_backtrace(1);
 }
 var73 = var68 > var69;
 var70 = var73;
@@ -6404,7 +6572,6 @@ var76 = ((long (*)(val*))(var_mysignature->class->vft[COLOR_model__MSignature__a
 var77 = BOX_kernel__Int(var75); /* autobox from Int to Discrete */
 var78 = BOX_kernel__Int(var76); /* autobox from Int to Discrete */
 ((void (*)(val*, val*, val*))(var74->class->vft[COLOR_range__Range__without_last]))(var74, var77, var78) /* without_last on <var74:Range[Int]>*/;
-CHECK_NEW_range__Range(var74);
 var79 = ((val* (*)(val*))(var74->class->vft[COLOR_abstract_collection__Collection__iterator]))(var74) /* iterator on <var74:Range[Int]>*/;
 for(;;) {
 var80 = ((short int (*)(val*))(var79->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var79) /* is_ok on <var79:Iterator[nullable Object]>*/;
@@ -6422,8 +6589,9 @@ var88 = ((val* (*)(val*))(var87->class->vft[COLOR_model__MParameter__mtype]))(va
 var_prt = var88;
 var90 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var90 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 815);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 825);
+show_backtrace(1);
 } else {
 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_model__MClassDef__bound_mtype]))(var90) /* bound_mtype on <var90:nullable MClassDef>*/;
 }
@@ -6433,8 +6601,9 @@ var_94 = var93;
 if (var93){
 var95 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var95 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 816);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 826);
+show_backtrace(1);
 } else {
 var96 = ((val* (*)(val*))(var95->class->vft[COLOR_model__MClassDef__bound_mtype]))(var95) /* bound_mtype on <var95:nullable MClassDef>*/;
 }
@@ -6507,7 +6676,6 @@ var127 = NEW_array__NativeArray(var126, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var127)->values[5] = (val*) var_prt;
 ((struct instance_array__NativeArray*)var127)->values[6] = (val*) var121;
 ((void (*)(val*, val*, long))(var125->class->vft[COLOR_array__Array__with_native]))(var125, var127, var126) /* with_native on <var125:Array[Object]>*/;
-CHECK_NEW_array__Array(var125);
 }
 var128 = ((val* (*)(val*))(var125->class->vft[COLOR_string__Object__to_s]))(var125) /* to_s on <var125:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node101, var128) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -6537,8 +6705,9 @@ var_ret_type = var_precursor_ret_type;
 } else {
 var133 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var133 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 827);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 837);
+show_backtrace(1);
 } else {
 var134 = ((val* (*)(val*))(var133->class->vft[COLOR_model__MClassDef__bound_mtype]))(var133) /* bound_mtype on <var133:nullable MClassDef>*/;
 }
@@ -6593,7 +6762,6 @@ var157 = NEW_array__NativeArray(var156, &type_array__NativeArraykernel__Object);
 ((struct instance_array__NativeArray*)var157)->values[3] = (val*) var_precursor_ret_type;
 ((struct instance_array__NativeArray*)var157)->values[4] = (val*) var151;
 ((void (*)(val*, val*, long))(var155->class->vft[COLOR_array__Array__with_native]))(var155, var157, var156) /* with_native on <var155:Array[Object]>*/;
-CHECK_NEW_array__Array(var155);
 }
 var158 = ((val* (*)(val*))(var155->class->vft[COLOR_string__Object__to_s]))(var155) /* to_s on <var155:Array[Object]>*/;
 ((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, var_node139, var158) /* error on <var_modelbuilder:ModelBuilder>*/;
@@ -6640,6 +6808,7 @@ short int var16 /* : Bool */;
 short int var18 /* : Bool */;
 int cltype;
 int idtype;
+const char* var_class_name;
 short int var19 /* : Bool */;
 short int var_ /* var : Bool */;
 char var20 /* : Char */;
@@ -6647,43 +6816,46 @@ short int var21 /* : Bool */;
 short int var23 /* : Bool */;
 int cltype24;
 int idtype25;
-short int var26 /* : Bool */;
-val* var27 /* : TClassid */;
+const char* var_class_name26;
+short int var27 /* : Bool */;
+val* var28 /* : TClassid */;
 static val* varonce;
-val* var28 /* : String */;
-char* var29 /* : NativeString */;
-long var30 /* : Int */;
-val* var31 /* : String */;
-val* var32 /* : Array[Object] */;
-long var33 /* : Int */;
-val* var34 /* : NativeArray[Object] */;
-val* var35 /* : String */;
-val* var36 /* : nullable TKwredef */;
-short int var37 /* : Bool */;
+val* var29 /* : String */;
+char* var30 /* : NativeString */;
+long var31 /* : Int */;
+val* var32 /* : String */;
+val* var33 /* : Array[Object] */;
+long var34 /* : Int */;
+val* var35 /* : NativeArray[Object] */;
+val* var36 /* : String */;
+val* var37 /* : nullable TKwredef */;
 short int var38 /* : Bool */;
 short int var39 /* : Bool */;
-val* var40 /* : nullable TKwredef */;
-short int var41 /* : Bool */;
+short int var40 /* : Bool */;
+val* var41 /* : nullable TKwredef */;
 short int var42 /* : Bool */;
 short int var43 /* : Bool */;
 short int var44 /* : Bool */;
-int cltype45;
-int idtype46;
-val* var47 /* : AVisibility */;
-val* var48 /* : Map[MProperty, APropdef] */;
-val* var49 /* : MVirtualTypeDef */;
-val* var50 /* : Location */;
+short int var45 /* : Bool */;
+int cltype46;
+int idtype47;
+val* var48 /* : AVisibility */;
+val* var49 /* : Map[MProperty, APropdef] */;
+val* var50 /* : MVirtualTypeDef */;
+val* var51 /* : Location */;
 val* var_mpropdef /* var mpropdef: MVirtualTypeDef */;
-short int var51 /* : Bool */;
-int cltype52;
-int idtype53;
+short int var52 /* : Bool */;
+int cltype53;
+int idtype54;
 const struct type* type_struct;
+const char* var_class_name55;
 var_modelbuilder = p0;
 var_nclassdef = p1;
 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
 if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 842);
-exit(1);
+fprintf(stderr, "Runtime error: %s", "Cast failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 852);
+show_backtrace(1);
 }
 var_mclassdef = var;
 var1 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_id]))(self) /* n_id on <self:ATypePropdef>*/;
@@ -6704,7 +6876,6 @@ var8 = ((val* (*)(val*, val*, val*, val*))(self->class->vft[COLOR_modelize_prope
 var_mvisibility = var8;
 var9 = NEW_model__MVirtualTypeProp(&type_model__MVirtualTypeProp);
 ((void (*)(val*, val*, val*, val*))(var9->class->vft[COLOR_model__MVirtualTypeProp__init]))(var9, var_mclassdef, var_name, var_mvisibility) /* init on <var9:MVirtualTypeProp>*/;
-CHECK_NEW_model__MVirtualTypeProp(var9);
 var_mprop = var9;
 var10 = ((val* (*)(val*))(var_name->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_name) /* iterator on <var_name:String>*/;
 for(;;) {
@@ -6719,8 +6890,10 @@ var15 = 'a';
 /* <var15:Char> isa OTHER */
 var18 = 1; /* easy <var15:Char> isa OTHER*/
 if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 456);
-exit(1);
+var_class_name = type_kernel__Char.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 442);
+show_backtrace(1);
 }
 var19 = var_c >= var15;
 var16 = var19;
@@ -6735,11 +6908,13 @@ var20 = 'z';
 /* <var20:Char> isa OTHER */
 var23 = 1; /* easy <var20:Char> isa OTHER*/
 if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "lib/standard/kernel.nit", 454);
-exit(1);
+var_class_name26 = type_kernel__Char.name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26);
+fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 440);
+show_backtrace(1);
 }
-var26 = var_c <= var20;
-var21 = var26;
+var27 = var_c <= var20;
+var21 = var27;
 goto RET_LABEL22;
 RET_LABEL22:(void)0;
 }
@@ -6748,27 +6923,26 @@ var14 = var21;
 var14 = var_;
 }
 if (var14){
-var27 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_id]))(self) /* n_id on <self:ATypePropdef>*/;
+var28 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_id]))(self) /* n_id on <self:ATypePropdef>*/;
 if (varonce) {
-var28 = varonce;
-} else {
-var29 = "Warning: lowercase in the virtual type ";
-var30 = 39;
-var31 = string__NativeString__to_s_with_length(var29, var30);
-var28 = var31;
-varonce = var28;
-}
-var32 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var32 = array_instance Array[Object] */
-var33 = 2;
-var34 = NEW_array__NativeArray(var33, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var34)->values[0] = (val*) var28;
-((struct instance_array__NativeArray*)var34)->values[1] = (val*) var_name;
-((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Object]>*/;
-CHECK_NEW_array__Array(var32);
-}
-var35 = ((val* (*)(val*))(var32->class->vft[COLOR_string__Object__to_s]))(var32) /* to_s on <var32:Array[Object]>*/;
-((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var_modelbuilder, var27, var35) /* warning on <var_modelbuilder:ModelBuilder>*/;
+var29 = varonce;
+} else {
+var30 = "Warning: lowercase in the virtual type ";
+var31 = 39;
+var32 = string__NativeString__to_s_with_length(var30, var31);
+var29 = var32;
+varonce = var29;
+}
+var33 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var33 = array_instance Array[Object] */
+var34 = 2;
+var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var35)->values[0] = (val*) var29;
+((struct instance_array__NativeArray*)var35)->values[1] = (val*) var_name;
+((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
+}
+var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
+((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__warning]))(var_modelbuilder, var28, var36) /* warning on <var_modelbuilder:ModelBuilder>*/;
 goto BREAK_label;
 } else {
 }
@@ -6776,57 +6950,59 @@ CONTINUE_label: (void)0;
 ((void (*)(val*))(var10->class->vft[COLOR_abstract_collection__Iterator__next]))(var10) /* next on <var10:Iterator[nullable Object]>*/;
 }
 BREAK_label: (void)0;
-var36 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_kwredef]))(self) /* n_kwredef on <self:ATypePropdef>*/;
-var37 = 0;
-var38 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var36, var37, var_mprop) /* check_redef_keyword on <self:ATypePropdef>*/;
-var39 = !var38;
-if (var39){
+var37 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_kwredef]))(self) /* n_kwredef on <self:ATypePropdef>*/;
+var38 = 0;
+var39 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var37, var38, var_mprop) /* check_redef_keyword on <self:ATypePropdef>*/;
+var40 = !var39;
+if (var40){
 goto RET_LABEL;
 } else {
 }
 } else {
-var40 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_kwredef]))(self) /* n_kwredef on <self:ATypePropdef>*/;
-var41 = 1;
-var42 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var40, var41, var_mprop) /* check_redef_keyword on <self:ATypePropdef>*/;
-var43 = !var42;
-if (var43){
+var41 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_kwredef]))(self) /* n_kwredef on <self:ATypePropdef>*/;
+var42 = 1;
+var43 = ((short int (*)(val*, val*, val*, val*, short int, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_keyword]))(self, var_modelbuilder, var_nclassdef, var41, var42, var_mprop) /* check_redef_keyword on <self:ATypePropdef>*/;
+var44 = !var43;
+if (var44){
 goto RET_LABEL;
 } else {
 }
 /* <var_mprop:nullable MProperty(MProperty)> isa MVirtualTypeProp */
-cltype45 = type_model__MVirtualTypeProp.color;
-idtype46 = type_model__MVirtualTypeProp.id;
-if(cltype45 >= var_mprop->type->table_size) {
-var44 = 0;
-} else {
-var44 = var_mprop->type->type_table[cltype45] == idtype46;
-}
-if (!var44) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/modelize_property.nit", 855);
-exit(1);
-}
-var47 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_visibility]))(self) /* n_visibility on <self:ATypePropdef>*/;
-((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var47, var_mprop) /* check_redef_property_visibility on <self:ATypePropdef>*/;
-}
-var48 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
-((void (*)(val*, val*, val*))(var48->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var48, var_mprop, self) /* []= on <var48:Map[MProperty, APropdef]>*/;
-var49 = NEW_model__MVirtualTypeDef(&type_model__MVirtualTypeDef);
-var50 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:ATypePropdef>*/;
-((void (*)(val*, val*, val*, val*))(var49->class->vft[COLOR_model__MVirtualTypeDef__init]))(var49, var_mclassdef, var_mprop, var50) /* init on <var49:MVirtualTypeDef>*/;
-CHECK_NEW_model__MVirtualTypeDef(var49);
-var_mpropdef = var49;
+cltype46 = type_model__MVirtualTypeProp.color;
+idtype47 = type_model__MVirtualTypeProp.id;
+if(cltype46 >= var_mprop->type->table_size) {
+var45 = 0;
+} else {
+var45 = var_mprop->type->type_table[cltype46] == idtype47;
+}
+if (!var45) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 865);
+show_backtrace(1);
+}
+var48 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ATypePropdef__n_visibility]))(self) /* n_visibility on <self:ATypePropdef>*/;
+((void (*)(val*, val*, val*, val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__check_redef_property_visibility]))(self, var_modelbuilder, var_nclassdef, var48, var_mprop) /* check_redef_property_visibility on <self:ATypePropdef>*/;
+}
+var49 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_property__AClassdef__mprop2npropdef]))(var_nclassdef) /* mprop2npropdef on <var_nclassdef:AClassdef>*/;
+((void (*)(val*, val*, val*))(var49->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var49, var_mprop, self) /* []= on <var49:Map[MProperty, APropdef]>*/;
+var50 = NEW_model__MVirtualTypeDef(&type_model__MVirtualTypeDef);
+var51 = ((val* (*)(val*))(self->class->vft[COLOR_parser_nodes__ANode__location]))(self) /* location on <self:ATypePropdef>*/;
+((void (*)(val*, val*, val*, val*))(var50->class->vft[COLOR_model__MVirtualTypeDef__init]))(var50, var_mclassdef, var_mprop, var51) /* init on <var50:MVirtualTypeDef>*/;
+var_mpropdef = var50;
 /* <var_mpropdef:MVirtualTypeDef> isa nullable MPROPDEF */
-type_struct = self->type->resolution_table->types[COLOR_parser_nodes__APropdef_VTMPROPDEF];
-cltype52 = type_struct->color;
-idtype53 = type_struct->id;
-if(cltype52 >= var_mpropdef->type->table_size) {
-var51 = 0;
+type_struct = self->type->resolution_table->types[COLOR_nullable_parser_nodes__APropdef_VTMPROPDEF];
+cltype53 = type_struct->color;
+idtype54 = type_struct->id;
+if(cltype53 >= var_mpropdef->type->table_size) {
+var52 = 0;
 } else {
-var51 = var_mpropdef->type->type_table[cltype52] == idtype53;
+var52 = var_mpropdef->type->type_table[cltype53] == idtype54;
 }
-if (!var51) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Cast failed", "src/modelize_property.nit", 861);
-exit(1);
+if (!var52) {
+var_class_name55 = var_mpropdef == NULL ? "null" : var_mpropdef->type->name;
+fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MPROPDEF", var_class_name55);
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 871);
+show_backtrace(1);
 }
 ((void (*)(val*, val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef_61d]))(self, var_mpropdef) /* mpropdef= on <self:ATypePropdef>*/;
 RET_LABEL:;
@@ -6900,155 +7076,173 @@ void modelize_property__ATypePropdef__check_signature(val* self, val* p0, val* p
 val* var_modelbuilder /* var modelbuilder: ModelBuilder */;
 val* var_nclassdef /* var nclassdef: AClassdef */;
 val* var /* : nullable MPropDef */;
-val* var1 /* : nullable MType */;
-val* var_bound /* var bound: nullable MType */;
+val* var_mpropdef /* var mpropdef: nullable MVirtualTypeDef */;
+val* var1 /* : null */;
 short int var2 /* : Bool */;
+val* var3 /* : nullable MPropDef */;
+val* var4 /* : nullable MType */;
+val* var_bound /* var bound: nullable MType */;
+short int var5 /* : Bool */;
 int cltype;
 int idtype;
-short int var3 /* : Bool */;
-val* var4 /* : nullable MClassDef */;
-val* var5 /* : MModule */;
+short int var6 /* : Bool */;
+val* var7 /* : nullable MClassDef */;
+val* var8 /* : MModule */;
 val* var_mmodule /* var mmodule: MModule */;
-val* var6 /* : nullable MClassDef */;
-val* var7 /* : MClassType */;
+val* var9 /* : nullable MClassDef */;
+val* var10 /* : MClassType */;
 val* var_anchor /* var anchor: MClassType */;
-val* var8 /* : Array[MVirtualType] */;
-long var9 /* : Int */;
+val* var11 /* : Array[MVirtualType] */;
+long var12 /* : Int */;
 val* var_ /* var : Array[MVirtualType] */;
-val* var10 /* : nullable MPropDef */;
-val* var11 /* : MProperty */;
-val* var12 /* : MVirtualType */;
+val* var13 /* : nullable MPropDef */;
+val* var14 /* : MProperty */;
+val* var15 /* : MVirtualType */;
 val* var_seen /* var seen: Array[MVirtualType] */;
-short int var13 /* : Bool */;
+short int var16 /* : Bool */;
 static val* varonce;
-val* var14 /* : String */;
-char* var15 /* : NativeString */;
-long var16 /* : Int */;
 val* var17 /* : String */;
-static val* varonce18;
-val* var19 /* : String */;
-char* var20 /* : NativeString */;
-long var21 /* : Int */;
+char* var18 /* : NativeString */;
+long var19 /* : Int */;
+val* var20 /* : String */;
+static val* varonce21;
 val* var22 /* : String */;
-val* var23 /* : String */;
-val* var24 /* : Array[Object] */;
-long var25 /* : Int */;
-val* var26 /* : NativeArray[Object] */;
-val* var27 /* : String */;
-val* var28 /* : MType */;
+char* var23 /* : NativeString */;
+long var24 /* : Int */;
+val* var25 /* : String */;
+val* var26 /* : String */;
+val* var27 /* : Array[Object] */;
+long var28 /* : Int */;
+val* var29 /* : NativeArray[Object] */;
+val* var30 /* : String */;
+val* var31 /* : MType */;
 val* var_next /* var next: MType */;
-short int var29 /* : Bool */;
-int cltype30;
-int idtype31;
 short int var32 /* : Bool */;
+int cltype33;
+int idtype34;
+short int var35 /* : Bool */;
 var_modelbuilder = p0;
 var_nclassdef = p1;
 var = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:ATypePropdef>*/;
-if (var == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 881);
-exit(1);
+var_mpropdef = var;
+var1 = NULL;
+if (var_mpropdef == NULL) {
+var2 = 1; /* is null */
 } else {
-var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var) /* bound on <var:nullable MPropDef(nullable MVirtualTypeDef)>*/;
+var2 = 0; /* arg is null but recv is not */
 }
-var_bound = var1;
+if (var2){
+goto RET_LABEL;
+} else {
+}
+var3 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:ATypePropdef>*/;
+if (var3 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 894);
+show_backtrace(1);
+} else {
+var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MVirtualTypeDef__bound]))(var3) /* bound on <var3:nullable MPropDef(nullable MVirtualTypeDef)>*/;
+}
+var_bound = var4;
 /* <var_bound:nullable MType> isa MVirtualType */
 cltype = type_model__MVirtualType.color;
 idtype = type_model__MVirtualType.id;
 if(var_bound == NULL) {
-var2 = 0;
+var5 = 0;
 } else {
 if(cltype >= var_bound->type->table_size) {
-var2 = 0;
+var5 = 0;
 } else {
-var2 = var_bound->type->type_table[cltype] == idtype;
+var5 = var_bound->type->type_table[cltype] == idtype;
 }
 }
-var3 = !var2;
-if (var3){
+var6 = !var5;
+if (var6){
 goto RET_LABEL;
 } else {
 }
-var4 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
-if (var4 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 886);
-exit(1);
-} else {
-var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MClassDef__mmodule]))(var4) /* mmodule on <var4:nullable MClassDef>*/;
-}
-var_mmodule = var5;
-var6 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
-if (var6 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 887);
-exit(1);
-} else {
-var7 = ((val* (*)(val*))(var6->class->vft[COLOR_model__MClassDef__bound_mtype]))(var6) /* bound_mtype on <var6:nullable MClassDef>*/;
-}
-var_anchor = var7;
-var8 = NEW_array__Array(&type_array__Arraymodel__MVirtualType);
-var9 = 1;
-((void (*)(val*, long))(var8->class->vft[COLOR_array__Array__with_capacity]))(var8, var9) /* with_capacity on <var8:Array[MVirtualType]>*/;
-CHECK_NEW_array__Array(var8);
-var_ = var8;
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:ATypePropdef>*/;
-if (var10 == NULL) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Reciever is null", "src/modelize_property.nit", 890);
-exit(1);
-} else {
-var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MPropDef__mproperty]))(var10) /* mproperty on <var10:nullable MPropDef(nullable MVirtualTypeDef)>*/;
-}
-var12 = ((val* (*)(val*))(var11->class->vft[COLOR_model__MVirtualTypeProp__mvirtualtype]))(var11) /* mvirtualtype on <var11:MProperty(MVirtualTypeProp)>*/;
-((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var12) /* push on <var_:Array[MVirtualType]>*/;
+var7 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
+if (var7 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 899);
+show_backtrace(1);
+} else {
+var8 = ((val* (*)(val*))(var7->class->vft[COLOR_model__MClassDef__mmodule]))(var7) /* mmodule on <var7:nullable MClassDef>*/;
+}
+var_mmodule = var8;
+var9 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_modelize_class__AClassdef__mclassdef]))(var_nclassdef) /* mclassdef on <var_nclassdef:AClassdef>*/;
+if (var9 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 900);
+show_backtrace(1);
+} else {
+var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MClassDef__bound_mtype]))(var9) /* bound_mtype on <var9:nullable MClassDef>*/;
+}
+var_anchor = var10;
+var11 = NEW_array__Array(&type_array__Arraymodel__MVirtualType);
+var12 = 1;
+((void (*)(val*, long))(var11->class->vft[COLOR_array__Array__with_capacity]))(var11, var12) /* with_capacity on <var11:Array[MVirtualType]>*/;
+var_ = var11;
+var13 = ((val* (*)(val*))(self->class->vft[COLOR_modelize_property__APropdef__mpropdef]))(self) /* mpropdef on <self:ATypePropdef>*/;
+if (var13 == NULL) {
+fprintf(stderr, "Runtime error: %s", "Receiver is null");
+fprintf(stderr, " (%s:%d)\n", "src/modelize_property.nit", 903);
+show_backtrace(1);
+} else {
+var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MPropDef__mproperty]))(var13) /* mproperty on <var13:nullable MPropDef(nullable MVirtualTypeDef)>*/;
+}
+var15 = ((val* (*)(val*))(var14->class->vft[COLOR_model__MVirtualTypeProp__mvirtualtype]))(var14) /* mvirtualtype on <var14:MProperty(MVirtualTypeProp)>*/;
+((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var15) /* push on <var_:Array[MVirtualType]>*/;
 var_seen = var_;
 for(;;) {
-var13 = ((short int (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__Collection__has]))(var_seen, var_bound) /* has on <var_seen:Array[MVirtualType]>*/;
-if (var13){
+var16 = ((short int (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__Collection__has]))(var_seen, var_bound) /* has on <var_seen:Array[MVirtualType]>*/;
+if (var16){
 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var_bound) /* add on <var_seen:Array[MVirtualType]>*/;
 if (varonce) {
-var14 = varonce;
+var17 = varonce;
 } else {
-var15 = "Error: circularity of virtual type definition: ";
-var16 = 47;
-var17 = string__NativeString__to_s_with_length(var15, var16);
-var14 = var17;
-varonce = var14;
-}
-if (varonce18) {
-var19 = varonce18;
-} else {
-var20 = " -> ";
-var21 = 4;
-var22 = string__NativeString__to_s_with_length(var20, var21);
-var19 = var22;
-varonce18 = var19;
-}
-var23 = ((val* (*)(val*, val*))(var_seen->class->vft[COLOR_string__Collection__join]))(var_seen, var19) /* join on <var_seen:Array[MVirtualType]>*/;
-var24 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var24 = array_instance Array[Object] */
-var25 = 2;
-var26 = NEW_array__NativeArray(var25, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var26)->values[0] = (val*) var14;
-((struct instance_array__NativeArray*)var26)->values[1] = (val*) var23;
-((void (*)(val*, val*, long))(var24->class->vft[COLOR_array__Array__with_native]))(var24, var26, var25) /* with_native on <var24:Array[Object]>*/;
-CHECK_NEW_array__Array(var24);
-}
-var27 = ((val* (*)(val*))(var24->class->vft[COLOR_string__Object__to_s]))(var24) /* to_s on <var24:Array[Object]>*/;
-((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var27) /* error on <var_modelbuilder:ModelBuilder>*/;
+var18 = "Error: circularity of virtual type definition: ";
+var19 = 47;
+var20 = string__NativeString__to_s_with_length(var18, var19);
+var17 = var20;
+varonce = var17;
+}
+if (varonce21) {
+var22 = varonce21;
+} else {
+var23 = " -> ";
+var24 = 4;
+var25 = string__NativeString__to_s_with_length(var23, var24);
+var22 = var25;
+varonce21 = var22;
+}
+var26 = ((val* (*)(val*, val*))(var_seen->class->vft[COLOR_string__Collection__join]))(var_seen, var22) /* join on <var_seen:Array[MVirtualType]>*/;
+var27 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var27 = array_instance Array[Object] */
+var28 = 2;
+var29 = NEW_array__NativeArray(var28, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var29)->values[0] = (val*) var17;
+((struct instance_array__NativeArray*)var29)->values[1] = (val*) var26;
+((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Object]>*/;
+}
+var30 = ((val* (*)(val*))(var27->class->vft[COLOR_string__Object__to_s]))(var27) /* to_s on <var27:Array[Object]>*/;
+((void (*)(val*, val*, val*))(var_modelbuilder->class->vft[COLOR_modelbuilder__ModelBuilder__error]))(var_modelbuilder, self, var30) /* error on <var_modelbuilder:ModelBuilder>*/;
 goto RET_LABEL;
 } else {
 }
 ((void (*)(val*, val*))(var_seen->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_seen, var_bound) /* add on <var_seen:Array[MVirtualType]>*/;
-var28 = ((val* (*)(val*, val*, val*))(var_bound->class->vft[COLOR_model__MVirtualType__lookup_bound]))(var_bound, var_mmodule, var_anchor) /* lookup_bound on <var_bound:nullable MType(MVirtualType)>*/;
-var_next = var28;
+var31 = ((val* (*)(val*, val*, val*))(var_bound->class->vft[COLOR_model__MVirtualType__lookup_bound]))(var_bound, var_mmodule, var_anchor) /* lookup_bound on <var_bound:nullable MType(MVirtualType)>*/;
+var_next = var31;
 /* <var_next:MType> isa MVirtualType */
-cltype30 = type_model__MVirtualType.color;
-idtype31 = type_model__MVirtualType.id;
-if(cltype30 >= var_next->type->table_size) {
-var29 = 0;
+cltype33 = type_model__MVirtualType.color;
+idtype34 = type_model__MVirtualType.id;
+if(cltype33 >= var_next->type->table_size) {
+var32 = 0;
 } else {
-var29 = var_next->type->type_table[cltype30] == idtype31;
+var32 = var_next->type->type_table[cltype33] == idtype34;
 }
-var32 = !var29;
-if (var32){
+var35 = !var32;
+if (var35){
 goto RET_LABEL;
 } else {
 }