+/* method model#MParameterType#resolve_for for (self: MParameterType, MType, nullable MClassType, MModule, Bool): MType */
+val* model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+short int var_ /* var : Bool */;
+val* var4 /* : MClass */;
+val* var6 /* : MClass */;
+val* var7 /* : MClass */;
+val* var9 /* : MClass */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var13 /* : Bool */;
+short int var15 /* : Bool */;
+val* var16 /* : Array[MType] */;
+val* var18 /* : Array[MType] */;
+long var19 /* : Int */;
+long var21 /* : Int */;
+val* var22 /* : nullable Object */;
+val* var_res /* var res: MType */;
+short int var23 /* : Bool */;
+val* var24 /* : null */;
+short int var25 /* : Bool */;
+short int var26 /* : Bool */;
+val* var_other28 /* var other: nullable Object */;
+short int var29 /* : Bool */;
+short int var30 /* : Bool */;
+short int var31 /* : Bool */;
+short int var_32 /* var : Bool */;
+short int var33 /* : Bool */;
+val* var34 /* : MType */;
+val* var_r2 /* var r2: MType */;
+short int var35 /* : Bool */;
+short int var36 /* : Bool */;
+int cltype37;
+int idtype38;
+short int var_39 /* var : Bool */;
+val* var40 /* : MClass */;
+val* var42 /* : MClass */;
+val* var43 /* : MClassKind */;
+val* var45 /* : MClassKind */;
+val* var46 /* : MClassKind */;
+short int var47 /* : Bool */;
+short int var48 /* : Bool */;
+short int var50 /* : Bool */;
+short int var52 /* : Bool */;
+short int var53 /* : Bool */;
+val* var54 /* : null */;
+short int var55 /* : Bool */;
+short int var56 /* : Bool */;
+short int var58 /* : Bool */;
+short int var59 /* : Bool */;
+short int var60 /* : Bool */;
+val* var61 /* : MClass */;
+val* var63 /* : MClass */;
+val* var64 /* : MClassType */;
+val* var66 /* : MClassType */;
+short int var67 /* : Bool */;
+val* var68 /* : MType */;
+val* var_resolved_receiver /* var resolved_receiver: nullable Object */;
+short int var69 /* : Bool */;
+int cltype70;
+int idtype71;
+val* var72 /* : MType */;
+val* var74 /* : MType */;
+short int var75 /* : Bool */;
+int cltype76;
+int idtype77;
+val* var78 /* : MClass */;
+val* var80 /* : MClass */;
+val* var81 /* : MClass */;
+val* var83 /* : MClass */;
+short int var84 /* : Bool */;
+short int var85 /* : Bool */;
+short int var87 /* : Bool */;
+short int var89 /* : Bool */;
+val* var90 /* : Array[MType] */;
+val* var92 /* : Array[MType] */;
+long var93 /* : Int */;
+long var95 /* : Int */;
+val* var96 /* : nullable Object */;
+short int var97 /* : Bool */;
+int cltype98;
+int idtype99;
+val* var100 /* : MType */;
+val* var102 /* : MType */;
+short int var103 /* : Bool */;
+int cltype104;
+int idtype105;
+val* var106 /* : MClass */;
+val* var108 /* : MClass */;
+val* var109 /* : MClass */;
+val* var111 /* : MClass */;
+short int var112 /* : Bool */;
+short int var113 /* : Bool */;
+short int var115 /* : Bool */;
+short int var117 /* : Bool */;
+val* var118 /* : Array[MType] */;
+val* var120 /* : Array[MType] */;
+long var121 /* : Int */;
+long var123 /* : Int */;
+val* var124 /* : nullable Object */;
+val* var_res125 /* var res: MType */;
+short int var126 /* : Bool */;
+val* var127 /* : null */;
+short int var128 /* : Bool */;
+short int var129 /* : Bool */;
+short int var131 /* : Bool */;
+short int var132 /* : Bool */;
+short int var133 /* : Bool */;
+val* var134 /* : null */;
+short int var135 /* : Bool */;
+val* var136 /* : MType */;
+val* var137 /* : MType */;
+val* var_verbatim_bound /* var verbatim_bound: MType */;
+val* var138 /* : MType */;
+val* var_res139 /* var res: MType */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+var_cleanup_virtual = p3;
+{
+var1 = model__MParameterType__can_resolve_for(self, var_mtype, var_anchor, var_mmodule);
+}
+if (unlikely(!var1)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1313);
+show_backtrace(1);
+}
+/* <var_mtype:MType> isa MGenericType */
+cltype = type_model__MGenericType.color;
+idtype = type_model__MGenericType.id;
+if(cltype >= var_mtype->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_mtype->type->type_table[cltype] == idtype;
+}
+var_ = var3;
+if (var3){
+{
+{ /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MGenericType)> */
+var6 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MGenericType)> */
+if (unlikely(var6 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var9 = self->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
+show_backtrace(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var4,var7) on <var4:MClass> */
+var_other = var7;
+{
+{ /* Inline kernel#Object#is_same_instance (var4,var_other) on <var4:MClass> */
+var15 = var4 == var_other;
+var13 = var15;
+goto RET_LABEL14;
+RET_LABEL14:(void)0;
+}
+}
+var11 = var13;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
+}
+var10 = var11;
+}
+var2 = var10;
+} else {
+var2 = var_;
+}
+if (var2){
+{
+{ /* Inline model#MClassType#arguments (var_mtype) on <var_mtype:MType(MGenericType)> */
+var18 = var_mtype->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_mtype:MType(MGenericType)> */
+if (unlikely(var18 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
+show_backtrace(1);
+}
+var16 = var18;
+RET_LABEL17:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
+var21 = self->attrs[COLOR_model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+{
+var22 = array__Array___91d_93d(var16, var19);
+}
+var_res = var22;
+var24 = NULL;
+if (var_anchor == NULL) {
+var25 = 0; /* is null */
+} else {
+var25 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,var24) on <var_anchor:nullable MClassType> */
+var_other28 = var24;
+{
+var30 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other28) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
+var29 = var30;
+}
+var31 = !var29;
+var26 = var31;
+goto RET_LABEL27;
+RET_LABEL27:(void)0;
+}
+var25 = var26;
+}
+var_32 = var25;
+if (var25){
+{
+var33 = ((short int (*)(val*))(var_res->class->vft[COLOR_model__MType__need_anchor]))(var_res) /* need_anchor on <var_res:MType>*/;
+}
+var23 = var33;
+} else {
+var23 = var_32;
+}
+if (var23){
+{
+var34 = ((val* (*)(val*, val*, val*))(var_res->class->vft[COLOR_model__MType__anchor_to]))(var_res, var_mmodule, var_anchor) /* anchor_to on <var_res:MType>*/;
+}
+var_r2 = var34;
+/* <var_r2:MType> isa MClassType */
+cltype37 = type_model__MClassType.color;
+idtype38 = type_model__MClassType.id;
+if(cltype37 >= var_r2->type->table_size) {
+var36 = 0;
+} else {
+var36 = var_r2->type->type_table[cltype37] == idtype38;
+}
+var_39 = var36;
+if (var36){
+{
+{ /* Inline model#MClassType#mclass (var_r2) on <var_r2:MType(MClassType)> */
+var42 = var_r2->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_r2:MType(MClassType)> */
+if (unlikely(var42 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#kind (var40) on <var40:MClass> */
+var45 = var40->attrs[COLOR_model__MClass___kind].val; /* _kind on <var40:MClass> */
+if (unlikely(var45 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
+show_backtrace(1);
+}
+var43 = var45;
+RET_LABEL44:(void)0;
+}
+}
+{
+var46 = model__Object__enum_kind(self);
+}
+{
+{ /* Inline kernel#Object#== (var43,var46) on <var43:MClassKind> */
+var_other = var46;
+{
+{ /* Inline kernel#Object#is_same_instance (var43,var_other) on <var43:MClassKind> */
+var52 = var43 == var_other;
+var50 = var52;
+goto RET_LABEL51;
+RET_LABEL51:(void)0;
+}
+}
+var48 = var50;
+goto RET_LABEL49;
+RET_LABEL49:(void)0;
+}
+var47 = var48;
+}
+var35 = var47;
+} else {
+var35 = var_39;
+}
+if (var35){
+var = var_r2;
+goto RET_LABEL;
+} else {
+}
+} else {
+}
+var = var_res;
+goto RET_LABEL;
+} else {
+}
+{
+var53 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+}
+if (var53){
+var54 = NULL;
+if (var_anchor == NULL) {
+var55 = 0; /* is null */
+} else {
+var55 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,var54) on <var_anchor:nullable MClassType> */
+var_other28 = var54;
+{
+var59 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other28) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
+var58 = var59;
+}
+var60 = !var58;
+var56 = var60;
+goto RET_LABEL57;
+RET_LABEL57:(void)0;
+}
+var55 = var56;
+}
+if (unlikely(!var55)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1332);
+show_backtrace(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType(MClassType)> */
+var63 = var_anchor->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType(MClassType)> */
+if (unlikely(var63 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var61 = var63;
+RET_LABEL62:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#mclass_type (var61) on <var61:MClass> */
+var66 = var61->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var61:MClass> */
+if (unlikely(var66 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
+show_backtrace(1);
+}
+var64 = var66;
+RET_LABEL65:(void)0;
+}
+}
+var67 = 1;
+{
+var68 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var64, var_anchor, var_mmodule, var67) /* resolve_for on <var_mtype:MType>*/;
+}
+var_resolved_receiver = var68;
+} else {
+var_resolved_receiver = var_mtype;
+}
+/* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
+cltype70 = type_model__MNullableType.color;
+idtype71 = type_model__MNullableType.id;
+if(cltype70 >= var_resolved_receiver->type->table_size) {
+var69 = 0;
+} else {
+var69 = var_resolved_receiver->type->type_table[cltype70] == idtype71;
+}
+if (var69){
+{
+{ /* Inline model#MNullableType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
+var74 = var_resolved_receiver->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
+if (unlikely(var74 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var72 = var74;
+RET_LABEL73:(void)0;
+}
+}
+var_resolved_receiver = var72;
+} else {
+}
+/* <var_resolved_receiver:nullable Object(MType)> isa MParameterType */
+cltype76 = type_model__MParameterType.color;
+idtype77 = type_model__MParameterType.id;
+if(cltype76 >= var_resolved_receiver->type->table_size) {
+var75 = 0;
+} else {
+var75 = var_resolved_receiver->type->type_table[cltype76] == idtype77;
+}
+if (var75){
+{
+{ /* Inline model#MParameterType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
+var80 = var_resolved_receiver->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MParameterType)> */
+if (unlikely(var80 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
+show_backtrace(1);
+}
+var78 = var80;
+RET_LABEL79:(void)0;
+}
+}
+if (var_anchor == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1339);
+show_backtrace(1);
+} else {
+{ /* Inline model#MClassType#mclass (var_anchor) on <var_anchor:nullable MClassType> */
+if (unlikely(var_anchor == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var83 = var_anchor->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_anchor:nullable MClassType> */
+if (unlikely(var83 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var81 = var83;
+RET_LABEL82:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var78,var81) on <var78:MClass> */
+var_other = var81;
+{
+{ /* Inline kernel#Object#is_same_instance (var78,var_other) on <var78:MClass> */
+var89 = var78 == var_other;
+var87 = var89;
+goto RET_LABEL88;
+RET_LABEL88:(void)0;
+}
+}
+var85 = var87;
+goto RET_LABEL86;
+RET_LABEL86:(void)0;
+}
+var84 = var85;
+}
+if (unlikely(!var84)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1339);
+show_backtrace(1);
+}
+if (var_anchor == NULL) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1340);
+show_backtrace(1);
+} else {
+{ /* Inline model#MClassType#arguments (var_anchor) on <var_anchor:nullable MClassType> */
+if (unlikely(var_anchor == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Receiver is null");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
+show_backtrace(1);
+}
+var92 = var_anchor->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_anchor:nullable MClassType> */
+if (unlikely(var92 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
+show_backtrace(1);
+}
+var90 = var92;
+RET_LABEL91:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#rank (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MParameterType)> */
+var95 = var_resolved_receiver->attrs[COLOR_model__MParameterType___rank].l; /* _rank on <var_resolved_receiver:nullable Object(MParameterType)> */
+var93 = var95;
+RET_LABEL94:(void)0;
+}
+}
+{
+var96 = array__Array___91d_93d(var90, var93);
+}
+var_resolved_receiver = var96;
+/* <var_resolved_receiver:nullable Object(MType)> isa MNullableType */
+cltype98 = type_model__MNullableType.color;
+idtype99 = type_model__MNullableType.id;
+if(cltype98 >= var_resolved_receiver->type->table_size) {
+var97 = 0;
+} else {
+var97 = var_resolved_receiver->type->type_table[cltype98] == idtype99;
+}
+if (var97){
+{
+{ /* Inline model#MNullableType#mtype (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MNullableType)> */
+var102 = var_resolved_receiver->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <var_resolved_receiver:nullable Object(MNullableType)> */
+if (unlikely(var102 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var100 = var102;
+RET_LABEL101:(void)0;
+}
+}
+var_resolved_receiver = var100;
+} else {
+}
+} else {
+}
+/* <var_resolved_receiver:nullable Object(MType)> isa MClassType */
+cltype104 = type_model__MClassType.color;
+idtype105 = type_model__MClassType.id;
+if(cltype104 >= var_resolved_receiver->type->table_size) {
+var103 = 0;
+} else {
+var103 = var_resolved_receiver->type->type_table[cltype104] == idtype105;
+}
+if (unlikely(!var103)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1343);
+show_backtrace(1);
+}
+{
+{ /* Inline model#MClassType#mclass (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MClassType)> */
+var108 = var_resolved_receiver->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_resolved_receiver:nullable Object(MClassType)> */
+if (unlikely(var108 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
+show_backtrace(1);
+}
+var106 = var108;
+RET_LABEL107:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var111 = self->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var111 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
+show_backtrace(1);
+}
+var109 = var111;
+RET_LABEL110:(void)0;
+}
+}
+{
+{ /* Inline kernel#Object#== (var106,var109) on <var106:MClass> */
+var_other = var109;
+{
+{ /* Inline kernel#Object#is_same_instance (var106,var_other) on <var106:MClass> */
+var117 = var106 == var_other;
+var115 = var117;
+goto RET_LABEL116;
+RET_LABEL116:(void)0;
+}
+}
+var113 = var115;
+goto RET_LABEL114;
+RET_LABEL114:(void)0;
+}
+var112 = var113;
+}
+if (var112){
+{
+{ /* Inline model#MClassType#arguments (var_resolved_receiver) on <var_resolved_receiver:nullable Object(MClassType)> */
+var120 = var_resolved_receiver->attrs[COLOR_model__MClassType___arguments].val; /* _arguments on <var_resolved_receiver:nullable Object(MClassType)> */
+if (unlikely(var120 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 996);
+show_backtrace(1);
+}
+var118 = var120;
+RET_LABEL119:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#rank (self) on <self:MParameterType> */
+var123 = self->attrs[COLOR_model__MParameterType___rank].l; /* _rank on <self:MParameterType> */
+var121 = var123;
+RET_LABEL122:(void)0;
+}
+}
+{
+var124 = array__Array___91d_93d(var118, var121);
+}
+var_res125 = var124;
+var = var_res125;
+goto RET_LABEL;
+} else {
+}
+{
+var126 = ((short int (*)(val*))(var_resolved_receiver->class->vft[COLOR_model__MType__need_anchor]))(var_resolved_receiver) /* need_anchor on <var_resolved_receiver:nullable Object(MClassType)>*/;
+}
+if (var126){
+var127 = NULL;
+if (var_anchor == NULL) {
+var128 = 0; /* is null */
+} else {
+var128 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,var127) on <var_anchor:nullable MClassType> */
+var_other28 = var127;
+{
+var132 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other28) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
+var131 = var132;
+}
+var133 = !var131;
+var129 = var133;
+goto RET_LABEL130;
+RET_LABEL130:(void)0;
+}
+var128 = var129;
+}
+if (unlikely(!var128)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1354);
+show_backtrace(1);
+}
+var134 = NULL;
+var135 = 0;
+{
+var136 = ((val* (*)(val*, val*, val*, val*, short int))(var_resolved_receiver->class->vft[COLOR_model__MType__resolve_for]))(var_resolved_receiver, var_anchor, var134, var_mmodule, var135) /* resolve_for on <var_resolved_receiver:nullable Object(MClassType)>*/;
+}
+var_resolved_receiver = var136;
+} else {
+}
+{
+var137 = model__MParameterType__lookup_bound(self, var_mmodule, var_resolved_receiver);
+}
+var_verbatim_bound = var137;
+{
+var138 = ((val* (*)(val*, val*, val*, val*, short int))(var_verbatim_bound->class->vft[COLOR_model__MType__resolve_for]))(var_verbatim_bound, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var_verbatim_bound:MType>*/;
+}
+var_res139 = var138;
+var = var_res139;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
+val* VIRTUAL_model__MParameterType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+var1 = model__MParameterType__resolve_for(self, p0, p1, p2, p3);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#can_resolve_for for (self: MParameterType, MType, nullable MClassType, MModule): Bool */
+short int model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
+short int var /* : Bool */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var1 /* : Bool */;
+val* var2 /* : null */;
+short int var3 /* : Bool */;
+short int var4 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+val* var9 /* : MType */;
+val* var10 /* : Set[MClassDef] */;
+val* var11 /* : MClass */;
+val* var13 /* : MClass */;
+val* var14 /* : MClassDef */;
+val* var16 /* : MClassDef */;
+short int var17 /* : Bool */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+{
+var1 = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
+}
+if (var1){
+var2 = NULL;
+if (var_anchor == NULL) {
+var3 = 0; /* is null */
+} else {
+var3 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_anchor,var2) on <var_anchor:nullable MClassType> */
+var_other = var2;
+{
+var7 = ((short int (*)(val*, val*))(var_anchor->class->vft[COLOR_kernel__Object___61d_61d]))(var_anchor, var_other) /* == on <var_anchor:nullable MClassType(MClassType)>*/;
+var6 = var7;
+}
+var8 = !var6;
+var4 = var8;
+goto RET_LABEL5;
+RET_LABEL5:(void)0;
+}
+var3 = var4;
+}
+if (unlikely(!var3)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1370);
+show_backtrace(1);
+}
+{
+var9 = ((val* (*)(val*, val*, val*))(var_mtype->class->vft[COLOR_model__MType__anchor_to]))(var_mtype, var_mmodule, var_anchor) /* anchor_to on <var_mtype:MType>*/;
+}
+var_mtype = var9;
+} else {
+}
+{
+var10 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var_mmodule) /* collect_mclassdefs on <var_mtype:MType>*/;
+}
+{
+{ /* Inline model#MParameterType#mclass (self) on <self:MParameterType> */
+var13 = self->attrs[COLOR_model__MParameterType___mclass].val; /* _mclass on <self:MParameterType> */
+if (unlikely(var13 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1280);
+show_backtrace(1);
+}
+var11 = var13;
+RET_LABEL12:(void)0;
+}
+}
+{
+{ /* Inline model#MClass#intro (var11) on <var11:MClass> */
+var16 = var11->attrs[COLOR_model__MClass___intro].val; /* _intro on <var11:MClass> */
+if (unlikely(var16 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 420);
+show_backtrace(1);
+}
+var14 = var16;
+RET_LABEL15:(void)0;
+}
+}
+{
+var17 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__Collection__has]))(var10, var14) /* has on <var10:Set[MClassDef]>*/;
+}
+var = var17;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#can_resolve_for for (self: Object, MType, nullable MClassType, MModule): Bool */
+short int VIRTUAL_model__MParameterType__can_resolve_for(val* self, val* p0, val* p1, val* p2) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = model__MParameterType__can_resolve_for(self, p0, p1, p2);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MParameterType#init for (self: MParameterType, MClass, Int, String) */
+void model__MParameterType__init(val* self, val* p0, long p1, val* p2) {
+val* var_mclass /* var mclass: MClass */;
+long var_rank /* var rank: Int */;
+val* var_name /* var name: String */;
+{
+((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MParameterType>*/;
+}
+var_mclass = p0;
+var_rank = p1;
+var_name = p2;
+{
+{ /* Inline model#MParameterType#mclass= (self,var_mclass) on <self:MParameterType> */
+self->attrs[COLOR_model__MParameterType___mclass].val = var_mclass; /* _mclass on <self:MParameterType> */
+RET_LABEL1:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#rank= (self,var_rank) on <self:MParameterType> */
+self->attrs[COLOR_model__MParameterType___rank].l = var_rank; /* _rank on <self:MParameterType> */
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline model#MParameterType#name= (self,var_name) on <self:MParameterType> */
+self->attrs[COLOR_model__MParameterType___name].val = var_name; /* _name on <self:MParameterType> */
+RET_LABEL3:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method model#MParameterType#init for (self: Object, MClass, Int, String) */
+void VIRTUAL_model__MParameterType__init(val* self, val* p0, long p1, val* p2) {
+model__MParameterType__init(self, p0, p1, p2); /* Direct call model#MParameterType#init on <self:Object(MParameterType)>*/
+RET_LABEL:;
+}
+/* method model#MNullableType#mtype for (self: MNullableType): MType */
+val* model__MNullableType__mtype(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+var1 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#mtype for (self: Object): MType */
+val* VIRTUAL_model__MNullableType__mtype(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+{ /* Inline model#MNullableType#mtype (self) on <self:Object(MNullableType)> */
+var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:Object(MNullableType)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#mtype= for (self: MNullableType, MType) */
+void model__MNullableType__mtype_61d(val* self, val* p0) {
+self->attrs[COLOR_model__MNullableType___mtype].val = p0; /* _mtype on <self:MNullableType> */
+RET_LABEL:;
+}
+/* method model#MNullableType#mtype= for (self: Object, MType) */
+void VIRTUAL_model__MNullableType__mtype_61d(val* self, val* p0) {
+{ /* Inline model#MNullableType#mtype= (self,p0) on <self:Object(MNullableType)> */
+self->attrs[COLOR_model__MNullableType___mtype].val = p0; /* _mtype on <self:Object(MNullableType)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method model#MNullableType#model for (self: MNullableType): Model */
+val* model__MNullableType__model(val* self) {
+val* var /* : Model */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : Model */;
+{
+{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
+var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((val* (*)(val*))(var1->class->vft[COLOR_model_base__MEntity__model]))(var1) /* model on <var1:MType>*/;
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#model for (self: Object): Model */
+val* VIRTUAL_model__MNullableType__model(val* self) {
+val* var /* : Model */;
+val* var1 /* : Model */;
+var1 = model__MNullableType__model(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#init for (self: MNullableType, MType) */
+void model__MNullableType__init(val* self, val* p0) {
+val* var_mtype /* var mtype: MType */;
+static val* varonce;
+val* var /* : String */;
+char* var2 /* : NativeString */;
+long var3 /* : Int */;
+val* var4 /* : FlatString */;
+val* var5 /* : Array[Object] */;
+long var6 /* : Int */;
+val* var7 /* : NativeArray[Object] */;
+val* var8 /* : String */;
+{
+((void (*)(val*))(self->class->vft[COLOR_kernel__Object__init]))(self) /* init on <self:MNullableType>*/;
+}
+var_mtype = p0;
+{
+{ /* Inline model#MNullableType#mtype= (self,var_mtype) on <self:MNullableType> */
+self->attrs[COLOR_model__MNullableType___mtype].val = var_mtype; /* _mtype on <self:MNullableType> */
+RET_LABEL1:(void)0;
+}
+}
+if (varonce) {
+var = varonce;
+} else {
+var2 = "nullable ";
+var3 = 9;
+var4 = string__NativeString__to_s_with_length(var2, var3);
+var = var4;
+varonce = var;
+}
+var5 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var5 = array_instance Array[Object] */
+var6 = 2;
+var7 = NEW_array__NativeArray(var6, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var7)->values[0] = (val*) var;
+((struct instance_array__NativeArray*)var7)->values[1] = (val*) var_mtype;
+{
+((void (*)(val*, val*, long))(var5->class->vft[COLOR_array__Array__with_native]))(var5, var7, var6) /* with_native on <var5:Array[Object]>*/;
+}
+}
+{
+var8 = ((val* (*)(val*))(var5->class->vft[COLOR_string__Object__to_s]))(var5) /* to_s on <var5:Array[Object]>*/;
+}
+{
+{ /* Inline model#MNullableType#to_s= (self,var8) on <self:MNullableType> */
+self->attrs[COLOR_model__MNullableType___to_s].val = var8; /* _to_s on <self:MNullableType> */
+RET_LABEL9:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method model#MNullableType#init for (self: Object, MType) */
+void VIRTUAL_model__MNullableType__init(val* self, val* p0) {
+model__MNullableType__init(self, p0); /* Direct call model#MNullableType#init on <self:Object(MNullableType)>*/
+RET_LABEL:;
+}
+/* method model#MNullableType#to_s for (self: MNullableType): String */
+val* model__MNullableType__to_s(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = self->attrs[COLOR_model__MNullableType___to_s].val; /* _to_s on <self:MNullableType> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1399);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#to_s for (self: Object): String */
+val* VIRTUAL_model__MNullableType__to_s(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+val* var3 /* : String */;
+{ /* Inline model#MNullableType#to_s (self) on <self:Object(MNullableType)> */
+var3 = self->attrs[COLOR_model__MNullableType___to_s].val; /* _to_s on <self:Object(MNullableType)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _to_s");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1399);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#to_s= for (self: MNullableType, String) */
+void model__MNullableType__to_s_61d(val* self, val* p0) {
+self->attrs[COLOR_model__MNullableType___to_s].val = p0; /* _to_s on <self:MNullableType> */
+RET_LABEL:;
+}
+/* method model#MNullableType#to_s= for (self: Object, String) */
+void VIRTUAL_model__MNullableType__to_s_61d(val* self, val* p0) {
+{ /* Inline model#MNullableType#to_s= (self,p0) on <self:Object(MNullableType)> */
+self->attrs[COLOR_model__MNullableType___to_s].val = p0; /* _to_s on <self:Object(MNullableType)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method model#MNullableType#need_anchor for (self: MNullableType): Bool */
+short int model__MNullableType__need_anchor(val* self) {
+short int var /* : Bool */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+short int var4 /* : Bool */;
+{
+{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
+var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((short int (*)(val*))(var1->class->vft[COLOR_model__MType__need_anchor]))(var1) /* need_anchor on <var1:MType>*/;
+}
+var = var4;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#need_anchor for (self: Object): Bool */
+short int VIRTUAL_model__MNullableType__need_anchor(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = model__MNullableType__need_anchor(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#as_nullable for (self: MNullableType): MType */
+val* model__MNullableType__as_nullable(val* self) {
+val* var /* : MType */;
+var = self;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#as_nullable for (self: Object): MType */
+val* VIRTUAL_model__MNullableType__as_nullable(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+var1 = model__MNullableType__as_nullable(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#as_notnullable for (self: MNullableType): MType */
+val* model__MNullableType__as_notnullable(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+{
+{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
+var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+var = var1;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#as_notnullable for (self: Object): MType */
+val* VIRTUAL_model__MNullableType__as_notnullable(val* self) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+var1 = model__MNullableType__as_notnullable(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#resolve_for for (self: MNullableType, MType, nullable MClassType, MModule, Bool): MType */
+val* model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var_mtype /* var mtype: MType */;
+val* var_anchor /* var anchor: nullable MClassType */;
+val* var_mmodule /* var mmodule: MModule */;
+short int var_cleanup_virtual /* var cleanup_virtual: Bool */;
+val* var1 /* : MType */;
+val* var3 /* : MType */;
+val* var4 /* : MType */;
+val* var_res /* var res: MType */;
+val* var5 /* : MType */;
+var_mtype = p0;
+var_anchor = p1;
+var_mmodule = p2;
+var_cleanup_virtual = p3;
+{
+{ /* Inline model#MNullableType#mtype (self) on <self:MNullableType> */
+var3 = self->attrs[COLOR_model__MNullableType___mtype].val; /* _mtype on <self:MNullableType> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
+PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1388);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+var4 = ((val* (*)(val*, val*, val*, val*, short int))(var1->class->vft[COLOR_model__MType__resolve_for]))(var1, var_mtype, var_anchor, var_mmodule, var_cleanup_virtual) /* resolve_for on <var1:MType>*/;
+}
+var_res = var4;
+{
+var5 = ((val* (*)(val*))(var_res->class->vft[COLOR_model__MType__as_nullable]))(var_res) /* as_nullable on <var_res:MType>*/;
+}
+var = var5;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method model#MNullableType#resolve_for for (self: Object, MType, nullable MClassType, MModule, Bool): MType */
+val* VIRTUAL_model__MNullableType__resolve_for(val* self, val* p0, val* p1, val* p2, short int p3) {
+val* var /* : MType */;
+val* var1 /* : MType */;
+var1 = model__MNullableType__resolve_for(self, p0, p1, p2, p3);
+var = var1;
+RET_LABEL:;
+return var;
+}