+var2 = var3;
+}
+if (var2){
+var_l = ((val*)NULL);
+if (var_n == NULL) {
+var8 = 0; /* is null */
+} else {
+var8 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_n,((val*)NULL)) on <var_n:nullable ANode> */
+var_other11 = ((val*)NULL);
+{
+var12 = ((short int(*)(val* self, val* p0))(var_n->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_n, var_other11); /* == on <var_n:nullable ANode(ANode)>*/
+}
+var13 = !var12;
+var9 = var13;
+goto RET_LABEL10;
+RET_LABEL10:(void)0;
+}
+var8 = var9;
+}
+if (var8){
+{
+var14 = ((val*(*)(val* self))(var_n->class->vft[COLOR_nit__parser_nodes__ANode__hot_location]))(var_n); /* hot_location on <var_n:nullable ANode(ANode)>*/
+}
+var_l = var14;
+} else {
+}
+{
+{ /* Inline modelbuilder_base#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
+var17 = self->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <self:ModelBuilder> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
+fatal_exit(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+if (unlikely(varonce==NULL)) {
+var18 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce19!=NULL)) {
+var20 = varonce19;
+} else {
+var21 = "Fatal Error: `";
+var22 = standard___standard__NativeString___to_s_with_length(var21, 14l);
+var20 = var22;
+varonce19 = var20;
+}
+((struct instance_standard__NativeArray*)var18)->values[0]=var20;
+if (likely(varonce23!=NULL)) {
+var24 = varonce23;
+} else {
+var25 = "` must have a property named `";
+var26 = standard___standard__NativeString___to_s_with_length(var25, 30l);
+var24 = var26;
+varonce23 = var24;
+}
+((struct instance_standard__NativeArray*)var18)->values[2]=var24;
+if (likely(varonce27!=NULL)) {
+var28 = varonce27;
+} else {
+var29 = "`.";
+var30 = standard___standard__NativeString___to_s_with_length(var29, 2l);
+var28 = var30;
+varonce27 = var28;
+}
+((struct instance_standard__NativeArray*)var18)->values[4]=var28;
+} else {
+var18 = varonce;
+varonce = NULL;
+}
+{
+var31 = ((val*(*)(val* self))(var_recv->class->vft[COLOR_standard__string__Object__to_s]))(var_recv); /* to_s on <var_recv:MClass>*/
+}
+((struct instance_standard__NativeArray*)var18)->values[1]=var31;
+((struct instance_standard__NativeArray*)var18)->values[3]=var_name;
+{
+var32 = ((val*(*)(val* self))(var18->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var18); /* native_to_s on <var18:NativeArray[String]>*/
+}
+varonce = var18;
+{
+nit___nit__ToolContext___fatal_error(var15, var_l, var32); /* Direct call toolcontext#ToolContext#fatal_error on <var15:ToolContext>*/
+}
+PRINT_ERROR("Runtime error: %s", "Aborted");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 222);
+fatal_exit(1);
+} else {
+}
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder_base#ModelBuilder#resolve_mtype_unchecked for (self: ModelBuilder, MModule, nullable MClassDef, AType, Bool): nullable MType */
+val* nit___nit__ModelBuilder___resolve_mtype_unchecked(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : nullable MType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_mclassdef /* var mclassdef: nullable MClassDef */;
+val* var_ntype /* var ntype: AType */;
+short int var_with_virtual /* var with_virtual: Bool */;
+val* var1 /* : TClassid */;
+val* var3 /* : TClassid */;
+val* var4 /* : String */;
+val* var_name /* var name: String */;
+short int var5 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var_ /* var : Bool */;
+val* var11 /* : nullable MProperty */;
+short int var12 /* : Bool */;
+int cltype;
+int idtype;
+const char* var_class_name;
+val* var_prop /* var prop: nullable MVirtualTypeProp */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+val* var18 /* : ANodes[AType] */;
+val* var20 /* : ANodes[AType] */;
+short int var21 /* : Bool */;
+short int var22 /* : Bool */;
+val* var23 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce24;
+val* var25 /* : String */;
+char* var26 /* : NativeString */;
+val* var27 /* : FlatString */;
+static val* varonce28;
+val* var29 /* : String */;
+char* var30 /* : NativeString */;
+val* var31 /* : FlatString */;
+val* var32 /* : String */;
+val* var33 /* : MVirtualType */;
+val* var35 /* : MVirtualType */;
+val* var_res /* var res: MType */;
+val* var36 /* : nullable TKwnullable */;
+val* var38 /* : nullable TKwnullable */;
+short int var39 /* : Bool */;
+short int var40 /* : Bool */;
+short int var42 /* : Bool */;
+short int var43 /* : Bool */;
+val* var44 /* : MType */;
+short int var46 /* : Bool */;
+short int var47 /* : Bool */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+val* var51 /* : MClass */;
+val* var53 /* : MClass */;
+val* var54 /* : Array[MParameterType] */;
+val* var56 /* : Array[MParameterType] */;
+val* var_57 /* var : Array[MParameterType] */;
+val* var58 /* : ArrayIterator[nullable Object] */;
+val* var_59 /* var : ArrayIterator[MParameterType] */;
+short int var60 /* : Bool */;
+val* var61 /* : nullable Object */;
+val* var_p /* var p: MParameterType */;
+val* var62 /* : String */;
+val* var64 /* : String */;
+short int var65 /* : Bool */;
+short int var67 /* : Bool */;
+short int var68 /* : Bool */;
+val* var69 /* : ANodes[AType] */;
+val* var71 /* : ANodes[AType] */;
+short int var72 /* : Bool */;
+short int var73 /* : Bool */;
+val* var75 /* : NativeArray[String] */;
+static val* varonce74;
+static val* varonce76;
+val* var77 /* : String */;
+char* var78 /* : NativeString */;
+val* var79 /* : FlatString */;
+static val* varonce80;
+val* var81 /* : String */;
+char* var82 /* : NativeString */;
+val* var83 /* : FlatString */;
+val* var84 /* : String */;
+val* var85 /* : nullable TKwnullable */;
+val* var87 /* : nullable TKwnullable */;
+short int var88 /* : Bool */;
+short int var89 /* : Bool */;
+short int var91 /* : Bool */;
+short int var92 /* : Bool */;
+val* var93 /* : MType */;
+val* var96 /* : nullable MClass */;
+val* var_mclass /* var mclass: nullable MClass */;
+short int var97 /* : Bool */;
+short int var98 /* : Bool */;
+short int var100 /* : Bool */;
+short int var101 /* : Bool */;
+val* var102 /* : ANodes[AType] */;
+val* var104 /* : ANodes[AType] */;
+long var105 /* : Int */;
+long var_arity /* var arity: Int */;
+long var106 /* : Int */;
+long var108 /* : Int */;
+short int var109 /* : Bool */;
+short int var111 /* : Bool */;
+short int var112 /* : Bool */;
+short int var113 /* : Bool */;
+short int var115 /* : Bool */;
+val* var117 /* : NativeArray[String] */;
+static val* varonce116;
+static val* varonce118;
+val* var119 /* : String */;
+char* var120 /* : NativeString */;
+val* var121 /* : FlatString */;
+static val* varonce122;
+val* var123 /* : String */;
+char* var124 /* : NativeString */;
+val* var125 /* : FlatString */;
+val* var126 /* : String */;
+val* var127 /* : String */;
+long var128 /* : Int */;
+long var130 /* : Int */;
+short int var131 /* : Bool */;
+short int var133 /* : Bool */;
+val* var135 /* : NativeArray[String] */;
+static val* varonce134;
+static val* varonce136;
+val* var137 /* : String */;
+char* var138 /* : NativeString */;
+val* var139 /* : FlatString */;
+static val* varonce140;
+val* var141 /* : String */;
+char* var142 /* : NativeString */;
+val* var143 /* : FlatString */;
+val* var144 /* : String */;
+val* var146 /* : NativeArray[String] */;
+static val* varonce145;
+static val* varonce147;
+val* var148 /* : String */;
+char* var149 /* : NativeString */;
+val* var150 /* : FlatString */;
+static val* varonce151;
+val* var152 /* : String */;
+char* var153 /* : NativeString */;
+val* var154 /* : FlatString */;
+static val* varonce155;
+val* var156 /* : String */;
+char* var157 /* : NativeString */;
+val* var158 /* : FlatString */;
+static val* varonce159;
+val* var160 /* : String */;
+char* var161 /* : NativeString */;
+val* var162 /* : FlatString */;
+long var163 /* : Int */;
+long var165 /* : Int */;
+val* var166 /* : String */;
+val* var167 /* : String */;
+val* var168 /* : String */;
+val* var169 /* : String */;
+short int var170 /* : Bool */;
+short int var172 /* : Bool */;
+val* var173 /* : MClassType */;
+val* var175 /* : MClassType */;
+val* var176 /* : nullable TKwnullable */;
+val* var178 /* : nullable TKwnullable */;
+short int var179 /* : Bool */;
+short int var180 /* : Bool */;
+short int var182 /* : Bool */;
+short int var183 /* : Bool */;
+val* var184 /* : MType */;
+val* var186 /* : Array[MType] */;
+val* var_mtypes /* var mtypes: Array[MType] */;
+val* var187 /* : ANodes[AType] */;
+val* var189 /* : ANodes[AType] */;
+val* var_190 /* var : ANodes[AType] */;
+val* var191 /* : Iterator[ANode] */;
+val* var_192 /* var : Iterator[AType] */;
+short int var193 /* : Bool */;
+val* var194 /* : nullable Object */;
+val* var_nt /* var nt: AType */;
+val* var195 /* : nullable MType */;
+val* var_mt /* var mt: nullable MType */;
+short int var196 /* : Bool */;
+short int var197 /* : Bool */;
+val* var_other199 /* var other: nullable Object */;
+short int var200 /* : Bool */;
+short int var202 /* : Bool */;
+val* var204 /* : MClassType */;
+val* var205 /* : nullable TKwnullable */;
+val* var207 /* : nullable TKwnullable */;
+short int var208 /* : Bool */;
+short int var209 /* : Bool */;
+short int var211 /* : Bool */;
+short int var212 /* : Bool */;
+val* var213 /* : MType */;
+val* var216 /* : NativeArray[String] */;
+static val* varonce215;
+static val* varonce217;
+val* var218 /* : String */;
+char* var219 /* : NativeString */;
+val* var220 /* : FlatString */;
+static val* varonce221;
+val* var222 /* : String */;
+char* var223 /* : NativeString */;
+val* var224 /* : FlatString */;
+static val* varonce225;
+val* var226 /* : String */;
+char* var227 /* : NativeString */;
+val* var228 /* : FlatString */;
+val* var229 /* : String */;
+val* var230 /* : String */;
+var_mmodule = p0;
+var_mclassdef = p1;
+var_ntype = p2;
+var_with_virtual = p3;
+{
+{ /* Inline parser_nodes#AType#n_id (var_ntype) on <var_ntype:AType> */
+var3 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_id].val; /* _n_id on <var_ntype:AType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_id");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1723);
+fatal_exit(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = nit__lexer_work___Token___text(var1);
+}
+var_name = var4;
+if (var_mclassdef == NULL) {
+var6 = 0; /* is null */
+} else {
+var6 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
+var_other = ((val*)NULL);
+{
+var9 = ((short int(*)(val* self, val* p0))(var_mclassdef->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mclassdef, var_other); /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/
+}
+var10 = !var9;
+var7 = var10;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+var6 = var7;
+}
+var_ = var6;
+if (var6){
+var5 = var_with_virtual;
+} else {
+var5 = var_;
+}
+if (var5){
+{
+var11 = nit___nit__ModelBuilder___try_get_mproperty_by_name(self, var_ntype, var_mclassdef, var_name);
+}
+/* <var11:nullable MProperty> isa nullable MVirtualTypeProp */
+cltype = type_nullable__nit__MVirtualTypeProp.color;
+idtype = type_nullable__nit__MVirtualTypeProp.id;
+if(var11 == NULL) {
+var12 = 1;
+} else {
+if(cltype >= var11->type->table_size) {
+var12 = 0;
+} else {
+var12 = var11->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var12)) {
+var_class_name = var11 == NULL ? "null" : var11->type->name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "nullable MVirtualTypeProp", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 238);
+fatal_exit(1);
+}
+var_prop = var11;
+if (var_prop == NULL) {
+var13 = 0; /* is null */
+} else {
+var13 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_prop,((val*)NULL)) on <var_prop:nullable MVirtualTypeProp> */
+var_other = ((val*)NULL);
+{
+var16 = ((short int(*)(val* self, val* p0))(var_prop->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_prop, var_other); /* == on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)>*/
+}
+var17 = !var16;
+var14 = var17;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+var13 = var14;
+}
+if (var13){
+{
+{ /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
+var20 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
+if (unlikely(var20 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
+fatal_exit(1);
+}
+var18 = var20;
+RET_LABEL19:(void)0;
+}
+}
+{
+var21 = nit___nit__ANodes___standard__abstract_collection__Collection__is_empty(var18);
+}
+var22 = !var21;
+if (var22){
+if (unlikely(varonce==NULL)) {
+var23 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce24!=NULL)) {
+var25 = varonce24;
+} else {
+var26 = "Type Error: formal type `";
+var27 = standard___standard__NativeString___to_s_with_length(var26, 25l);
+var25 = var27;
+varonce24 = var25;
+}
+((struct instance_standard__NativeArray*)var23)->values[0]=var25;
+if (likely(varonce28!=NULL)) {
+var29 = varonce28;
+} else {
+var30 = "` cannot have formal parameters.";
+var31 = standard___standard__NativeString___to_s_with_length(var30, 32l);
+var29 = var31;
+varonce28 = var29;
+}
+((struct instance_standard__NativeArray*)var23)->values[2]=var29;
+} else {
+var23 = varonce;
+varonce = NULL;
+}
+((struct instance_standard__NativeArray*)var23)->values[1]=var_name;
+{
+var32 = ((val*(*)(val* self))(var23->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
+}
+varonce = var23;
+{
+nit___nit__ModelBuilder___error(self, var_ntype, var32); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+} else {
+}
+{
+{ /* Inline model#MVirtualTypeProp#mvirtualtype (var_prop) on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)> */
+var35 = var_prop->attrs[COLOR_nit__model__MVirtualTypeProp___mvirtualtype].val; /* _mvirtualtype on <var_prop:nullable MVirtualTypeProp(MVirtualTypeProp)> */
+if (unlikely(var35 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mvirtualtype");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2191);
+fatal_exit(1);
+}
+var33 = var35;
+RET_LABEL34:(void)0;
+}
+}
+var_res = var33;
+{
+{ /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
+var38 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
+var36 = var38;
+RET_LABEL37:(void)0;
+}
+}
+if (var36 == NULL) {
+var39 = 0; /* is null */
+} else {
+var39 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var36,((val*)NULL)) on <var36:nullable TKwnullable> */
+var_other = ((val*)NULL);
+{
+var42 = ((short int(*)(val* self, val* p0))(var36->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var36, var_other); /* == on <var36:nullable TKwnullable(TKwnullable)>*/
+}
+var43 = !var42;
+var40 = var43;
+goto RET_LABEL41;
+RET_LABEL41:(void)0;
+}
+var39 = var40;
+}
+if (var39){
+{
+var44 = nit___nit__MType___as_nullable(var_res);
+}
+var_res = var44;
+} else {
+}
+{
+{ /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
+var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
+RET_LABEL45:(void)0;
+}
+}
+var = var_res;
+goto RET_LABEL;
+} else {
+}
+} else {
+}
+if (var_mclassdef == NULL) {
+var46 = 0; /* is null */
+} else {
+var46 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_mclassdef,((val*)NULL)) on <var_mclassdef:nullable MClassDef> */
+var_other = ((val*)NULL);
+{
+var49 = ((short int(*)(val* self, val* p0))(var_mclassdef->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mclassdef, var_other); /* == on <var_mclassdef:nullable MClassDef(MClassDef)>*/
+}
+var50 = !var49;
+var47 = var50;
+goto RET_LABEL48;
+RET_LABEL48:(void)0;
+}
+var46 = var47;
+}
+if (var46){
+{
+{ /* Inline model#MClassDef#mclass (var_mclassdef) on <var_mclassdef:nullable MClassDef(MClassDef)> */
+var53 = var_mclassdef->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var_mclassdef:nullable MClassDef(MClassDef)> */
+if (unlikely(var53 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
+fatal_exit(1);
+}
+var51 = var53;
+RET_LABEL52:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#mparameters (var51) on <var51:MClass> */
+var56 = var51->attrs[COLOR_nit__model__MClass___mparameters].val; /* _mparameters on <var51:MClass> */
+if (unlikely(var56 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 382);
+fatal_exit(1);
+}
+var54 = var56;
+RET_LABEL55:(void)0;
+}
+}
+var_57 = var54;
+{
+var58 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_57);
+}
+var_59 = var58;
+for(;;) {
+{
+var60 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_59);
+}
+if (var60){
+{
+var61 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_59);
+}
+var_p = var61;
+{
+{ /* Inline model#MParameterType#name (var_p) on <var_p:MParameterType> */
+var64 = var_p->attrs[COLOR_nit__model__MParameterType___name].val; /* _name on <var_p:MParameterType> */
+if (unlikely(var64 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1481);
+fatal_exit(1);
+}
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#!= (var62,var_name) on <var62:String> */
+var_other = var_name;
+{
+var67 = ((short int(*)(val* self, val* p0))(var62->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var62, var_other); /* == on <var62:String>*/
+}
+var68 = !var67;
+var65 = var68;
+goto RET_LABEL66;
+RET_LABEL66:(void)0;
+}
+}
+if (var65){
+goto BREAK_label;
+} else {
+}
+{
+{ /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
+var71 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
+if (unlikely(var71 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
+fatal_exit(1);
+}
+var69 = var71;
+RET_LABEL70:(void)0;
+}
+}
+{
+var72 = nit___nit__ANodes___standard__abstract_collection__Collection__is_empty(var69);
+}
+var73 = !var72;
+if (var73){
+if (unlikely(varonce74==NULL)) {
+var75 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce76!=NULL)) {
+var77 = varonce76;
+} else {
+var78 = "Type Error: formal type `";
+var79 = standard___standard__NativeString___to_s_with_length(var78, 25l);
+var77 = var79;
+varonce76 = var77;
+}
+((struct instance_standard__NativeArray*)var75)->values[0]=var77;
+if (likely(varonce80!=NULL)) {
+var81 = varonce80;
+} else {
+var82 = "` cannot have formal parameters.";
+var83 = standard___standard__NativeString___to_s_with_length(var82, 32l);
+var81 = var83;
+varonce80 = var81;
+}
+((struct instance_standard__NativeArray*)var75)->values[2]=var81;
+} else {
+var75 = varonce74;
+varonce74 = NULL;
+}
+((struct instance_standard__NativeArray*)var75)->values[1]=var_name;
+{
+var84 = ((val*(*)(val* self))(var75->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var75); /* native_to_s on <var75:NativeArray[String]>*/
+}
+varonce74 = var75;
+{
+nit___nit__ModelBuilder___error(self, var_ntype, var84); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+} else {
+}
+var_res = var_p;
+{
+{ /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
+var87 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
+var85 = var87;
+RET_LABEL86:(void)0;
+}
+}
+if (var85 == NULL) {
+var88 = 0; /* is null */
+} else {
+var88 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var85,((val*)NULL)) on <var85:nullable TKwnullable> */
+var_other = ((val*)NULL);
+{
+var91 = ((short int(*)(val* self, val* p0))(var85->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var85, var_other); /* == on <var85:nullable TKwnullable(TKwnullable)>*/
+}
+var92 = !var91;
+var89 = var92;
+goto RET_LABEL90;
+RET_LABEL90:(void)0;
+}
+var88 = var89;
+}
+if (var88){
+{
+var93 = nit___nit__MType___as_nullable(var_res);
+}
+var_res = var93;
+} else {
+}
+{
+{ /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
+var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
+RET_LABEL94:(void)0;
+}
+}
+var = var_res;
+goto RET_LABEL;
+BREAK_label: (void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_59); /* Direct call array#ArrayIterator#next on <var_59:ArrayIterator[MParameterType]>*/
+}
+} else {
+goto BREAK_label95;
+}
+}
+BREAK_label95: (void)0;
+{
+standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_59); /* Direct call array#ArrayIterator#finish on <var_59:ArrayIterator[MParameterType]>*/
+}
+} else {
+}
+{
+var96 = nit___nit__ModelBuilder___try_get_mclass_by_name(self, var_ntype, var_mmodule, var_name);
+}
+var_mclass = var96;
+if (var_mclass == NULL) {
+var97 = 0; /* is null */
+} else {
+var97 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_mclass,((val*)NULL)) on <var_mclass:nullable MClass> */
+var_other = ((val*)NULL);
+{
+var100 = ((short int(*)(val* self, val* p0))(var_mclass->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_mclass, var_other); /* == on <var_mclass:nullable MClass(MClass)>*/
+}
+var101 = !var100;
+var98 = var101;
+goto RET_LABEL99;
+RET_LABEL99:(void)0;
+}
+var97 = var98;
+}
+if (var97){
+{
+{ /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
+var104 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
+if (unlikely(var104 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
+fatal_exit(1);
+}
+var102 = var104;
+RET_LABEL103:(void)0;
+}
+}
+{
+var105 = nit___nit__ANodes___standard__abstract_collection__Collection__length(var102);
+}
+var_arity = var105;
+{
+{ /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
+var108 = var_mclass->attrs[COLOR_nit__model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
+var106 = var108;
+RET_LABEL107:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#!= (var_arity,var106) on <var_arity:Int> */
+var111 = var_arity == var106;
+var112 = !var111;
+var109 = var112;
+goto RET_LABEL110;
+RET_LABEL110:(void)0;
+}
+}
+if (var109){
+{
+{ /* Inline kernel#Int#== (var_arity,0l) on <var_arity:Int> */
+var115 = var_arity == 0l;
+var113 = var115;
+goto RET_LABEL114;
+RET_LABEL114:(void)0;
+}
+}
+if (var113){
+if (unlikely(varonce116==NULL)) {
+var117 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce118!=NULL)) {
+var119 = varonce118;
+} else {
+var120 = "Type Error: `";
+var121 = standard___standard__NativeString___to_s_with_length(var120, 13l);
+var119 = var121;
+varonce118 = var119;
+}
+((struct instance_standard__NativeArray*)var117)->values[0]=var119;
+if (likely(varonce122!=NULL)) {
+var123 = varonce122;
+} else {
+var124 = "` is a generic class.";
+var125 = standard___standard__NativeString___to_s_with_length(var124, 21l);
+var123 = var125;
+varonce122 = var123;
+}
+((struct instance_standard__NativeArray*)var117)->values[2]=var123;
+} else {
+var117 = varonce116;
+varonce116 = NULL;
+}
+{
+var126 = nit___nit__MClass___signature_to_s(var_mclass);
+}
+((struct instance_standard__NativeArray*)var117)->values[1]=var126;
+{
+var127 = ((val*(*)(val* self))(var117->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var117); /* native_to_s on <var117:NativeArray[String]>*/
+}
+varonce116 = var117;
+{
+nit___nit__ModelBuilder___error(self, var_ntype, var127); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+} else {
+{
+{ /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
+var130 = var_mclass->attrs[COLOR_nit__model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
+var128 = var130;
+RET_LABEL129:(void)0;
+}
+}
+{
+{ /* Inline kernel#Int#== (var128,0l) on <var128:Int> */
+var133 = var128 == 0l;
+var131 = var133;
+goto RET_LABEL132;
+RET_LABEL132:(void)0;
+}
+}
+if (var131){
+if (unlikely(varonce134==NULL)) {
+var135 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
+if (likely(varonce136!=NULL)) {
+var137 = varonce136;
+} else {
+var138 = "Type Error: `";
+var139 = standard___standard__NativeString___to_s_with_length(var138, 13l);
+var137 = var139;
+varonce136 = var137;
+}
+((struct instance_standard__NativeArray*)var135)->values[0]=var137;
+if (likely(varonce140!=NULL)) {
+var141 = varonce140;
+} else {
+var142 = "` is not a generic class.";
+var143 = standard___standard__NativeString___to_s_with_length(var142, 25l);
+var141 = var143;
+varonce140 = var141;
+}
+((struct instance_standard__NativeArray*)var135)->values[2]=var141;
+} else {
+var135 = varonce134;
+varonce134 = NULL;
+}
+((struct instance_standard__NativeArray*)var135)->values[1]=var_name;
+{
+var144 = ((val*(*)(val* self))(var135->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var135); /* native_to_s on <var135:NativeArray[String]>*/
+}
+varonce134 = var135;
+{
+nit___nit__ModelBuilder___error(self, var_ntype, var144); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+} else {
+if (unlikely(varonce145==NULL)) {
+var146 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
+if (likely(varonce147!=NULL)) {
+var148 = varonce147;
+} else {
+var149 = "Type Error: expected ";
+var150 = standard___standard__NativeString___to_s_with_length(var149, 21l);
+var148 = var150;
+varonce147 = var148;
+}
+((struct instance_standard__NativeArray*)var146)->values[0]=var148;
+if (likely(varonce151!=NULL)) {
+var152 = varonce151;
+} else {
+var153 = " formal argument(s) for `";
+var154 = standard___standard__NativeString___to_s_with_length(var153, 25l);
+var152 = var154;
+varonce151 = var152;
+}
+((struct instance_standard__NativeArray*)var146)->values[2]=var152;
+if (likely(varonce155!=NULL)) {
+var156 = varonce155;
+} else {
+var157 = "`; got ";
+var158 = standard___standard__NativeString___to_s_with_length(var157, 7l);
+var156 = var158;
+varonce155 = var156;
+}
+((struct instance_standard__NativeArray*)var146)->values[4]=var156;
+if (likely(varonce159!=NULL)) {
+var160 = varonce159;
+} else {
+var161 = ".";
+var162 = standard___standard__NativeString___to_s_with_length(var161, 1l);
+var160 = var162;
+varonce159 = var160;
+}
+((struct instance_standard__NativeArray*)var146)->values[6]=var160;
+} else {
+var146 = varonce145;
+varonce145 = NULL;
+}
+{
+{ /* Inline model#MClass#arity (var_mclass) on <var_mclass:nullable MClass(MClass)> */
+var165 = var_mclass->attrs[COLOR_nit__model__MClass___arity].l; /* _arity on <var_mclass:nullable MClass(MClass)> */
+var163 = var165;
+RET_LABEL164:(void)0;
+}
+}
+var166 = standard__string___Int___Object__to_s(var163);
+((struct instance_standard__NativeArray*)var146)->values[1]=var166;
+{
+var167 = nit___nit__MClass___signature_to_s(var_mclass);
+}
+((struct instance_standard__NativeArray*)var146)->values[3]=var167;
+var168 = standard__string___Int___Object__to_s(var_arity);
+((struct instance_standard__NativeArray*)var146)->values[5]=var168;
+{
+var169 = ((val*(*)(val* self))(var146->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var146); /* native_to_s on <var146:NativeArray[String]>*/
+}
+varonce145 = var146;
+{
+nit___nit__ModelBuilder___error(self, var_ntype, var169); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+}
+}
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline kernel#Int#== (var_arity,0l) on <var_arity:Int> */
+var172 = var_arity == 0l;
+var170 = var172;
+goto RET_LABEL171;
+RET_LABEL171:(void)0;
+}
+}
+if (var170){
+{
+{ /* Inline model#MClass#mclass_type (var_mclass) on <var_mclass:nullable MClass(MClass)> */
+var175 = var_mclass->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_mclass:nullable MClass(MClass)> */
+if (unlikely(var175 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
+fatal_exit(1);
+}
+var173 = var175;
+RET_LABEL174:(void)0;
+}
+}
+var_res = var173;
+{
+{ /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
+var178 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
+var176 = var178;
+RET_LABEL177:(void)0;
+}
+}
+if (var176 == NULL) {
+var179 = 0; /* is null */
+} else {
+var179 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var176,((val*)NULL)) on <var176:nullable TKwnullable> */
+var_other = ((val*)NULL);
+{
+var182 = ((short int(*)(val* self, val* p0))(var176->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var176, var_other); /* == on <var176:nullable TKwnullable(TKwnullable)>*/
+}
+var183 = !var182;
+var180 = var183;
+goto RET_LABEL181;
+RET_LABEL181:(void)0;
+}
+var179 = var180;
+}
+if (var179){
+{
+var184 = nit___nit__MType___as_nullable(var_res);
+}
+var_res = var184;
+} else {
+}
+{
+{ /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
+var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
+RET_LABEL185:(void)0;
+}
+}
+var = var_res;
+goto RET_LABEL;
+} else {
+var186 = NEW_standard__Array(&type_standard__Array__nit__MType);
+{
+standard___standard__Array___standard__kernel__Object__init(var186); /* Direct call array#Array#init on <var186:Array[MType]>*/
+}
+var_mtypes = var186;
+{
+{ /* Inline parser_nodes#AType#n_types (var_ntype) on <var_ntype:AType> */
+var189 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_types].val; /* _n_types on <var_ntype:AType> */
+if (unlikely(var189 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _n_types");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser_nodes, 1729);
+fatal_exit(1);
+}
+var187 = var189;
+RET_LABEL188:(void)0;
+}
+}
+var_190 = var187;
+{
+var191 = nit___nit__ANodes___standard__abstract_collection__Collection__iterator(var_190);
+}
+var_192 = var191;
+for(;;) {
+{
+var193 = ((short int(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_192); /* is_ok on <var_192:Iterator[AType]>*/
+}
+if (var193){
+{
+var194 = ((val*(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_192); /* item on <var_192:Iterator[AType]>*/
+}
+var_nt = var194;
+{
+var195 = nit___nit__ModelBuilder___resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_nt, var_with_virtual);
+}
+var_mt = var195;
+if (var_mt == NULL) {
+var196 = 1; /* is null */
+} else {
+var196 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_mt,((val*)NULL)) on <var_mt:nullable MType> */
+var_other199 = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_mt,var_other199) on <var_mt:nullable MType(MType)> */
+var202 = var_mt == var_other199;
+var200 = var202;
+goto RET_LABEL201;
+RET_LABEL201:(void)0;
+}
+}
+var197 = var200;
+goto RET_LABEL198;
+RET_LABEL198:(void)0;
+}
+var196 = var197;
+}
+if (var196){
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {
+}
+{
+standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_mtypes, var_mt); /* Direct call array#Array#add on <var_mtypes:Array[MType]>*/
+}
+{
+((void(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_192); /* next on <var_192:Iterator[AType]>*/
+}
+} else {
+goto BREAK_label203;
+}
+}
+BREAK_label203: (void)0;
+{
+((void(*)(val* self))((((long)var_192&3)?class_info[((long)var_192&3)]:var_192->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_192); /* finish on <var_192:Iterator[AType]>*/
+}
+{
+var204 = nit___nit__MClass___get_mtype(var_mclass, var_mtypes);
+}
+var_res = var204;
+{
+{ /* Inline parser_nodes#AType#n_kwnullable (var_ntype) on <var_ntype:AType> */
+var207 = var_ntype->attrs[COLOR_nit__parser_nodes__AType___n_kwnullable].val; /* _n_kwnullable on <var_ntype:AType> */
+var205 = var207;
+RET_LABEL206:(void)0;
+}
+}
+if (var205 == NULL) {
+var208 = 0; /* is null */
+} else {
+var208 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var205,((val*)NULL)) on <var205:nullable TKwnullable> */
+var_other = ((val*)NULL);
+{
+var211 = ((short int(*)(val* self, val* p0))(var205->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var205, var_other); /* == on <var205:nullable TKwnullable(TKwnullable)>*/
+}
+var212 = !var211;
+var209 = var212;
+goto RET_LABEL210;
+RET_LABEL210:(void)0;
+}
+var208 = var209;
+}
+if (var208){
+{
+var213 = nit___nit__MType___as_nullable(var_res);
+}
+var_res = var213;
+} else {
+}
+{
+{ /* Inline modelbuilder_base#AType#mtype= (var_ntype,var_res) on <var_ntype:AType> */
+var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val = var_res; /* _mtype on <var_ntype:AType> */
+RET_LABEL214:(void)0;
+}
+}
+var = var_res;
+goto RET_LABEL;
+}
+} else {
+}
+if (unlikely(varonce215==NULL)) {
+var216 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
+if (likely(varonce217!=NULL)) {
+var218 = varonce217;
+} else {
+var219 = "Error: class `";
+var220 = standard___standard__NativeString___to_s_with_length(var219, 14l);
+var218 = var220;
+varonce217 = var218;
+}
+((struct instance_standard__NativeArray*)var216)->values[0]=var218;
+if (likely(varonce221!=NULL)) {
+var222 = varonce221;
+} else {
+var223 = "` not found in module `";
+var224 = standard___standard__NativeString___to_s_with_length(var223, 23l);
+var222 = var224;
+varonce221 = var222;
+}
+((struct instance_standard__NativeArray*)var216)->values[2]=var222;
+if (likely(varonce225!=NULL)) {
+var226 = varonce225;
+} else {
+var227 = "`.";
+var228 = standard___standard__NativeString___to_s_with_length(var227, 2l);
+var226 = var228;
+varonce225 = var226;
+}
+((struct instance_standard__NativeArray*)var216)->values[4]=var226;
+} else {
+var216 = varonce215;
+varonce215 = NULL;
+}
+((struct instance_standard__NativeArray*)var216)->values[1]=var_name;
+{
+var229 = ((val*(*)(val* self))(var_mmodule->class->vft[COLOR_standard__string__Object__to_s]))(var_mmodule); /* to_s on <var_mmodule:MModule>*/
+}
+((struct instance_standard__NativeArray*)var216)->values[3]=var229;
+{
+var230 = ((val*(*)(val* self))(var216->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var216); /* native_to_s on <var216:NativeArray[String]>*/
+}
+varonce215 = var216;
+{
+nit___nit__ModelBuilder___error(self, var_ntype, var230); /* Direct call modelbuilder_base#ModelBuilder#error on <self:ModelBuilder>*/
+}
+var = ((val*)NULL);
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method modelbuilder_base#ModelBuilder#resolve_mtype for (self: ModelBuilder, MModule, nullable MClassDef, AType): nullable MType */
+val* nit___nit__ModelBuilder___resolve_mtype(val* self, val* p0, val* p1, val* p2) {
+val* var /* : nullable MType */;
+val* var_mmodule /* var mmodule: MModule */;
+val* var_mclassdef /* var mclassdef: nullable MClassDef */;
+val* var_ntype /* var ntype: AType */;
+val* var1 /* : nullable MType */;
+val* var3 /* : nullable MType */;
+val* var_mtype /* var mtype: nullable MType */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var7 /* : Bool */;
+short int var9 /* : Bool */;
+val* var10 /* : nullable MType */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+short int var14 /* : Bool */;
+short int var16 /* : Bool */;
+short int var17 /* : Bool */;
+short int var19 /* : Bool */;
+short int var20 /* : Bool */;
+int cltype;
+int idtype;
+val* var21 /* : MClass */;
+val* var23 /* : MClass */;
+val* var_mclass /* var mclass: MClass */;
+long var_i /* var i: Int */;
+long var24 /* : Int */;
+long var26 /* : Int */;
+long var_ /* var : Int */;
+short int var27 /* : Bool */;
+short int var29 /* : Bool */;
+int cltype30;
+int idtype31;
+const char* var_class_name;
+short int var32 /* : Bool */;
+val* var33 /* : nullable MClassDef */;
+val* var_intro /* var intro: nullable MClassDef */;
+short int var34 /* : Bool */;
+short int var35 /* : Bool */;
+short int var37 /* : Bool */;
+short int var39 /* : Bool */;
+val* var40 /* : MClassType */;
+val* var42 /* : MClassType */;
+val* var43 /* : Array[MType] */;
+val* var44 /* : nullable Object */;
+val* var_bound /* var bound: MType */;
+val* var45 /* : ANodes[AType] */;
+val* var47 /* : ANodes[AType] */;
+val* var48 /* : ANode */;
+val* var_nt /* var nt: AType */;
+val* var49 /* : nullable MType */;
+val* var_mt /* var mt: nullable MType */;
+short int var50 /* : Bool */;
+short int var51 /* : Bool */;
+short int var53 /* : Bool */;
+short int var55 /* : Bool */;
+short int var56 /* : Bool */;
+short int var57 /* : Bool */;
+val* var_other59 /* var other: nullable Object */;
+short int var60 /* : Bool */;
+short int var61 /* : Bool */;
+val* var62 /* : MClassType */;
+val* var64 /* : MClassType */;
+val* var_anchor /* var anchor: nullable Object */;
+short int var65 /* : Bool */;
+short int var66 /* : Bool */;
+val* var67 /* : NativeArray[String] */;
+static val* varonce;
+static val* varonce68;
+val* var69 /* : String */;
+char* var70 /* : NativeString */;
+val* var71 /* : FlatString */;
+static val* varonce72;
+val* var73 /* : String */;
+char* var74 /* : NativeString */;
+val* var75 /* : FlatString */;
+static val* varonce76;
+val* var77 /* : String */;
+char* var78 /* : NativeString */;
+val* var79 /* : FlatString */;
+val* var80 /* : String */;
+val* var81 /* : String */;
+val* var82 /* : String */;
+long var83 /* : Int */;
+var_mmodule = p0;
+var_mclassdef = p1;
+var_ntype = p2;
+{
+{ /* Inline modelbuilder_base#AType#mtype (var_ntype) on <var_ntype:AType> */
+var3 = var_ntype->attrs[COLOR_nit__modelbuilder_base__AType___mtype].val; /* _mtype on <var_ntype:AType> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+var_mtype = var1;
+if (var_mtype == NULL) {
+var4 = 1; /* is null */
+} else {
+var4 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
+var9 = var_mtype == var_other;
+var7 = var9;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+}
+var5 = var7;
+goto RET_LABEL6;
+RET_LABEL6:(void)0;
+}
+var4 = var5;
+}
+if (var4){
+{
+var10 = nit___nit__ModelBuilder___resolve_mtype_unchecked(self, var_mmodule, var_mclassdef, var_ntype, 1);
+}
+var_mtype = var10;
+} else {
+}
+if (var_mtype == NULL) {
+var11 = 1; /* is null */
+} else {
+var11 = 0; /* arg is null but recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#== (var_mtype,((val*)NULL)) on <var_mtype:nullable MType> */
+var_other = ((val*)NULL);
+{
+{ /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
+var16 = var_mtype == var_other;
+var14 = var16;
+goto RET_LABEL15;
+RET_LABEL15:(void)0;
+}
+}
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+var11 = var12;
+}
+if (var11){
+var = ((val*)NULL);
+goto RET_LABEL;
+} else {