c_src: update for kill is
[nit.git] / c_src / parser.sep.10.c
index 08d61c0..f1db234 100644 (file)
 #include "parser.sep.0.h"
-/* method parser#ReduceAction370#action for (self: ReduceAction370, Parser) */
-void parser__ReduceAction370__action(val* self, val* p0) {
+/* method parser#ReduceAction362#action for (self: ReduceAction362, Parser) */
+void parser__ReduceAction362__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
 val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
 val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AExternMethPropdef */;
-val* var30 /* : null */;
-val* var31 /* : null */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AExternMethPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var32 /* : Int */;
-long var33 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
+var_nodearraylist3 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
+var_nodearraylist2 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var10 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var10 = 0;
+var9 = 0;
 } else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16771);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16199);
 exit(1);
 }
 var_tkwredefnode3 = var_nodearraylist2;
 /* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
-cltype12 = type_nullable_parser_nodes__TKwredef.color;
-idtype13 = type_nullable_parser_nodes__TKwredef.id;
+cltype11 = type_nullable_parser_nodes__TKwredef.color;
+idtype12 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode3 == NULL) {
-var11 = 1;
+var10 = 1;
 } else {
-if(cltype12 >= var_tkwredefnode3->type->table_size) {
-var11 = 0;
+if(cltype11 >= var_tkwredefnode3->type->table_size) {
+var10 = 0;
 } else {
-var11 = var_tkwredefnode3->type->type_table[cltype12] == idtype13;
+var10 = var_tkwredefnode3->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16773);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16201);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist3;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
+cltype14 = type_nullable_parser_nodes__AVisibility.color;
+idtype15 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var14 = 1;
+var13 = 1;
 } else {
-if(cltype15 >= var_pvisibilitynode4->type->table_size) {
-var14 = 0;
+if(cltype14 >= var_pvisibilitynode4->type->table_size) {
+var13 = 0;
 } else {
-var14 = var_pvisibilitynode4->type->type_table[cltype15] == idtype16;
+var13 = var_pvisibilitynode4->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16775);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16203);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist4;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype18 = type_nullable_parser_nodes__TKwmeth.color;
-idtype19 = type_nullable_parser_nodes__TKwmeth.id;
+cltype17 = type_nullable_parser_nodes__TKwmeth.color;
+idtype18 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var17 = 1;
+var16 = 1;
 } else {
-if(cltype18 >= var_tkwmethnode5->type->table_size) {
-var17 = 0;
+if(cltype17 >= var_tkwmethnode5->type->table_size) {
+var16 = 0;
 } else {
-var17 = var_tkwmethnode5->type->type_table[cltype18] == idtype19;
+var16 = var_tkwmethnode5->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16777);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16205);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist5;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype21 = type_nullable_parser_nodes__AMethid.color;
-idtype22 = type_nullable_parser_nodes__AMethid.id;
+cltype20 = type_nullable_parser_nodes__AMethid.color;
+idtype21 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var20 = 1;
+var19 = 1;
 } else {
-if(cltype21 >= var_pmethidnode6->type->table_size) {
-var20 = 0;
+if(cltype20 >= var_pmethidnode6->type->table_size) {
+var19 = 0;
 } else {
-var20 = var_pmethidnode6->type->type_table[cltype21] == idtype22;
+var19 = var_pmethidnode6->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16779);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16207);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist6;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype24 = type_nullable_parser_nodes__ASignature.color;
-idtype25 = type_nullable_parser_nodes__ASignature.id;
+cltype23 = type_nullable_parser_nodes__ASignature.color;
+idtype24 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var23 = 1;
-} else {
-if(cltype24 >= var_psignaturenode7->type->table_size) {
-var23 = 0;
-} else {
-var23 = var_psignaturenode7->type->type_table[cltype24] == idtype25;
-}
-}
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16781);
-exit(1);
-}
-var_pexterncodeblocknode10 = var_nodearraylist9;
-/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype27 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype28 = type_nullable_parser_nodes__AExternCodeBlock.id;
-if(var_pexterncodeblocknode10 == NULL) {
-var26 = 1;
+var22 = 1;
 } else {
-if(cltype27 >= var_pexterncodeblocknode10->type->table_size) {
-var26 = 0;
+if(cltype23 >= var_psignaturenode7->type->table_size) {
+var22 = 0;
 } else {
-var26 = var_pexterncodeblocknode10->type->type_table[cltype27] == idtype28;
+var22 = var_psignaturenode7->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16783);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16209);
 exit(1);
 }
-var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var30 = NULL;
-var31 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var30, var31, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
-var_ppropdefnode1 = var29;
+var25 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var25, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var26, var27, var28) /* init_aexternmethpropdef on <var25:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction370> */
-var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction362> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction370#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction370__action(val* self, val* p0) {
-parser__ReduceAction370__action(self, p0);
+/* method parser#ReduceAction362#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction362__action(val* self, val* p0) {
+parser__ReduceAction362__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction371#action for (self: ReduceAction371, Parser) */
-void parser__ReduceAction371__action(val* self, val* p0) {
+/* method parser#ReduceAction363#action for (self: ReduceAction363, Parser) */
+void parser__ReduceAction363__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
 val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
 val* var_tstringnode8 /* var tstringnode8: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AExternMethPropdef */;
-val* var30 /* : null */;
-val* var31 /* : null */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AExternMethPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var32 /* : Int */;
-long var33 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
+var_nodearraylist3 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
+var_nodearraylist2 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var10 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var10 = 0;
+var9 = 0;
 } else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16814);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16239);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist2;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype12 = type_nullable_parser_nodes__AVisibility.color;
-idtype13 = type_nullable_parser_nodes__AVisibility.id;
+cltype11 = type_nullable_parser_nodes__AVisibility.color;
+idtype12 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var11 = 1;
+var10 = 1;
 } else {
-if(cltype12 >= var_pvisibilitynode4->type->table_size) {
-var11 = 0;
+if(cltype11 >= var_pvisibilitynode4->type->table_size) {
+var10 = 0;
 } else {
-var11 = var_pvisibilitynode4->type->type_table[cltype12] == idtype13;
+var10 = var_pvisibilitynode4->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16816);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16241);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist3;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype15 = type_nullable_parser_nodes__TKwmeth.color;
-idtype16 = type_nullable_parser_nodes__TKwmeth.id;
+cltype14 = type_nullable_parser_nodes__TKwmeth.color;
+idtype15 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var14 = 1;
+var13 = 1;
 } else {
-if(cltype15 >= var_tkwmethnode5->type->table_size) {
-var14 = 0;
+if(cltype14 >= var_tkwmethnode5->type->table_size) {
+var13 = 0;
 } else {
-var14 = var_tkwmethnode5->type->type_table[cltype15] == idtype16;
+var13 = var_tkwmethnode5->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16818);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16243);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist4;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype18 = type_nullable_parser_nodes__AMethid.color;
-idtype19 = type_nullable_parser_nodes__AMethid.id;
+cltype17 = type_nullable_parser_nodes__AMethid.color;
+idtype18 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var17 = 1;
+var16 = 1;
 } else {
-if(cltype18 >= var_pmethidnode6->type->table_size) {
-var17 = 0;
+if(cltype17 >= var_pmethidnode6->type->table_size) {
+var16 = 0;
 } else {
-var17 = var_pmethidnode6->type->type_table[cltype18] == idtype19;
+var16 = var_pmethidnode6->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16820);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16245);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist5;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype21 = type_nullable_parser_nodes__ASignature.color;
-idtype22 = type_nullable_parser_nodes__ASignature.id;
+cltype20 = type_nullable_parser_nodes__ASignature.color;
+idtype21 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var20 = 1;
+var19 = 1;
 } else {
-if(cltype21 >= var_psignaturenode7->type->table_size) {
-var20 = 0;
+if(cltype20 >= var_psignaturenode7->type->table_size) {
+var19 = 0;
 } else {
-var20 = var_psignaturenode7->type->type_table[cltype21] == idtype22;
+var19 = var_psignaturenode7->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16822);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16247);
 exit(1);
 }
 var_tstringnode8 = var_nodearraylist8;
 /* <var_tstringnode8:nullable Object> isa nullable TString */
-cltype24 = type_nullable_parser_nodes__TString.color;
-idtype25 = type_nullable_parser_nodes__TString.id;
+cltype23 = type_nullable_parser_nodes__TString.color;
+idtype24 = type_nullable_parser_nodes__TString.id;
 if(var_tstringnode8 == NULL) {
-var23 = 1;
-} else {
-if(cltype24 >= var_tstringnode8->type->table_size) {
-var23 = 0;
-} else {
-var23 = var_tstringnode8->type->type_table[cltype24] == idtype25;
-}
-}
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16824);
-exit(1);
-}
-var_pexterncodeblocknode10 = var_nodearraylist9;
-/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype27 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype28 = type_nullable_parser_nodes__AExternCodeBlock.id;
-if(var_pexterncodeblocknode10 == NULL) {
-var26 = 1;
+var22 = 1;
 } else {
-if(cltype27 >= var_pexterncodeblocknode10->type->table_size) {
-var26 = 0;
+if(cltype23 >= var_tstringnode8->type->table_size) {
+var22 = 0;
 } else {
-var26 = var_pexterncodeblocknode10->type->type_table[cltype27] == idtype28;
+var22 = var_tstringnode8->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16826);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16249);
 exit(1);
 }
-var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var30 = NULL;
-var31 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var30, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var31, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
-var_ppropdefnode1 = var29;
+var25 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var25, var_pdocnode2, var26, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var27, var28) /* init_aexternmethpropdef on <var25:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction371> */
-var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction363> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction371#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction371__action(val* self, val* p0) {
-parser__ReduceAction371__action(self, p0);
+/* method parser#ReduceAction363#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction363__action(val* self, val* p0) {
+parser__ReduceAction363__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction372#action for (self: ReduceAction372, Parser) */
-void parser__ReduceAction372__action(val* self, val* p0) {
+/* method parser#ReduceAction364#action for (self: ReduceAction364, Parser) */
+void parser__ReduceAction364__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var11 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
 val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
 val* var_tstringnode8 /* var tstringnode8: nullable Object */;
-short int var27 /* : Bool */;
-int cltype28;
-int idtype29;
-val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-val* var33 /* : AExternMethPropdef */;
-val* var34 /* : null */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AExternMethPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var35 /* : Int */;
-long var36 /* : Int */;
+long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var5;
+var_nodearraylist5 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var6;
+var_nodearraylist4 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var7;
+var_nodearraylist3 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var8;
+var_nodearraylist2 = var8;
 var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var10;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var11 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var11 = 0;
+var10 = 0;
 } else {
-var11 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16858);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16280);
 exit(1);
 }
 var_tkwredefnode3 = var_nodearraylist2;
 /* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
-cltype13 = type_nullable_parser_nodes__TKwredef.color;
-idtype14 = type_nullable_parser_nodes__TKwredef.id;
+cltype12 = type_nullable_parser_nodes__TKwredef.color;
+idtype13 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode3 == NULL) {
-var12 = 1;
+var11 = 1;
 } else {
-if(cltype13 >= var_tkwredefnode3->type->table_size) {
-var12 = 0;
+if(cltype12 >= var_tkwredefnode3->type->table_size) {
+var11 = 0;
 } else {
-var12 = var_tkwredefnode3->type->type_table[cltype13] == idtype14;
+var11 = var_tkwredefnode3->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16860);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16282);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist3;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype16 = type_nullable_parser_nodes__AVisibility.color;
-idtype17 = type_nullable_parser_nodes__AVisibility.id;
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var15 = 1;
+var14 = 1;
 } else {
-if(cltype16 >= var_pvisibilitynode4->type->table_size) {
-var15 = 0;
+if(cltype15 >= var_pvisibilitynode4->type->table_size) {
+var14 = 0;
 } else {
-var15 = var_pvisibilitynode4->type->type_table[cltype16] == idtype17;
+var14 = var_pvisibilitynode4->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16862);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16284);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist4;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype19 = type_nullable_parser_nodes__TKwmeth.color;
-idtype20 = type_nullable_parser_nodes__TKwmeth.id;
+cltype18 = type_nullable_parser_nodes__TKwmeth.color;
+idtype19 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var18 = 1;
+var17 = 1;
 } else {
-if(cltype19 >= var_tkwmethnode5->type->table_size) {
-var18 = 0;
+if(cltype18 >= var_tkwmethnode5->type->table_size) {
+var17 = 0;
 } else {
-var18 = var_tkwmethnode5->type->type_table[cltype19] == idtype20;
+var17 = var_tkwmethnode5->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16864);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16286);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist5;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype22 = type_nullable_parser_nodes__AMethid.color;
-idtype23 = type_nullable_parser_nodes__AMethid.id;
+cltype21 = type_nullable_parser_nodes__AMethid.color;
+idtype22 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var21 = 1;
+var20 = 1;
 } else {
-if(cltype22 >= var_pmethidnode6->type->table_size) {
-var21 = 0;
+if(cltype21 >= var_pmethidnode6->type->table_size) {
+var20 = 0;
 } else {
-var21 = var_pmethidnode6->type->type_table[cltype22] == idtype23;
+var20 = var_pmethidnode6->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16866);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16288);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist6;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype25 = type_nullable_parser_nodes__ASignature.color;
-idtype26 = type_nullable_parser_nodes__ASignature.id;
+cltype24 = type_nullable_parser_nodes__ASignature.color;
+idtype25 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var24 = 1;
+var23 = 1;
 } else {
-if(cltype25 >= var_psignaturenode7->type->table_size) {
-var24 = 0;
+if(cltype24 >= var_psignaturenode7->type->table_size) {
+var23 = 0;
 } else {
-var24 = var_psignaturenode7->type->type_table[cltype25] == idtype26;
+var23 = var_psignaturenode7->type->type_table[cltype24] == idtype25;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16868);
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16290);
 exit(1);
 }
 var_tstringnode8 = var_nodearraylist9;
 /* <var_tstringnode8:nullable Object> isa nullable TString */
-cltype28 = type_nullable_parser_nodes__TString.color;
-idtype29 = type_nullable_parser_nodes__TString.id;
+cltype27 = type_nullable_parser_nodes__TString.color;
+idtype28 = type_nullable_parser_nodes__TString.id;
 if(var_tstringnode8 == NULL) {
-var27 = 1;
+var26 = 1;
 } else {
-if(cltype28 >= var_tstringnode8->type->table_size) {
-var27 = 0;
+if(cltype27 >= var_tstringnode8->type->table_size) {
+var26 = 0;
 } else {
-var27 = var_tstringnode8->type->type_table[cltype28] == idtype29;
+var26 = var_tstringnode8->type->type_table[cltype27] == idtype28;
 }
 }
-if (!var27) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16870);
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16292);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist10;
-/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype31 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype32 = type_nullable_parser_nodes__AExternCodeBlock.id;
-if(var_pexterncodeblocknode10 == NULL) {
-var30 = 1;
+var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var30 = NULL;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var30, var31) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
+var_ppropdefnode1 = var29;
+var_node_list = var_ppropdefnode1;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction364> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
+RET_LABEL:;
+}
+/* method parser#ReduceAction364#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction364__action(val* self, val* p0) {
+parser__ReduceAction364__action(self, p0);
+RET_LABEL:;
+}
+/* method parser#ReduceAction365#action for (self: ReduceAction365, Parser) */
+void parser__ReduceAction365__action(val* self, val* p0) {
+val* var_p /* var p: Parser */;
+val* var /* : null */;
+val* var_node_list /* var node_list: nullable Object */;
+val* var1 /* : nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
+val* var2 /* : nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var3 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var4 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var5 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
+val* var_pdocnode2 /* var pdocnode2: nullable Object */;
+short int var9 /* : Bool */;
+int cltype;
+int idtype;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AExternMethPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
+long var29 /* : Int */;
+long var30 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist8 = var1;
+var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist7 = var2;
+var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist6 = var3;
+var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist5 = var4;
+var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var8;
+var_pdocnode2 = var_nodearraylist1;
+/* <var_pdocnode2:nullable Object> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_pdocnode2 == NULL) {
+var9 = 1;
 } else {
-if(cltype31 >= var_pexterncodeblocknode10->type->table_size) {
-var30 = 0;
+if(cltype >= var_pdocnode2->type->table_size) {
+var9 = 0;
 } else {
-var30 = var_pexterncodeblocknode10->type->type_table[cltype31] == idtype32;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16872);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16322);
 exit(1);
 }
-var33 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var34 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var33, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var34, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var33:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var33);
-var_ppropdefnode1 = var33;
+var_pvisibilitynode4 = var_nodearraylist2;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype11 = type_nullable_parser_nodes__AVisibility.color;
+idtype12 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
+var10 = 1;
+} else {
+if(cltype11 >= var_pvisibilitynode4->type->table_size) {
+var10 = 0;
+} else {
+var10 = var_pvisibilitynode4->type->type_table[cltype11] == idtype12;
+}
+}
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16324);
+exit(1);
+}
+var_tkwmethnode5 = var_nodearraylist3;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype14 = type_nullable_parser_nodes__TKwmeth.color;
+idtype15 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
+var13 = 1;
+} else {
+if(cltype14 >= var_tkwmethnode5->type->table_size) {
+var13 = 0;
+} else {
+var13 = var_tkwmethnode5->type->type_table[cltype14] == idtype15;
+}
+}
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16326);
+exit(1);
+}
+var_pmethidnode6 = var_nodearraylist4;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype17 = type_nullable_parser_nodes__AMethid.color;
+idtype18 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
+var16 = 1;
+} else {
+if(cltype17 >= var_pmethidnode6->type->table_size) {
+var16 = 0;
+} else {
+var16 = var_pmethidnode6->type->type_table[cltype17] == idtype18;
+}
+}
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16328);
+exit(1);
+}
+var_psignaturenode7 = var_nodearraylist5;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype20 = type_nullable_parser_nodes__ASignature.color;
+idtype21 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
+var19 = 1;
+} else {
+if(cltype20 >= var_psignaturenode7->type->table_size) {
+var19 = 0;
+} else {
+var19 = var_psignaturenode7->type->type_table[cltype20] == idtype21;
+}
+}
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16330);
+exit(1);
+}
+var_pexterncallsnode9 = var_nodearraylist8;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype23 = type_nullable_parser_nodes__AExternCalls.color;
+idtype24 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
+var22 = 1;
+} else {
+if(cltype23 >= var_pexterncallsnode9->type->table_size) {
+var22 = 0;
+} else {
+var22 = var_pexterncallsnode9->type->type_table[cltype23] == idtype24;
+}
+}
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16332);
+exit(1);
+}
+var25 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var25, var_pdocnode2, var26, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var27, var_pexterncallsnode9, var28) /* init_aexternmethpropdef on <var25:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction372> */
-var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction365> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction372#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction372__action(val* self, val* p0) {
-parser__ReduceAction372__action(self, p0);
+/* method parser#ReduceAction365#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction365__action(val* self, val* p0) {
+parser__ReduceAction365__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction373#action for (self: ReduceAction373, Parser) */
-void parser__ReduceAction373__action(val* self, val* p0) {
+/* method parser#ReduceAction366#action for (self: ReduceAction366, Parser) */
+void parser__ReduceAction366__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -691,27 +838,27 @@ val* var_pdocnode2 /* var pdocnode2: nullable Object */;
 short int var10 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
+val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
 short int var11 /* : Bool */;
 int cltype12;
 int idtype13;
-val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
 short int var14 /* : Bool */;
 int cltype15;
 int idtype16;
-val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
 short int var17 /* : Bool */;
 int cltype18;
 int idtype19;
-val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
 short int var20 /* : Bool */;
 int cltype21;
 int idtype22;
-val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
 short int var23 /* : Bool */;
 int cltype24;
 int idtype25;
-val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
 short int var26 /* : Bool */;
 int cltype27;
 int idtype28;
@@ -756,41 +903,265 @@ var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
 if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16903);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16363);
 exit(1);
 }
-var_pvisibilitynode4 = var_nodearraylist2;
-/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype12 = type_nullable_parser_nodes__AVisibility.color;
-idtype13 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode4 == NULL) {
+var_tkwredefnode3 = var_nodearraylist2;
+/* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
+cltype12 = type_nullable_parser_nodes__TKwredef.color;
+idtype13 = type_nullable_parser_nodes__TKwredef.id;
+if(var_tkwredefnode3 == NULL) {
 var11 = 1;
 } else {
-if(cltype12 >= var_pvisibilitynode4->type->table_size) {
+if(cltype12 >= var_tkwredefnode3->type->table_size) {
 var11 = 0;
 } else {
-var11 = var_pvisibilitynode4->type->type_table[cltype12] == idtype13;
+var11 = var_tkwredefnode3->type->type_table[cltype12] == idtype13;
 }
 }
 if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16905);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16365);
 exit(1);
 }
-var_tkwmethnode5 = var_nodearraylist3;
-/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype15 = type_nullable_parser_nodes__TKwmeth.color;
-idtype16 = type_nullable_parser_nodes__TKwmeth.id;
-if(var_tkwmethnode5 == NULL) {
+var_pvisibilitynode4 = var_nodearraylist3;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
 var14 = 1;
 } else {
-if(cltype15 >= var_tkwmethnode5->type->table_size) {
+if(cltype15 >= var_pvisibilitynode4->type->table_size) {
+var14 = 0;
+} else {
+var14 = var_pvisibilitynode4->type->type_table[cltype15] == idtype16;
+}
+}
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16367);
+exit(1);
+}
+var_tkwmethnode5 = var_nodearraylist4;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype18 = type_nullable_parser_nodes__TKwmeth.color;
+idtype19 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
+var17 = 1;
+} else {
+if(cltype18 >= var_tkwmethnode5->type->table_size) {
+var17 = 0;
+} else {
+var17 = var_tkwmethnode5->type->type_table[cltype18] == idtype19;
+}
+}
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16369);
+exit(1);
+}
+var_pmethidnode6 = var_nodearraylist5;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype21 = type_nullable_parser_nodes__AMethid.color;
+idtype22 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
+var20 = 1;
+} else {
+if(cltype21 >= var_pmethidnode6->type->table_size) {
+var20 = 0;
+} else {
+var20 = var_pmethidnode6->type->type_table[cltype21] == idtype22;
+}
+}
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16371);
+exit(1);
+}
+var_psignaturenode7 = var_nodearraylist6;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype24 = type_nullable_parser_nodes__ASignature.color;
+idtype25 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
+var23 = 1;
+} else {
+if(cltype24 >= var_psignaturenode7->type->table_size) {
+var23 = 0;
+} else {
+var23 = var_psignaturenode7->type->type_table[cltype24] == idtype25;
+}
+}
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16373);
+exit(1);
+}
+var_pexterncallsnode9 = var_nodearraylist9;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype27 = type_nullable_parser_nodes__AExternCalls.color;
+idtype28 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
+var26 = 1;
+} else {
+if(cltype27 >= var_pexterncallsnode9->type->table_size) {
+var26 = 0;
+} else {
+var26 = var_pexterncallsnode9->type->type_table[cltype27] == idtype28;
+}
+}
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16375);
+exit(1);
+}
+var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var30 = NULL;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var30, var_pexterncallsnode9, var31) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
+var_ppropdefnode1 = var29;
+var_node_list = var_ppropdefnode1;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction366> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
+RET_LABEL:;
+}
+/* method parser#ReduceAction366#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction366__action(val* self, val* p0) {
+parser__ReduceAction366__action(self, p0);
+RET_LABEL:;
+}
+/* method parser#ReduceAction367#action for (self: ReduceAction367, Parser) */
+void parser__ReduceAction367__action(val* self, val* p0) {
+val* var_p /* var p: Parser */;
+val* var /* : null */;
+val* var_node_list /* var node_list: nullable Object */;
+val* var1 /* : nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
+val* var2 /* : nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
+val* var3 /* : nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var4 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var5 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var9 /* : nullable Object */;
+val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
+val* var_pdocnode2 /* var pdocnode2: nullable Object */;
+short int var10 /* : Bool */;
+int cltype;
+int idtype;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
+val* var_tstringnode8 /* var tstringnode8: nullable Object */;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AExternMethPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
+long var32 /* : Int */;
+long var33 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist9 = var1;
+var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist8 = var2;
+var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist7 = var3;
+var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist6 = var4;
+var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist5 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var9;
+var_pdocnode2 = var_nodearraylist1;
+/* <var_pdocnode2:nullable Object> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_pdocnode2 == NULL) {
+var10 = 1;
+} else {
+if(cltype >= var_pdocnode2->type->table_size) {
+var10 = 0;
+} else {
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
+}
+}
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16406);
+exit(1);
+}
+var_pvisibilitynode4 = var_nodearraylist2;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype12 = type_nullable_parser_nodes__AVisibility.color;
+idtype13 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
+var11 = 1;
+} else {
+if(cltype12 >= var_pvisibilitynode4->type->table_size) {
+var11 = 0;
+} else {
+var11 = var_pvisibilitynode4->type->type_table[cltype12] == idtype13;
+}
+}
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16408);
+exit(1);
+}
+var_tkwmethnode5 = var_nodearraylist3;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype15 = type_nullable_parser_nodes__TKwmeth.color;
+idtype16 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
+var14 = 1;
+} else {
+if(cltype15 >= var_tkwmethnode5->type->table_size) {
 var14 = 0;
 } else {
 var14 = var_tkwmethnode5->type->type_table[cltype15] == idtype16;
 }
 }
 if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16907);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16410);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist4;
@@ -807,7 +1178,8 @@ var17 = var_pmethidnode6->type->type_table[cltype18] == idtype19;
 }
 }
 if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16909);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16412);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist5;
@@ -824,62 +1196,65 @@ var20 = var_psignaturenode7->type->type_table[cltype21] == idtype22;
 }
 }
 if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16911);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16414);
 exit(1);
 }
-var_pexterncallsnode9 = var_nodearraylist8;
-/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
-cltype24 = type_nullable_parser_nodes__AExternCalls.color;
-idtype25 = type_nullable_parser_nodes__AExternCalls.id;
-if(var_pexterncallsnode9 == NULL) {
+var_tstringnode8 = var_nodearraylist8;
+/* <var_tstringnode8:nullable Object> isa nullable TString */
+cltype24 = type_nullable_parser_nodes__TString.color;
+idtype25 = type_nullable_parser_nodes__TString.id;
+if(var_tstringnode8 == NULL) {
 var23 = 1;
 } else {
-if(cltype24 >= var_pexterncallsnode9->type->table_size) {
+if(cltype24 >= var_tstringnode8->type->table_size) {
 var23 = 0;
 } else {
-var23 = var_pexterncallsnode9->type->type_table[cltype24] == idtype25;
+var23 = var_tstringnode8->type->type_table[cltype24] == idtype25;
 }
 }
 if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16913);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16416);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist9;
-/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype27 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype28 = type_nullable_parser_nodes__AExternCodeBlock.id;
-if(var_pexterncodeblocknode10 == NULL) {
+var_pexterncallsnode9 = var_nodearraylist9;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype27 = type_nullable_parser_nodes__AExternCalls.color;
+idtype28 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
 var26 = 1;
 } else {
-if(cltype27 >= var_pexterncodeblocknode10->type->table_size) {
+if(cltype27 >= var_pexterncallsnode9->type->table_size) {
 var26 = 0;
 } else {
-var26 = var_pexterncodeblocknode10->type->type_table[cltype27] == idtype28;
+var26 = var_pexterncallsnode9->type->type_table[cltype27] == idtype28;
 }
 }
 if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16915);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16418);
 exit(1);
 }
 var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
 var30 = NULL;
 var31 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var30, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var31, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var30, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var_pexterncallsnode9, var31) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
 CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
 var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction373> */
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction367> */
 var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction373#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction373__action(val* self, val* p0) {
-parser__ReduceAction373__action(self, p0);
+/* method parser#ReduceAction367#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction367__action(val* self, val* p0) {
+parser__ReduceAction367__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction374#action for (self: ReduceAction374, Parser) */
-void parser__ReduceAction374__action(val* self, val* p0) {
+/* method parser#ReduceAction368#action for (self: ReduceAction368, Parser) */
+void parser__ReduceAction368__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -927,11 +1302,11 @@ val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
 short int var24 /* : Bool */;
 int cltype25;
 int idtype26;
-val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
+val* var_tstringnode8 /* var tstringnode8: nullable Object */;
 short int var27 /* : Bool */;
 int cltype28;
 int idtype29;
-val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
 short int var30 /* : Bool */;
 int cltype31;
 int idtype32;
@@ -977,7 +1352,8 @@ var11 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
 if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16947);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16450);
 exit(1);
 }
 var_tkwredefnode3 = var_nodearraylist2;
@@ -994,7 +1370,8 @@ var12 = var_tkwredefnode3->type->type_table[cltype13] == idtype14;
 }
 }
 if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16949);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16452);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist3;
@@ -1011,7 +1388,8 @@ var15 = var_pvisibilitynode4->type->type_table[cltype16] == idtype17;
 }
 }
 if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16951);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16454);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist4;
@@ -1028,7 +1406,8 @@ var18 = var_tkwmethnode5->type->type_table[cltype19] == idtype20;
 }
 }
 if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16953);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16456);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist5;
@@ -1045,7 +1424,8 @@ var21 = var_pmethidnode6->type->type_table[cltype22] == idtype23;
 }
 }
 if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16955);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16458);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist6;
@@ -1062,2202 +1442,1928 @@ var24 = var_psignaturenode7->type->type_table[cltype25] == idtype26;
 }
 }
 if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16957);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16460);
 exit(1);
 }
-var_pexterncallsnode9 = var_nodearraylist9;
-/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
-cltype28 = type_nullable_parser_nodes__AExternCalls.color;
-idtype29 = type_nullable_parser_nodes__AExternCalls.id;
-if(var_pexterncallsnode9 == NULL) {
+var_tstringnode8 = var_nodearraylist9;
+/* <var_tstringnode8:nullable Object> isa nullable TString */
+cltype28 = type_nullable_parser_nodes__TString.color;
+idtype29 = type_nullable_parser_nodes__TString.id;
+if(var_tstringnode8 == NULL) {
 var27 = 1;
 } else {
-if(cltype28 >= var_pexterncallsnode9->type->table_size) {
+if(cltype28 >= var_tstringnode8->type->table_size) {
 var27 = 0;
 } else {
-var27 = var_pexterncallsnode9->type->type_table[cltype28] == idtype29;
+var27 = var_tstringnode8->type->type_table[cltype28] == idtype29;
 }
 }
 if (!var27) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16959);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16462);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist10;
-/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype31 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype32 = type_nullable_parser_nodes__AExternCodeBlock.id;
-if(var_pexterncodeblocknode10 == NULL) {
+var_pexterncallsnode9 = var_nodearraylist10;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype31 = type_nullable_parser_nodes__AExternCalls.color;
+idtype32 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
 var30 = 1;
 } else {
-if(cltype31 >= var_pexterncodeblocknode10->type->table_size) {
+if(cltype31 >= var_pexterncallsnode9->type->table_size) {
 var30 = 0;
 } else {
-var30 = var_pexterncodeblocknode10->type->type_table[cltype31] == idtype32;
+var30 = var_pexterncallsnode9->type->type_table[cltype31] == idtype32;
 }
 }
 if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16961);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16464);
 exit(1);
 }
 var33 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
 var34 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var33, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var34, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var33:AExternMethPropdef>*/;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var33, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var_pexterncallsnode9, var34) /* init_aexternmethpropdef on <var33:AExternMethPropdef>*/;
 CHECK_NEW_parser_nodes__AExternMethPropdef(var33);
 var_ppropdefnode1 = var33;
 var_node_list = var_ppropdefnode1;
-var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction374> */
+var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction368> */
 var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction374#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction374__action(val* self, val* p0) {
-parser__ReduceAction374__action(self, p0);
+/* method parser#ReduceAction368#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction368__action(val* self, val* p0) {
+parser__ReduceAction368__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction375#action for (self: ReduceAction375, Parser) */
-void parser__ReduceAction375__action(val* self, val* p0) {
+/* method parser#ReduceAction369#action for (self: ReduceAction369, Parser) */
+void parser__ReduceAction369__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var11 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
 val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
-val* var_tstringnode8 /* var tstringnode8: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
-short int var27 /* : Bool */;
-int cltype28;
-int idtype29;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
 val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-val* var33 /* : AExternMethPropdef */;
-val* var34 /* : null */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AExternMethPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var35 /* : Int */;
-long var36 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var6;
+var_nodearraylist3 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var7;
+var_nodearraylist2 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var10;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var11 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var11 = 0;
+var9 = 0;
 } else {
-var11 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16993);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16494);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist2;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype13 = type_nullable_parser_nodes__AVisibility.color;
-idtype14 = type_nullable_parser_nodes__AVisibility.id;
+cltype11 = type_nullable_parser_nodes__AVisibility.color;
+idtype12 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var12 = 1;
+var10 = 1;
 } else {
-if(cltype13 >= var_pvisibilitynode4->type->table_size) {
-var12 = 0;
+if(cltype11 >= var_pvisibilitynode4->type->table_size) {
+var10 = 0;
 } else {
-var12 = var_pvisibilitynode4->type->type_table[cltype13] == idtype14;
+var10 = var_pvisibilitynode4->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16995);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16496);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist3;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype16 = type_nullable_parser_nodes__TKwmeth.color;
-idtype17 = type_nullable_parser_nodes__TKwmeth.id;
+cltype14 = type_nullable_parser_nodes__TKwmeth.color;
+idtype15 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var15 = 1;
+var13 = 1;
 } else {
-if(cltype16 >= var_tkwmethnode5->type->table_size) {
-var15 = 0;
+if(cltype14 >= var_tkwmethnode5->type->table_size) {
+var13 = 0;
 } else {
-var15 = var_tkwmethnode5->type->type_table[cltype16] == idtype17;
+var13 = var_tkwmethnode5->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16997);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16498);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist4;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype19 = type_nullable_parser_nodes__AMethid.color;
-idtype20 = type_nullable_parser_nodes__AMethid.id;
+cltype17 = type_nullable_parser_nodes__AMethid.color;
+idtype18 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var18 = 1;
+var16 = 1;
 } else {
-if(cltype19 >= var_pmethidnode6->type->table_size) {
-var18 = 0;
+if(cltype17 >= var_pmethidnode6->type->table_size) {
+var16 = 0;
 } else {
-var18 = var_pmethidnode6->type->type_table[cltype19] == idtype20;
+var16 = var_pmethidnode6->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 16999);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16500);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist5;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype22 = type_nullable_parser_nodes__ASignature.color;
-idtype23 = type_nullable_parser_nodes__ASignature.id;
+cltype20 = type_nullable_parser_nodes__ASignature.color;
+idtype21 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var21 = 1;
-} else {
-if(cltype22 >= var_psignaturenode7->type->table_size) {
-var21 = 0;
-} else {
-var21 = var_psignaturenode7->type->type_table[cltype22] == idtype23;
-}
-}
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17001);
-exit(1);
-}
-var_tstringnode8 = var_nodearraylist8;
-/* <var_tstringnode8:nullable Object> isa nullable TString */
-cltype25 = type_nullable_parser_nodes__TString.color;
-idtype26 = type_nullable_parser_nodes__TString.id;
-if(var_tstringnode8 == NULL) {
-var24 = 1;
-} else {
-if(cltype25 >= var_tstringnode8->type->table_size) {
-var24 = 0;
-} else {
-var24 = var_tstringnode8->type->type_table[cltype25] == idtype26;
-}
-}
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17003);
-exit(1);
-}
-var_pexterncallsnode9 = var_nodearraylist9;
-/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
-cltype28 = type_nullable_parser_nodes__AExternCalls.color;
-idtype29 = type_nullable_parser_nodes__AExternCalls.id;
-if(var_pexterncallsnode9 == NULL) {
-var27 = 1;
+var19 = 1;
 } else {
-if(cltype28 >= var_pexterncallsnode9->type->table_size) {
-var27 = 0;
+if(cltype20 >= var_psignaturenode7->type->table_size) {
+var19 = 0;
 } else {
-var27 = var_pexterncallsnode9->type->type_table[cltype28] == idtype29;
+var19 = var_psignaturenode7->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var27) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17005);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16502);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist10;
+var_pexterncodeblocknode10 = var_nodearraylist8;
 /* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype31 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype32 = type_nullable_parser_nodes__AExternCodeBlock.id;
+cltype23 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype24 = type_nullable_parser_nodes__AExternCodeBlock.id;
 if(var_pexterncodeblocknode10 == NULL) {
-var30 = 1;
+var22 = 1;
 } else {
-if(cltype31 >= var_pexterncodeblocknode10->type->table_size) {
-var30 = 0;
+if(cltype23 >= var_pexterncodeblocknode10->type->table_size) {
+var22 = 0;
 } else {
-var30 = var_pexterncodeblocknode10->type->type_table[cltype31] == idtype32;
+var22 = var_pexterncodeblocknode10->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17007);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16504);
 exit(1);
 }
-var33 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var34 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var33, var_pdocnode2, var34, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var33:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var33);
-var_ppropdefnode1 = var33;
+var25 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var25, var_pdocnode2, var26, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var27, var28, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var25:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction375> */
-var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction369> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction375#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction375__action(val* self, val* p0) {
-parser__ReduceAction375__action(self, p0);
+/* method parser#ReduceAction369#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction369__action(val* self, val* p0) {
+parser__ReduceAction369__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction376#action for (self: ReduceAction376, Parser) */
-void parser__ReduceAction376__action(val* self, val* p0) {
+/* method parser#ReduceAction370#action for (self: ReduceAction370, Parser) */
+void parser__ReduceAction370__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist11 /* var nodearraylist11: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var11 /* : nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var12 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
 val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var_tstringnode8 /* var tstringnode8: nullable Object */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
-short int var31 /* : Bool */;
-int cltype32;
-int idtype33;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
 val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
-short int var34 /* : Bool */;
-int cltype35;
-int idtype36;
-val* var37 /* : AExternMethPropdef */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AExternMethPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var38 /* : Int */;
-long var39 /* : Int */;
+long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist11 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var5;
+var_nodearraylist5 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var6;
+var_nodearraylist4 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var7;
+var_nodearraylist3 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var8;
+var_nodearraylist2 = var8;
 var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var10;
-var11 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var11;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var12 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var12 = 0;
+var10 = 0;
 } else {
-var12 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17040);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16535);
 exit(1);
 }
 var_tkwredefnode3 = var_nodearraylist2;
 /* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
-cltype14 = type_nullable_parser_nodes__TKwredef.color;
-idtype15 = type_nullable_parser_nodes__TKwredef.id;
+cltype12 = type_nullable_parser_nodes__TKwredef.color;
+idtype13 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode3 == NULL) {
-var13 = 1;
+var11 = 1;
 } else {
-if(cltype14 >= var_tkwredefnode3->type->table_size) {
-var13 = 0;
+if(cltype12 >= var_tkwredefnode3->type->table_size) {
+var11 = 0;
 } else {
-var13 = var_tkwredefnode3->type->type_table[cltype14] == idtype15;
+var11 = var_tkwredefnode3->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17042);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16537);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist3;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype17 = type_nullable_parser_nodes__AVisibility.color;
-idtype18 = type_nullable_parser_nodes__AVisibility.id;
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var16 = 1;
+var14 = 1;
 } else {
-if(cltype17 >= var_pvisibilitynode4->type->table_size) {
-var16 = 0;
+if(cltype15 >= var_pvisibilitynode4->type->table_size) {
+var14 = 0;
 } else {
-var16 = var_pvisibilitynode4->type->type_table[cltype17] == idtype18;
+var14 = var_pvisibilitynode4->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17044);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16539);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist4;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype20 = type_nullable_parser_nodes__TKwmeth.color;
-idtype21 = type_nullable_parser_nodes__TKwmeth.id;
+cltype18 = type_nullable_parser_nodes__TKwmeth.color;
+idtype19 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var19 = 1;
+var17 = 1;
 } else {
-if(cltype20 >= var_tkwmethnode5->type->table_size) {
-var19 = 0;
+if(cltype18 >= var_tkwmethnode5->type->table_size) {
+var17 = 0;
 } else {
-var19 = var_tkwmethnode5->type->type_table[cltype20] == idtype21;
+var17 = var_tkwmethnode5->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17046);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16541);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist5;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype23 = type_nullable_parser_nodes__AMethid.color;
-idtype24 = type_nullable_parser_nodes__AMethid.id;
+cltype21 = type_nullable_parser_nodes__AMethid.color;
+idtype22 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var22 = 1;
+var20 = 1;
 } else {
-if(cltype23 >= var_pmethidnode6->type->table_size) {
-var22 = 0;
+if(cltype21 >= var_pmethidnode6->type->table_size) {
+var20 = 0;
 } else {
-var22 = var_pmethidnode6->type->type_table[cltype23] == idtype24;
+var20 = var_pmethidnode6->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17048);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16543);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist6;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype26 = type_nullable_parser_nodes__ASignature.color;
-idtype27 = type_nullable_parser_nodes__ASignature.id;
+cltype24 = type_nullable_parser_nodes__ASignature.color;
+idtype25 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var25 = 1;
-} else {
-if(cltype26 >= var_psignaturenode7->type->table_size) {
-var25 = 0;
-} else {
-var25 = var_psignaturenode7->type->type_table[cltype26] == idtype27;
-}
-}
-if (!var25) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17050);
-exit(1);
-}
-var_tstringnode8 = var_nodearraylist9;
-/* <var_tstringnode8:nullable Object> isa nullable TString */
-cltype29 = type_nullable_parser_nodes__TString.color;
-idtype30 = type_nullable_parser_nodes__TString.id;
-if(var_tstringnode8 == NULL) {
-var28 = 1;
-} else {
-if(cltype29 >= var_tstringnode8->type->table_size) {
-var28 = 0;
-} else {
-var28 = var_tstringnode8->type->type_table[cltype29] == idtype30;
-}
-}
-if (!var28) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17052);
-exit(1);
-}
-var_pexterncallsnode9 = var_nodearraylist10;
-/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
-cltype32 = type_nullable_parser_nodes__AExternCalls.color;
-idtype33 = type_nullable_parser_nodes__AExternCalls.id;
-if(var_pexterncallsnode9 == NULL) {
-var31 = 1;
+var23 = 1;
 } else {
-if(cltype32 >= var_pexterncallsnode9->type->table_size) {
-var31 = 0;
+if(cltype24 >= var_psignaturenode7->type->table_size) {
+var23 = 0;
 } else {
-var31 = var_pexterncallsnode9->type->type_table[cltype32] == idtype33;
+var23 = var_psignaturenode7->type->type_table[cltype24] == idtype25;
 }
 }
-if (!var31) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17054);
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16545);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist11;
+var_pexterncodeblocknode10 = var_nodearraylist9;
 /* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype35 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype36 = type_nullable_parser_nodes__AExternCodeBlock.id;
+cltype27 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype28 = type_nullable_parser_nodes__AExternCodeBlock.id;
 if(var_pexterncodeblocknode10 == NULL) {
-var34 = 1;
+var26 = 1;
 } else {
-if(cltype35 >= var_pexterncodeblocknode10->type->table_size) {
-var34 = 0;
+if(cltype27 >= var_pexterncodeblocknode10->type->table_size) {
+var26 = 0;
 } else {
-var34 = var_pexterncodeblocknode10->type->type_table[cltype35] == idtype36;
+var26 = var_pexterncodeblocknode10->type->type_table[cltype27] == idtype28;
 }
 }
-if (!var34) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17056);
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16547);
 exit(1);
 }
-var37 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var37->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var37, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var37:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var37);
-var_ppropdefnode1 = var37;
+var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var30 = NULL;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var30, var31, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var38 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction376> */
-var39 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var38) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var39, var_node_list) /* push on <var_p:Parser>*/;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction370> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction376#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction376__action(val* self, val* p0) {
-parser__ReduceAction376__action(self, p0);
+/* method parser#ReduceAction370#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction370__action(val* self, val* p0) {
+parser__ReduceAction370__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction377#action for (self: ReduceAction377, Parser) */
-void parser__ReduceAction377__action(val* self, val* p0) {
+/* method parser#ReduceAction371#action for (self: ReduceAction371, Parser) */
+void parser__ReduceAction371__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var6 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
-val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
 short int var11 /* : Bool */;
 int cltype12;
 int idtype13;
-val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
 short int var14 /* : Bool */;
 int cltype15;
 int idtype16;
-val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
 short int var17 /* : Bool */;
 int cltype18;
 int idtype19;
-val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
 short int var20 /* : Bool */;
 int cltype21;
 int idtype22;
-val* var23 /* : AExternMethPropdef */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var26 /* : null */;
+val* var_tstringnode8 /* var tstringnode8: nullable Object */;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AExternMethPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var27 /* : Int */;
-long var28 /* : Int */;
+long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
+var_nodearraylist5 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
+var_nodearraylist4 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var7 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
+var10 = 0;
 } else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17084);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16578);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist2;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype9 = type_nullable_parser_nodes__AVisibility.color;
-idtype10 = type_nullable_parser_nodes__AVisibility.id;
+cltype12 = type_nullable_parser_nodes__AVisibility.color;
+idtype13 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var8 = 1;
+var11 = 1;
 } else {
-if(cltype9 >= var_pvisibilitynode4->type->table_size) {
-var8 = 0;
+if(cltype12 >= var_pvisibilitynode4->type->table_size) {
+var11 = 0;
 } else {
-var8 = var_pvisibilitynode4->type->type_table[cltype9] == idtype10;
+var11 = var_pvisibilitynode4->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17086);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16580);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist3;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype12 = type_nullable_parser_nodes__TKwmeth.color;
-idtype13 = type_nullable_parser_nodes__TKwmeth.id;
+cltype15 = type_nullable_parser_nodes__TKwmeth.color;
+idtype16 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var11 = 1;
+var14 = 1;
 } else {
-if(cltype12 >= var_tkwmethnode5->type->table_size) {
-var11 = 0;
+if(cltype15 >= var_tkwmethnode5->type->table_size) {
+var14 = 0;
 } else {
-var11 = var_tkwmethnode5->type->type_table[cltype12] == idtype13;
+var14 = var_tkwmethnode5->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17088);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16582);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist4;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype15 = type_nullable_parser_nodes__AMethid.color;
-idtype16 = type_nullable_parser_nodes__AMethid.id;
+cltype18 = type_nullable_parser_nodes__AMethid.color;
+idtype19 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var14 = 1;
+var17 = 1;
 } else {
-if(cltype15 >= var_pmethidnode6->type->table_size) {
-var14 = 0;
+if(cltype18 >= var_pmethidnode6->type->table_size) {
+var17 = 0;
 } else {
-var14 = var_pmethidnode6->type->type_table[cltype15] == idtype16;
+var17 = var_pmethidnode6->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17090);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16584);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist5;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype18 = type_nullable_parser_nodes__ASignature.color;
-idtype19 = type_nullable_parser_nodes__ASignature.id;
+cltype21 = type_nullable_parser_nodes__ASignature.color;
+idtype22 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var17 = 1;
+var20 = 1;
 } else {
-if(cltype18 >= var_psignaturenode7->type->table_size) {
-var17 = 0;
+if(cltype21 >= var_psignaturenode7->type->table_size) {
+var20 = 0;
 } else {
-var17 = var_psignaturenode7->type->type_table[cltype18] == idtype19;
+var20 = var_psignaturenode7->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17092);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16586);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist6;
+var_tstringnode8 = var_nodearraylist8;
+/* <var_tstringnode8:nullable Object> isa nullable TString */
+cltype24 = type_nullable_parser_nodes__TString.color;
+idtype25 = type_nullable_parser_nodes__TString.id;
+if(var_tstringnode8 == NULL) {
+var23 = 1;
+} else {
+if(cltype24 >= var_tstringnode8->type->table_size) {
+var23 = 0;
+} else {
+var23 = var_tstringnode8->type->type_table[cltype24] == idtype25;
+}
+}
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16588);
+exit(1);
+}
+var_pexterncodeblocknode10 = var_nodearraylist9;
 /* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype21 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype22 = type_nullable_parser_nodes__AExternCodeBlock.id;
+cltype27 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype28 = type_nullable_parser_nodes__AExternCodeBlock.id;
 if(var_pexterncodeblocknode10 == NULL) {
-var20 = 1;
+var26 = 1;
 } else {
-if(cltype21 >= var_pexterncodeblocknode10->type->table_size) {
-var20 = 0;
+if(cltype27 >= var_pexterncodeblocknode10->type->table_size) {
+var26 = 0;
 } else {
-var20 = var_pexterncodeblocknode10->type->type_table[cltype21] == idtype22;
+var26 = var_pexterncodeblocknode10->type->type_table[cltype27] == idtype28;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17094);
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16590);
 exit(1);
 }
-var23 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var24 = NULL;
-var25 = NULL;
-var26 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var23, var_pdocnode2, var24, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var25, var26, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var23:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var23);
-var_ppropdefnode1 = var23;
+var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var30 = NULL;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var30, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var31, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var27 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction377> */
-var28 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var27) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var28, var_node_list) /* push on <var_p:Parser>*/;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction371> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction377#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction377__action(val* self, val* p0) {
-parser__ReduceAction377__action(self, p0);
+/* method parser#ReduceAction371#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction371__action(val* self, val* p0) {
+parser__ReduceAction371__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction378#action for (self: ReduceAction378, Parser) */
-void parser__ReduceAction378__action(val* self, val* p0) {
+/* method parser#ReduceAction372#action for (self: ReduceAction372, Parser) */
+void parser__ReduceAction372__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var6 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var7 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var9 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var10 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var8 /* : Bool */;
+short int var11 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
 short int var12 /* : Bool */;
 int cltype13;
 int idtype14;
-val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
 short int var15 /* : Bool */;
 int cltype16;
 int idtype17;
-val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
 short int var18 /* : Bool */;
 int cltype19;
 int idtype20;
-val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
 short int var21 /* : Bool */;
 int cltype22;
 int idtype23;
-val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
 short int var24 /* : Bool */;
 int cltype25;
 int idtype26;
-val* var27 /* : AExternMethPropdef */;
-val* var28 /* : null */;
-val* var29 /* : null */;
+val* var_tstringnode8 /* var tstringnode8: nullable Object */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+val* var33 /* : AExternMethPropdef */;
+val* var34 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var30 /* : Int */;
-long var31 /* : Int */;
+long var35 /* : Int */;
+long var36 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var1;
+var_nodearraylist10 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var2;
+var_nodearraylist9 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var3;
+var_nodearraylist8 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var4;
+var_nodearraylist7 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var5;
+var_nodearraylist6 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var6;
+var_nodearraylist5 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var7;
+var_nodearraylist4 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var9;
+var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var10;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var8 = 1;
+var11 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var8 = 0;
+var11 = 0;
 } else {
-var8 = var_pdocnode2->type->type_table[cltype] == idtype;
+var11 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17123);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16622);
 exit(1);
 }
 var_tkwredefnode3 = var_nodearraylist2;
 /* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
-cltype10 = type_nullable_parser_nodes__TKwredef.color;
-idtype11 = type_nullable_parser_nodes__TKwredef.id;
+cltype13 = type_nullable_parser_nodes__TKwredef.color;
+idtype14 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode3 == NULL) {
-var9 = 1;
+var12 = 1;
 } else {
-if(cltype10 >= var_tkwredefnode3->type->table_size) {
-var9 = 0;
+if(cltype13 >= var_tkwredefnode3->type->table_size) {
+var12 = 0;
 } else {
-var9 = var_tkwredefnode3->type->type_table[cltype10] == idtype11;
+var12 = var_tkwredefnode3->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17125);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16624);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist3;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype13 = type_nullable_parser_nodes__AVisibility.color;
-idtype14 = type_nullable_parser_nodes__AVisibility.id;
+cltype16 = type_nullable_parser_nodes__AVisibility.color;
+idtype17 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var12 = 1;
+var15 = 1;
 } else {
-if(cltype13 >= var_pvisibilitynode4->type->table_size) {
-var12 = 0;
+if(cltype16 >= var_pvisibilitynode4->type->table_size) {
+var15 = 0;
 } else {
-var12 = var_pvisibilitynode4->type->type_table[cltype13] == idtype14;
+var15 = var_pvisibilitynode4->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17127);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16626);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist4;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype16 = type_nullable_parser_nodes__TKwmeth.color;
-idtype17 = type_nullable_parser_nodes__TKwmeth.id;
+cltype19 = type_nullable_parser_nodes__TKwmeth.color;
+idtype20 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var15 = 1;
+var18 = 1;
 } else {
-if(cltype16 >= var_tkwmethnode5->type->table_size) {
-var15 = 0;
+if(cltype19 >= var_tkwmethnode5->type->table_size) {
+var18 = 0;
 } else {
-var15 = var_tkwmethnode5->type->type_table[cltype16] == idtype17;
+var18 = var_tkwmethnode5->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17129);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16628);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist5;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype19 = type_nullable_parser_nodes__AMethid.color;
-idtype20 = type_nullable_parser_nodes__AMethid.id;
-if(var_pmethidnode6 == NULL) {
-var18 = 1;
+cltype22 = type_nullable_parser_nodes__AMethid.color;
+idtype23 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
+var21 = 1;
 } else {
-if(cltype19 >= var_pmethidnode6->type->table_size) {
-var18 = 0;
+if(cltype22 >= var_pmethidnode6->type->table_size) {
+var21 = 0;
 } else {
-var18 = var_pmethidnode6->type->type_table[cltype19] == idtype20;
+var21 = var_pmethidnode6->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17131);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16630);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist6;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype22 = type_nullable_parser_nodes__ASignature.color;
-idtype23 = type_nullable_parser_nodes__ASignature.id;
+cltype25 = type_nullable_parser_nodes__ASignature.color;
+idtype26 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var21 = 1;
+var24 = 1;
 } else {
-if(cltype22 >= var_psignaturenode7->type->table_size) {
-var21 = 0;
+if(cltype25 >= var_psignaturenode7->type->table_size) {
+var24 = 0;
 } else {
-var21 = var_psignaturenode7->type->type_table[cltype22] == idtype23;
+var24 = var_psignaturenode7->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17133);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16632);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist7;
+var_tstringnode8 = var_nodearraylist9;
+/* <var_tstringnode8:nullable Object> isa nullable TString */
+cltype28 = type_nullable_parser_nodes__TString.color;
+idtype29 = type_nullable_parser_nodes__TString.id;
+if(var_tstringnode8 == NULL) {
+var27 = 1;
+} else {
+if(cltype28 >= var_tstringnode8->type->table_size) {
+var27 = 0;
+} else {
+var27 = var_tstringnode8->type->type_table[cltype28] == idtype29;
+}
+}
+if (!var27) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16634);
+exit(1);
+}
+var_pexterncodeblocknode10 = var_nodearraylist10;
 /* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype25 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype26 = type_nullable_parser_nodes__AExternCodeBlock.id;
+cltype31 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype32 = type_nullable_parser_nodes__AExternCodeBlock.id;
 if(var_pexterncodeblocknode10 == NULL) {
-var24 = 1;
+var30 = 1;
 } else {
-if(cltype25 >= var_pexterncodeblocknode10->type->table_size) {
-var24 = 0;
+if(cltype31 >= var_pexterncodeblocknode10->type->table_size) {
+var30 = 0;
 } else {
-var24 = var_pexterncodeblocknode10->type->type_table[cltype25] == idtype26;
+var30 = var_pexterncodeblocknode10->type->type_table[cltype31] == idtype32;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17135);
+if (!var30) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16636);
 exit(1);
 }
-var27 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var28 = NULL;
-var29 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var27, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var28, var29, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var27:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var27);
-var_ppropdefnode1 = var27;
+var33 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var34 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var33, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var34, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var33:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var33);
+var_ppropdefnode1 = var33;
 var_node_list = var_ppropdefnode1;
-var30 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction378> */
-var31 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var30) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var31, var_node_list) /* push on <var_p:Parser>*/;
+var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction372> */
+var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction378#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction378__action(val* self, val* p0) {
-parser__ReduceAction378__action(self, p0);
+/* method parser#ReduceAction372#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction372__action(val* self, val* p0) {
+parser__ReduceAction372__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction379#action for (self: ReduceAction379, Parser) */
-void parser__ReduceAction379__action(val* self, val* p0) {
+/* method parser#ReduceAction373#action for (self: ReduceAction373, Parser) */
+void parser__ReduceAction373__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var6 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
 val* var7 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var8 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
 val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
 val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var27 /* : AExternMethPropdef */;
-val* var28 /* : null */;
-val* var29 /* : null */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AExternMethPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var30 /* : Int */;
-long var31 /* : Int */;
+long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var5;
+var_nodearraylist5 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var6;
+var_nodearraylist4 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var7;
+var_nodearraylist3 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var8 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var8 = 0;
+var10 = 0;
 } else {
-var8 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17164);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16667);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist2;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype10 = type_nullable_parser_nodes__AVisibility.color;
-idtype11 = type_nullable_parser_nodes__AVisibility.id;
+cltype12 = type_nullable_parser_nodes__AVisibility.color;
+idtype13 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var9 = 1;
+var11 = 1;
 } else {
-if(cltype10 >= var_pvisibilitynode4->type->table_size) {
-var9 = 0;
+if(cltype12 >= var_pvisibilitynode4->type->table_size) {
+var11 = 0;
 } else {
-var9 = var_pvisibilitynode4->type->type_table[cltype10] == idtype11;
+var11 = var_pvisibilitynode4->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17166);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16669);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist3;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype13 = type_nullable_parser_nodes__TKwmeth.color;
-idtype14 = type_nullable_parser_nodes__TKwmeth.id;
+cltype15 = type_nullable_parser_nodes__TKwmeth.color;
+idtype16 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var12 = 1;
+var14 = 1;
 } else {
-if(cltype13 >= var_tkwmethnode5->type->table_size) {
-var12 = 0;
+if(cltype15 >= var_tkwmethnode5->type->table_size) {
+var14 = 0;
 } else {
-var12 = var_tkwmethnode5->type->type_table[cltype13] == idtype14;
+var14 = var_tkwmethnode5->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17168);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16671);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist4;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype16 = type_nullable_parser_nodes__AMethid.color;
-idtype17 = type_nullable_parser_nodes__AMethid.id;
+cltype18 = type_nullable_parser_nodes__AMethid.color;
+idtype19 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var15 = 1;
+var17 = 1;
 } else {
-if(cltype16 >= var_pmethidnode6->type->table_size) {
-var15 = 0;
+if(cltype18 >= var_pmethidnode6->type->table_size) {
+var17 = 0;
 } else {
-var15 = var_pmethidnode6->type->type_table[cltype16] == idtype17;
+var17 = var_pmethidnode6->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17170);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16673);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist5;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype19 = type_nullable_parser_nodes__ASignature.color;
-idtype20 = type_nullable_parser_nodes__ASignature.id;
+cltype21 = type_nullable_parser_nodes__ASignature.color;
+idtype22 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var18 = 1;
+var20 = 1;
 } else {
-if(cltype19 >= var_psignaturenode7->type->table_size) {
-var18 = 0;
+if(cltype21 >= var_psignaturenode7->type->table_size) {
+var20 = 0;
 } else {
-var18 = var_psignaturenode7->type->type_table[cltype19] == idtype20;
+var20 = var_psignaturenode7->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17172);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16675);
 exit(1);
 }
-var_pexterncallsnode9 = var_nodearraylist6;
+var_pexterncallsnode9 = var_nodearraylist8;
 /* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
-cltype22 = type_nullable_parser_nodes__AExternCalls.color;
-idtype23 = type_nullable_parser_nodes__AExternCalls.id;
+cltype24 = type_nullable_parser_nodes__AExternCalls.color;
+idtype25 = type_nullable_parser_nodes__AExternCalls.id;
 if(var_pexterncallsnode9 == NULL) {
-var21 = 1;
+var23 = 1;
 } else {
-if(cltype22 >= var_pexterncallsnode9->type->table_size) {
-var21 = 0;
+if(cltype24 >= var_pexterncallsnode9->type->table_size) {
+var23 = 0;
 } else {
-var21 = var_pexterncallsnode9->type->type_table[cltype22] == idtype23;
+var23 = var_pexterncallsnode9->type->type_table[cltype24] == idtype25;
 }
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17174);
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16677);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist7;
+var_pexterncodeblocknode10 = var_nodearraylist9;
 /* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype25 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype26 = type_nullable_parser_nodes__AExternCodeBlock.id;
+cltype27 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype28 = type_nullable_parser_nodes__AExternCodeBlock.id;
 if(var_pexterncodeblocknode10 == NULL) {
-var24 = 1;
+var26 = 1;
 } else {
-if(cltype25 >= var_pexterncodeblocknode10->type->table_size) {
-var24 = 0;
+if(cltype27 >= var_pexterncodeblocknode10->type->table_size) {
+var26 = 0;
 } else {
-var24 = var_pexterncodeblocknode10->type->type_table[cltype25] == idtype26;
+var26 = var_pexterncodeblocknode10->type->type_table[cltype27] == idtype28;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17176);
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16679);
 exit(1);
 }
-var27 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var28 = NULL;
-var29 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var27, var_pdocnode2, var28, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var29, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var27:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var27);
-var_ppropdefnode1 = var27;
+var29 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var30 = NULL;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var29, var_pdocnode2, var30, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var31, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var29:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var30 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction379> */
-var31 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var30) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var31, var_node_list) /* push on <var_p:Parser>*/;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction373> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction379#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction379__action(val* self, val* p0) {
-parser__ReduceAction379__action(self, p0);
+/* method parser#ReduceAction373#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction373__action(val* self, val* p0) {
+parser__ReduceAction373__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction380#action for (self: ReduceAction380, Parser) */
-void parser__ReduceAction380__action(val* self, val* p0) {
+/* method parser#ReduceAction374#action for (self: ReduceAction374, Parser) */
+void parser__ReduceAction374__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
+val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var6 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var7 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
 val* var8 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var9 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var10 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var9 /* : Bool */;
+short int var11 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
 val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
 val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
 val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
 val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
 val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
 val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-val* var31 /* : AExternMethPropdef */;
-val* var32 /* : null */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+val* var33 /* : AExternMethPropdef */;
+val* var34 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
-long var33 /* : Int */;
-long var34 /* : Int */;
+long var35 /* : Int */;
+long var36 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var1;
+var_nodearraylist10 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var2;
+var_nodearraylist9 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var3;
+var_nodearraylist8 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var4;
+var_nodearraylist7 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var5;
+var_nodearraylist6 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var6;
+var_nodearraylist5 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var7;
+var_nodearraylist4 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var8;
+var_nodearraylist3 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var9;
+var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var10;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var9 = 1;
+var11 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var9 = 0;
+var11 = 0;
 } else {
-var9 = var_pdocnode2->type->type_table[cltype] == idtype;
+var11 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17206);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16711);
 exit(1);
 }
 var_tkwredefnode3 = var_nodearraylist2;
 /* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
-cltype11 = type_nullable_parser_nodes__TKwredef.color;
-idtype12 = type_nullable_parser_nodes__TKwredef.id;
+cltype13 = type_nullable_parser_nodes__TKwredef.color;
+idtype14 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode3 == NULL) {
-var10 = 1;
+var12 = 1;
 } else {
-if(cltype11 >= var_tkwredefnode3->type->table_size) {
-var10 = 0;
+if(cltype13 >= var_tkwredefnode3->type->table_size) {
+var12 = 0;
 } else {
-var10 = var_tkwredefnode3->type->type_table[cltype11] == idtype12;
+var12 = var_tkwredefnode3->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17208);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16713);
 exit(1);
 }
 var_pvisibilitynode4 = var_nodearraylist3;
 /* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
-cltype14 = type_nullable_parser_nodes__AVisibility.color;
-idtype15 = type_nullable_parser_nodes__AVisibility.id;
+cltype16 = type_nullable_parser_nodes__AVisibility.color;
+idtype17 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode4 == NULL) {
-var13 = 1;
+var15 = 1;
 } else {
-if(cltype14 >= var_pvisibilitynode4->type->table_size) {
-var13 = 0;
+if(cltype16 >= var_pvisibilitynode4->type->table_size) {
+var15 = 0;
 } else {
-var13 = var_pvisibilitynode4->type->type_table[cltype14] == idtype15;
+var15 = var_pvisibilitynode4->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17210);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16715);
 exit(1);
 }
 var_tkwmethnode5 = var_nodearraylist4;
 /* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
-cltype17 = type_nullable_parser_nodes__TKwmeth.color;
-idtype18 = type_nullable_parser_nodes__TKwmeth.id;
+cltype19 = type_nullable_parser_nodes__TKwmeth.color;
+idtype20 = type_nullable_parser_nodes__TKwmeth.id;
 if(var_tkwmethnode5 == NULL) {
-var16 = 1;
+var18 = 1;
 } else {
-if(cltype17 >= var_tkwmethnode5->type->table_size) {
-var16 = 0;
+if(cltype19 >= var_tkwmethnode5->type->table_size) {
+var18 = 0;
 } else {
-var16 = var_tkwmethnode5->type->type_table[cltype17] == idtype18;
+var18 = var_tkwmethnode5->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17212);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16717);
 exit(1);
 }
 var_pmethidnode6 = var_nodearraylist5;
 /* <var_pmethidnode6:nullable Object> isa nullable AMethid */
-cltype20 = type_nullable_parser_nodes__AMethid.color;
-idtype21 = type_nullable_parser_nodes__AMethid.id;
+cltype22 = type_nullable_parser_nodes__AMethid.color;
+idtype23 = type_nullable_parser_nodes__AMethid.id;
 if(var_pmethidnode6 == NULL) {
-var19 = 1;
+var21 = 1;
 } else {
-if(cltype20 >= var_pmethidnode6->type->table_size) {
-var19 = 0;
+if(cltype22 >= var_pmethidnode6->type->table_size) {
+var21 = 0;
 } else {
-var19 = var_pmethidnode6->type->type_table[cltype20] == idtype21;
+var21 = var_pmethidnode6->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17214);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16719);
 exit(1);
 }
 var_psignaturenode7 = var_nodearraylist6;
 /* <var_psignaturenode7:nullable Object> isa nullable ASignature */
-cltype23 = type_nullable_parser_nodes__ASignature.color;
-idtype24 = type_nullable_parser_nodes__ASignature.id;
+cltype25 = type_nullable_parser_nodes__ASignature.color;
+idtype26 = type_nullable_parser_nodes__ASignature.id;
 if(var_psignaturenode7 == NULL) {
-var22 = 1;
+var24 = 1;
 } else {
-if(cltype23 >= var_psignaturenode7->type->table_size) {
-var22 = 0;
+if(cltype25 >= var_psignaturenode7->type->table_size) {
+var24 = 0;
 } else {
-var22 = var_psignaturenode7->type->type_table[cltype23] == idtype24;
+var24 = var_psignaturenode7->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17216);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16721);
 exit(1);
 }
-var_pexterncallsnode9 = var_nodearraylist7;
+var_pexterncallsnode9 = var_nodearraylist9;
 /* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
-cltype26 = type_nullable_parser_nodes__AExternCalls.color;
-idtype27 = type_nullable_parser_nodes__AExternCalls.id;
+cltype28 = type_nullable_parser_nodes__AExternCalls.color;
+idtype29 = type_nullable_parser_nodes__AExternCalls.id;
 if(var_pexterncallsnode9 == NULL) {
-var25 = 1;
+var27 = 1;
 } else {
-if(cltype26 >= var_pexterncallsnode9->type->table_size) {
-var25 = 0;
+if(cltype28 >= var_pexterncallsnode9->type->table_size) {
+var27 = 0;
 } else {
-var25 = var_pexterncallsnode9->type->type_table[cltype26] == idtype27;
+var27 = var_pexterncallsnode9->type->type_table[cltype28] == idtype29;
 }
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17218);
+if (!var27) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16723);
 exit(1);
 }
-var_pexterncodeblocknode10 = var_nodearraylist8;
+var_pexterncodeblocknode10 = var_nodearraylist10;
 /* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
-cltype29 = type_nullable_parser_nodes__AExternCodeBlock.color;
-idtype30 = type_nullable_parser_nodes__AExternCodeBlock.id;
+cltype31 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype32 = type_nullable_parser_nodes__AExternCodeBlock.id;
 if(var_pexterncodeblocknode10 == NULL) {
-var28 = 1;
+var30 = 1;
 } else {
-if(cltype29 >= var_pexterncodeblocknode10->type->table_size) {
-var28 = 0;
+if(cltype31 >= var_pexterncodeblocknode10->type->table_size) {
+var30 = 0;
 } else {
-var28 = var_pexterncodeblocknode10->type->type_table[cltype29] == idtype30;
+var30 = var_pexterncodeblocknode10->type->type_table[cltype31] == idtype32;
 }
 }
-if (!var28) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17220);
+if (!var30) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16725);
 exit(1);
 }
-var31 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
-var32 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var31->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var31, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var32, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var31:AExternMethPropdef>*/;
-CHECK_NEW_parser_nodes__AExternMethPropdef(var31);
-var_ppropdefnode1 = var31;
+var33 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var34 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var33, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var34, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var33:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var33);
+var_ppropdefnode1 = var33;
 var_node_list = var_ppropdefnode1;
-var33 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction380> */
-var34 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var33) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var34, var_node_list) /* push on <var_p:Parser>*/;
+var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction374> */
+var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction380#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction380__action(val* self, val* p0) {
-parser__ReduceAction380__action(self, p0);
-RET_LABEL:;
+/* method parser#ReduceAction374#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction374__action(val* self, val* p0) {
+parser__ReduceAction374__action(self, p0);
+RET_LABEL:;
 }
-/* method parser#ReduceAction381#action for (self: ReduceAction381, Parser) */
-void parser__ReduceAction381__action(val* self, val* p0) {
+/* method parser#ReduceAction375#action for (self: ReduceAction375, Parser) */
+void parser__ReduceAction375__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var5 /* : Bool */;
-int cltype;
-int idtype;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var6 /* : Bool */;
-int cltype7;
-int idtype8;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
-val* var15 /* : AAttrPropdef */;
-val* var16 /* : null */;
-val* var17 /* : null */;
-val* var18 /* : null */;
-val* var19 /* : null */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var23 /* : Int */;
-long var24 /* : Int */;
-var_p = p0;
-var = NULL;
-var_node_list = var;
-var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var3;
-var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var4;
-var_pdocnode2 = var_nodearraylist1;
-/* <var_pdocnode2:nullable Object> isa nullable ADoc */
-cltype = type_nullable_parser_nodes__ADoc.color;
-idtype = type_nullable_parser_nodes__ADoc.id;
-if(var_pdocnode2 == NULL) {
-var5 = 1;
-} else {
-if(cltype >= var_pdocnode2->type->table_size) {
-var5 = 0;
-} else {
-var5 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17246);
-exit(1);
-}
-var_pvisibilitynode6 = var_nodearraylist2;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype7 = type_nullable_parser_nodes__AVisibility.color;
-idtype8 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var6 = 1;
-} else {
-if(cltype7 >= var_pvisibilitynode6->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_pvisibilitynode6->type->type_table[cltype7] == idtype8;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17248);
-exit(1);
-}
-var_tkwvarnode7 = var_nodearraylist3;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype10 = type_nullable_parser_nodes__TKwvar.color;
-idtype11 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var9 = 1;
-} else {
-if(cltype10 >= var_tkwvarnode7->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_tkwvarnode7->type->type_table[cltype10] == idtype11;
-}
-}
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17250);
-exit(1);
-}
-var_tattridnode8 = var_nodearraylist4;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype13 = type_nullable_parser_nodes__TAttrid.color;
-idtype14 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var12 = 1;
-} else {
-if(cltype13 >= var_tattridnode8->type->table_size) {
-var12 = 0;
-} else {
-var12 = var_tattridnode8->type->type_table[cltype13] == idtype14;
-}
-}
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17252);
-exit(1);
-}
-var15 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var16 = NULL;
-var17 = NULL;
-var18 = NULL;
-var19 = NULL;
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var15->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var15, var_pdocnode2, var16, var17, var18, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var19, var20, var21, var22) /* init_aattrpropdef on <var15:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var15);
-var_ppropdefnode1 = var15;
-var_node_list = var_ppropdefnode1;
-var23 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction381> */
-var24 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var23) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var24, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction381#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction381__action(val* self, val* p0) {
-parser__ReduceAction381__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction382#action for (self: ReduceAction382, Parser) */
-void parser__ReduceAction382__action(val* self, val* p0) {
-val* var_p /* var p: Parser */;
-val* var /* : null */;
-val* var_node_list /* var node_list: nullable Object */;
-val* var1 /* : nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var5 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var2 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var10 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var6 /* : Bool */;
+short int var11 /* : Bool */;
 int cltype;
 int idtype;
-val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var19 /* : AAttrPropdef */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var23 /* : null */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var26 /* : Int */;
-long var27 /* : Int */;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
+val* var_tstringnode8 /* var tstringnode8: nullable Object */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+val* var33 /* : AExternMethPropdef */;
+val* var34 /* : null */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
+long var35 /* : Int */;
+long var36 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var1;
+var_nodearraylist10 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var2;
+var_nodearraylist9 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var3;
+var_nodearraylist8 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var4;
+var_nodearraylist7 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var5;
+var_nodearraylist6 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist5 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var9;
+var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var10;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var6 = 1;
+var11 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var6 = 0;
+var11 = 0;
 } else {
-var6 = var_pdocnode2->type->type_table[cltype] == idtype;
+var11 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17281);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16757);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist2;
-/* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype8 = type_nullable_parser_nodes__TKwredef.color;
-idtype9 = type_nullable_parser_nodes__TKwredef.id;
-if(var_tkwredefnode5 == NULL) {
-var7 = 1;
-} else {
-if(cltype8 >= var_tkwredefnode5->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_tkwredefnode5->type->type_table[cltype8] == idtype9;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17283);
-exit(1);
-}
-var_pvisibilitynode6 = var_nodearraylist3;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype11 = type_nullable_parser_nodes__AVisibility.color;
-idtype12 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var10 = 1;
-} else {
-if(cltype11 >= var_pvisibilitynode6->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
-}
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17285);
-exit(1);
-}
-var_tkwvarnode7 = var_nodearraylist4;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype14 = type_nullable_parser_nodes__TKwvar.color;
-idtype15 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var13 = 1;
-} else {
-if(cltype14 >= var_tkwvarnode7->type->table_size) {
-var13 = 0;
-} else {
-var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
-}
-}
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17287);
-exit(1);
-}
-var_tattridnode8 = var_nodearraylist5;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype17 = type_nullable_parser_nodes__TAttrid.color;
-idtype18 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var16 = 1;
-} else {
-if(cltype17 >= var_tattridnode8->type->table_size) {
-var16 = 0;
-} else {
-var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
-}
-}
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17289);
-exit(1);
-}
-var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-var23 = NULL;
-var24 = NULL;
-var25 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var21, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var22, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var19);
-var_ppropdefnode1 = var19;
-var_node_list = var_ppropdefnode1;
-var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction382> */
-var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction382#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction382__action(val* self, val* p0) {
-parser__ReduceAction382__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction383#action for (self: ReduceAction383, Parser) */
-void parser__ReduceAction383__action(val* self, val* p0) {
-val* var_p /* var p: Parser */;
-val* var /* : null */;
-val* var_node_list /* var node_list: nullable Object */;
-val* var1 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var5 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var6 /* : Bool */;
-int cltype;
-int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var19 /* : AAttrPropdef */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var23 /* : null */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var26 /* : Int */;
-long var27 /* : Int */;
-var_p = p0;
-var = NULL;
-var_node_list = var;
-var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var3;
-var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var4;
-var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var5;
-var_pdocnode2 = var_nodearraylist1;
-/* <var_pdocnode2:nullable Object> isa nullable ADoc */
-cltype = type_nullable_parser_nodes__ADoc.color;
-idtype = type_nullable_parser_nodes__ADoc.id;
-if(var_pdocnode2 == NULL) {
-var6 = 1;
-} else {
-if(cltype >= var_pdocnode2->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17318);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype8 = type_nullable_parser_nodes__AAble.color;
-idtype9 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var7 = 1;
-} else {
-if(cltype8 >= var_pablenode3->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_pablenode3->type->type_table[cltype8] == idtype9;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17320);
-exit(1);
-}
-var_pvisibilitynode6 = var_nodearraylist3;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype11 = type_nullable_parser_nodes__AVisibility.color;
-idtype12 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var10 = 1;
-} else {
-if(cltype11 >= var_pvisibilitynode6->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
-}
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17322);
-exit(1);
-}
-var_tkwvarnode7 = var_nodearraylist4;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype14 = type_nullable_parser_nodes__TKwvar.color;
-idtype15 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var13 = 1;
-} else {
-if(cltype14 >= var_tkwvarnode7->type->table_size) {
-var13 = 0;
-} else {
-var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
-}
-}
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17324);
-exit(1);
-}
-var_tattridnode8 = var_nodearraylist5;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype17 = type_nullable_parser_nodes__TAttrid.color;
-idtype18 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var16 = 1;
-} else {
-if(cltype17 >= var_tattridnode8->type->table_size) {
-var16 = 0;
+var_pvisibilitynode4 = var_nodearraylist2;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype13 = type_nullable_parser_nodes__AVisibility.color;
+idtype14 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
+var12 = 1;
 } else {
-var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
-}
-}
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17326);
-exit(1);
-}
-var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-var23 = NULL;
-var24 = NULL;
-var25 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var_pablenode3, var20, var21, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var22, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var19);
-var_ppropdefnode1 = var19;
-var_node_list = var_ppropdefnode1;
-var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction383> */
-var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction383#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction383__action(val* self, val* p0) {
-parser__ReduceAction383__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction384#action for (self: ReduceAction384, Parser) */
-void parser__ReduceAction384__action(val* self, val* p0) {
-val* var_p /* var p: Parser */;
-val* var /* : null */;
-val* var_node_list /* var node_list: nullable Object */;
-val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var5 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var6 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
-int cltype;
-int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
-val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var23 /* : AAttrPropdef */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
-long var30 /* : Int */;
-var_p = p0;
-var = NULL;
-var_node_list = var;
-var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
-var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
-var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
-var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
-var_pdocnode2 = var_nodearraylist1;
-/* <var_pdocnode2:nullable Object> isa nullable ADoc */
-cltype = type_nullable_parser_nodes__ADoc.color;
-idtype = type_nullable_parser_nodes__ADoc.id;
-if(var_pdocnode2 == NULL) {
-var7 = 1;
+if(cltype13 >= var_pvisibilitynode4->type->table_size) {
+var12 = 0;
 } else {
-if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
+var12 = var_pvisibilitynode4->type->type_table[cltype13] == idtype14;
+}
+}
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16759);
+exit(1);
+}
+var_tkwmethnode5 = var_nodearraylist3;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype16 = type_nullable_parser_nodes__TKwmeth.color;
+idtype17 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
+var15 = 1;
 } else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+if(cltype16 >= var_tkwmethnode5->type->table_size) {
+var15 = 0;
+} else {
+var15 = var_tkwmethnode5->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17356);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16761);
 exit(1);
 }
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype9 = type_nullable_parser_nodes__AAble.color;
-idtype10 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var8 = 1;
+var_pmethidnode6 = var_nodearraylist4;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype19 = type_nullable_parser_nodes__AMethid.color;
+idtype20 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
+var18 = 1;
 } else {
-if(cltype9 >= var_pablenode3->type->table_size) {
-var8 = 0;
+if(cltype19 >= var_pmethidnode6->type->table_size) {
+var18 = 0;
 } else {
-var8 = var_pablenode3->type->type_table[cltype9] == idtype10;
+var18 = var_pmethidnode6->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17358);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16763);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist3;
-/* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype12 = type_nullable_parser_nodes__TKwredef.color;
-idtype13 = type_nullable_parser_nodes__TKwredef.id;
-if(var_tkwredefnode5 == NULL) {
-var11 = 1;
+var_psignaturenode7 = var_nodearraylist5;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype22 = type_nullable_parser_nodes__ASignature.color;
+idtype23 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
+var21 = 1;
 } else {
-if(cltype12 >= var_tkwredefnode5->type->table_size) {
-var11 = 0;
+if(cltype22 >= var_psignaturenode7->type->table_size) {
+var21 = 0;
 } else {
-var11 = var_tkwredefnode5->type->type_table[cltype12] == idtype13;
+var21 = var_psignaturenode7->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17360);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16765);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var14 = 1;
+var_tstringnode8 = var_nodearraylist8;
+/* <var_tstringnode8:nullable Object> isa nullable TString */
+cltype25 = type_nullable_parser_nodes__TString.color;
+idtype26 = type_nullable_parser_nodes__TString.id;
+if(var_tstringnode8 == NULL) {
+var24 = 1;
 } else {
-if(cltype15 >= var_pvisibilitynode6->type->table_size) {
-var14 = 0;
+if(cltype25 >= var_tstringnode8->type->table_size) {
+var24 = 0;
 } else {
-var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
+var24 = var_tstringnode8->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17362);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16767);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype18 = type_nullable_parser_nodes__TKwvar.color;
-idtype19 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var17 = 1;
+var_pexterncallsnode9 = var_nodearraylist9;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype28 = type_nullable_parser_nodes__AExternCalls.color;
+idtype29 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
+var27 = 1;
 } else {
-if(cltype18 >= var_tkwvarnode7->type->table_size) {
-var17 = 0;
+if(cltype28 >= var_pexterncallsnode9->type->table_size) {
+var27 = 0;
 } else {
-var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
+var27 = var_pexterncallsnode9->type->type_table[cltype28] == idtype29;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17364);
+if (!var27) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16769);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype21 = type_nullable_parser_nodes__TAttrid.color;
-idtype22 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var20 = 1;
+var_pexterncodeblocknode10 = var_nodearraylist10;
+/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
+cltype31 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype32 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_pexterncodeblocknode10 == NULL) {
+var30 = 1;
 } else {
-if(cltype21 >= var_tattridnode8->type->table_size) {
-var20 = 0;
+if(cltype31 >= var_pexterncodeblocknode10->type->table_size) {
+var30 = 0;
 } else {
-var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
+var30 = var_pexterncodeblocknode10->type->type_table[cltype31] == idtype32;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17366);
+if (!var30) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16771);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var24 = NULL;
-var25 = NULL;
-var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var_pablenode3, var24, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
-var_ppropdefnode1 = var23;
+var33 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var34 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var33, var_pdocnode2, var34, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var33:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var33);
+var_ppropdefnode1 = var33;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction384> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction375> */
+var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction384#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction384__action(val* self, val* p0) {
-parser__ReduceAction384__action(self, p0);
+/* method parser#ReduceAction375#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction375__action(val* self, val* p0) {
+parser__ReduceAction375__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction385#action for (self: ReduceAction385, Parser) */
-void parser__ReduceAction385__action(val* self, val* p0) {
+/* method parser#ReduceAction376#action for (self: ReduceAction376, Parser) */
+void parser__ReduceAction376__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist11 /* var nodearraylist11: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var5 /* : nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var9 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var10 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var11 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var6 /* : Bool */;
+short int var12 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
 short int var13 /* : Bool */;
 int cltype14;
 int idtype15;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
 short int var16 /* : Bool */;
 int cltype17;
 int idtype18;
-val* var19 /* : AAttrPropdef */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var23 /* : null */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var26 /* : Int */;
-long var27 /* : Int */;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
+val* var_tstringnode8 /* var tstringnode8: nullable Object */;
+short int var28 /* : Bool */;
+int cltype29;
+int idtype30;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
+short int var31 /* : Bool */;
+int cltype32;
+int idtype33;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+short int var34 /* : Bool */;
+int cltype35;
+int idtype36;
+val* var37 /* : AExternMethPropdef */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
+long var38 /* : Int */;
+long var39 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var1;
+var_nodearraylist11 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var2;
+var_nodearraylist10 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var3;
+var_nodearraylist9 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var4;
+var_nodearraylist8 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var5;
+var_nodearraylist7 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist6 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist5 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var9;
+var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var10;
+var11 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var11;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var6 = 1;
+var12 = 1;
+} else {
+if(cltype >= var_pdocnode2->type->table_size) {
+var12 = 0;
+} else {
+var12 = var_pdocnode2->type->type_table[cltype] == idtype;
+}
+}
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16804);
+exit(1);
+}
+var_tkwredefnode3 = var_nodearraylist2;
+/* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
+cltype14 = type_nullable_parser_nodes__TKwredef.color;
+idtype15 = type_nullable_parser_nodes__TKwredef.id;
+if(var_tkwredefnode3 == NULL) {
+var13 = 1;
 } else {
-if(cltype >= var_pdocnode2->type->table_size) {
-var6 = 0;
+if(cltype14 >= var_tkwredefnode3->type->table_size) {
+var13 = 0;
 } else {
-var6 = var_pdocnode2->type->type_table[cltype] == idtype;
+var13 = var_tkwredefnode3->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17395);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16806);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype8 = type_nullable_parser_nodes__AAble.color;
-idtype9 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var7 = 1;
+var_pvisibilitynode4 = var_nodearraylist3;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype17 = type_nullable_parser_nodes__AVisibility.color;
+idtype18 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
+var16 = 1;
 } else {
-if(cltype8 >= var_pablenode4->type->table_size) {
-var7 = 0;
+if(cltype17 >= var_pvisibilitynode4->type->table_size) {
+var16 = 0;
 } else {
-var7 = var_pablenode4->type->type_table[cltype8] == idtype9;
+var16 = var_pvisibilitynode4->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17397);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16808);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype11 = type_nullable_parser_nodes__AVisibility.color;
-idtype12 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var10 = 1;
+var_tkwmethnode5 = var_nodearraylist4;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype20 = type_nullable_parser_nodes__TKwmeth.color;
+idtype21 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
+var19 = 1;
 } else {
-if(cltype11 >= var_pvisibilitynode6->type->table_size) {
-var10 = 0;
+if(cltype20 >= var_tkwmethnode5->type->table_size) {
+var19 = 0;
 } else {
-var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
+var19 = var_tkwmethnode5->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17399);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16810);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype14 = type_nullable_parser_nodes__TKwvar.color;
-idtype15 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var13 = 1;
+var_pmethidnode6 = var_nodearraylist5;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype23 = type_nullable_parser_nodes__AMethid.color;
+idtype24 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
+var22 = 1;
 } else {
-if(cltype14 >= var_tkwvarnode7->type->table_size) {
-var13 = 0;
+if(cltype23 >= var_pmethidnode6->type->table_size) {
+var22 = 0;
 } else {
-var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
+var22 = var_pmethidnode6->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17401);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16812);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype17 = type_nullable_parser_nodes__TAttrid.color;
-idtype18 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var16 = 1;
+var_psignaturenode7 = var_nodearraylist6;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype26 = type_nullable_parser_nodes__ASignature.color;
+idtype27 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
+var25 = 1;
 } else {
-if(cltype17 >= var_tattridnode8->type->table_size) {
-var16 = 0;
+if(cltype26 >= var_psignaturenode7->type->table_size) {
+var25 = 0;
 } else {
-var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
+var25 = var_psignaturenode7->type->type_table[cltype26] == idtype27;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17403);
+if (!var25) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16814);
 exit(1);
 }
-var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-var23 = NULL;
-var24 = NULL;
-var25 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var_pablenode4, var21, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var22, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var19);
-var_ppropdefnode1 = var19;
+var_tstringnode8 = var_nodearraylist9;
+/* <var_tstringnode8:nullable Object> isa nullable TString */
+cltype29 = type_nullable_parser_nodes__TString.color;
+idtype30 = type_nullable_parser_nodes__TString.id;
+if(var_tstringnode8 == NULL) {
+var28 = 1;
+} else {
+if(cltype29 >= var_tstringnode8->type->table_size) {
+var28 = 0;
+} else {
+var28 = var_tstringnode8->type->type_table[cltype29] == idtype30;
+}
+}
+if (!var28) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16816);
+exit(1);
+}
+var_pexterncallsnode9 = var_nodearraylist10;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype32 = type_nullable_parser_nodes__AExternCalls.color;
+idtype33 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
+var31 = 1;
+} else {
+if(cltype32 >= var_pexterncallsnode9->type->table_size) {
+var31 = 0;
+} else {
+var31 = var_pexterncallsnode9->type->type_table[cltype32] == idtype33;
+}
+}
+if (!var31) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16818);
+exit(1);
+}
+var_pexterncodeblocknode10 = var_nodearraylist11;
+/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
+cltype35 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype36 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_pexterncodeblocknode10 == NULL) {
+var34 = 1;
+} else {
+if(cltype35 >= var_pexterncodeblocknode10->type->table_size) {
+var34 = 0;
+} else {
+var34 = var_pexterncodeblocknode10->type->type_table[cltype35] == idtype36;
+}
+}
+if (!var34) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16820);
+exit(1);
+}
+var37 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var37->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var37, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var_tstringnode8, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var37:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var37);
+var_ppropdefnode1 = var37;
 var_node_list = var_ppropdefnode1;
-var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction385> */
-var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
+var38 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction376> */
+var39 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var38) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var39, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction385#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction385__action(val* self, val* p0) {
-parser__ReduceAction385__action(self, p0);
+/* method parser#ReduceAction376#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction376__action(val* self, val* p0) {
+parser__ReduceAction376__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction386#action for (self: ReduceAction386, Parser) */
-void parser__ReduceAction386__action(val* self, val* p0) {
+/* method parser#ReduceAction377#action for (self: ReduceAction377, Parser) */
+void parser__ReduceAction377__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3277,35 +3383,33 @@ val* var_pdocnode2 /* var pdocnode2: nullable Object */;
 short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
 short int var8 /* : Bool */;
 int cltype9;
 int idtype10;
-val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
 short int var11 /* : Bool */;
 int cltype12;
 int idtype13;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
 short int var14 /* : Bool */;
 int cltype15;
 int idtype16;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
 short int var17 /* : Bool */;
 int cltype18;
 int idtype19;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
 short int var20 /* : Bool */;
 int cltype21;
 int idtype22;
-val* var23 /* : AAttrPropdef */;
+val* var23 /* : AExternMethPropdef */;
 val* var24 /* : null */;
 val* var25 /* : null */;
 val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
-long var30 /* : Int */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
+long var27 /* : Int */;
+long var28 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
@@ -3335,303 +3439,333 @@ var7 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
 if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17433);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16848);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype9 = type_nullable_parser_nodes__AAble.color;
-idtype10 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
+var_pvisibilitynode4 = var_nodearraylist2;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype9 = type_nullable_parser_nodes__AVisibility.color;
+idtype10 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
 var8 = 1;
 } else {
-if(cltype9 >= var_pablenode4->type->table_size) {
+if(cltype9 >= var_pvisibilitynode4->type->table_size) {
 var8 = 0;
 } else {
-var8 = var_pablenode4->type->type_table[cltype9] == idtype10;
+var8 = var_pvisibilitynode4->type->type_table[cltype9] == idtype10;
 }
 }
 if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17435);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16850);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist3;
-/* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype12 = type_nullable_parser_nodes__TKwredef.color;
-idtype13 = type_nullable_parser_nodes__TKwredef.id;
-if(var_tkwredefnode5 == NULL) {
+var_tkwmethnode5 = var_nodearraylist3;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype12 = type_nullable_parser_nodes__TKwmeth.color;
+idtype13 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
 var11 = 1;
 } else {
-if(cltype12 >= var_tkwredefnode5->type->table_size) {
+if(cltype12 >= var_tkwmethnode5->type->table_size) {
 var11 = 0;
 } else {
-var11 = var_tkwredefnode5->type->type_table[cltype12] == idtype13;
+var11 = var_tkwmethnode5->type->type_table[cltype12] == idtype13;
 }
 }
 if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17437);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16852);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
+var_pmethidnode6 = var_nodearraylist4;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype15 = type_nullable_parser_nodes__AMethid.color;
+idtype16 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
 var14 = 1;
 } else {
-if(cltype15 >= var_pvisibilitynode6->type->table_size) {
+if(cltype15 >= var_pmethidnode6->type->table_size) {
 var14 = 0;
 } else {
-var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
+var14 = var_pmethidnode6->type->type_table[cltype15] == idtype16;
 }
 }
 if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17439);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16854);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype18 = type_nullable_parser_nodes__TKwvar.color;
-idtype19 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
+var_psignaturenode7 = var_nodearraylist5;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype18 = type_nullable_parser_nodes__ASignature.color;
+idtype19 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
 var17 = 1;
 } else {
-if(cltype18 >= var_tkwvarnode7->type->table_size) {
+if(cltype18 >= var_psignaturenode7->type->table_size) {
 var17 = 0;
 } else {
-var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
+var17 = var_psignaturenode7->type->type_table[cltype18] == idtype19;
 }
 }
 if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17441);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16856);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype21 = type_nullable_parser_nodes__TAttrid.color;
-idtype22 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
+var_pexterncodeblocknode10 = var_nodearraylist6;
+/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
+cltype21 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype22 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_pexterncodeblocknode10 == NULL) {
 var20 = 1;
 } else {
-if(cltype21 >= var_tattridnode8->type->table_size) {
+if(cltype21 >= var_pexterncodeblocknode10->type->table_size) {
 var20 = 0;
 } else {
-var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
+var20 = var_pexterncodeblocknode10->type->type_table[cltype21] == idtype22;
 }
 }
 if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17443);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16858);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var23 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
 var24 = NULL;
 var25 = NULL;
 var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var23, var_pdocnode2, var24, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var25, var26, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var23:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var23);
 var_ppropdefnode1 = var23;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction386> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var27 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction377> */
+var28 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var27) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var28, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction386#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction386__action(val* self, val* p0) {
-parser__ReduceAction386__action(self, p0);
+/* method parser#ReduceAction377#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction377__action(val* self, val* p0) {
+parser__ReduceAction377__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction387#action for (self: ReduceAction387, Parser) */
-void parser__ReduceAction387__action(val* self, val* p0) {
+/* method parser#ReduceAction378#action for (self: ReduceAction378, Parser) */
+void parser__ReduceAction378__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
 val* var6 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var23 /* : AAttrPropdef */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var26 /* : null */;
-val* var27 /* : null */;
+val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var27 /* : AExternMethPropdef */;
 val* var28 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
+val* var29 /* : null */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
 long var30 /* : Int */;
+long var31 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
+var_nodearraylist7 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
+var_nodearraylist6 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
+var_nodearraylist5 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
+var_nodearraylist4 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
+var_nodearraylist3 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
+var_nodearraylist2 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var7;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var7 = 1;
+var8 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
+var8 = 0;
 } else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+var8 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17473);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16887);
 exit(1);
 }
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype9 = type_nullable_parser_nodes__AAble.color;
-idtype10 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var8 = 1;
+var_tkwredefnode3 = var_nodearraylist2;
+/* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
+cltype10 = type_nullable_parser_nodes__TKwredef.color;
+idtype11 = type_nullable_parser_nodes__TKwredef.id;
+if(var_tkwredefnode3 == NULL) {
+var9 = 1;
 } else {
-if(cltype9 >= var_pablenode3->type->table_size) {
-var8 = 0;
+if(cltype10 >= var_tkwredefnode3->type->table_size) {
+var9 = 0;
 } else {
-var8 = var_pablenode3->type->type_table[cltype9] == idtype10;
+var9 = var_tkwredefnode3->type->type_table[cltype10] == idtype11;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17475);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16889);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype12 = type_nullable_parser_nodes__AAble.color;
-idtype13 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var11 = 1;
+var_pvisibilitynode4 = var_nodearraylist3;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype13 = type_nullable_parser_nodes__AVisibility.color;
+idtype14 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
+var12 = 1;
 } else {
-if(cltype12 >= var_pablenode4->type->table_size) {
-var11 = 0;
+if(cltype13 >= var_pvisibilitynode4->type->table_size) {
+var12 = 0;
 } else {
-var11 = var_pablenode4->type->type_table[cltype12] == idtype13;
+var12 = var_pvisibilitynode4->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17477);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16891);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var14 = 1;
+var_tkwmethnode5 = var_nodearraylist4;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype16 = type_nullable_parser_nodes__TKwmeth.color;
+idtype17 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
+var15 = 1;
 } else {
-if(cltype15 >= var_pvisibilitynode6->type->table_size) {
-var14 = 0;
+if(cltype16 >= var_tkwmethnode5->type->table_size) {
+var15 = 0;
 } else {
-var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
+var15 = var_tkwmethnode5->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17479);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16893);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype18 = type_nullable_parser_nodes__TKwvar.color;
-idtype19 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var17 = 1;
+var_pmethidnode6 = var_nodearraylist5;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype19 = type_nullable_parser_nodes__AMethid.color;
+idtype20 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
+var18 = 1;
 } else {
-if(cltype18 >= var_tkwvarnode7->type->table_size) {
-var17 = 0;
+if(cltype19 >= var_pmethidnode6->type->table_size) {
+var18 = 0;
 } else {
-var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
+var18 = var_pmethidnode6->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17481);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16895);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype21 = type_nullable_parser_nodes__TAttrid.color;
-idtype22 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var20 = 1;
+var_psignaturenode7 = var_nodearraylist6;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype22 = type_nullable_parser_nodes__ASignature.color;
+idtype23 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
+var21 = 1;
 } else {
-if(cltype21 >= var_tattridnode8->type->table_size) {
-var20 = 0;
+if(cltype22 >= var_psignaturenode7->type->table_size) {
+var21 = 0;
 } else {
-var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
+var21 = var_psignaturenode7->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17483);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16897);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var24 = NULL;
-var25 = NULL;
-var26 = NULL;
-var27 = NULL;
+var_pexterncodeblocknode10 = var_nodearraylist7;
+/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
+cltype25 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype26 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_pexterncodeblocknode10 == NULL) {
+var24 = 1;
+} else {
+if(cltype25 >= var_pexterncodeblocknode10->type->table_size) {
+var24 = 0;
+} else {
+var24 = var_pexterncodeblocknode10->type->type_table[cltype25] == idtype26;
+}
+}
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16899);
+exit(1);
+}
+var27 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
 var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var_pablenode3, var_pablenode4, var24, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
-var_ppropdefnode1 = var23;
+var29 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var27, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var28, var29, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var27:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var27);
+var_ppropdefnode1 = var27;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction387> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var30 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction378> */
+var31 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var30) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var31, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction387#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction387__action(val* self, val* p0) {
-parser__ReduceAction387__action(self, p0);
+/* method parser#ReduceAction378#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction378__action(val* self, val* p0) {
+parser__ReduceAction378__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction388#action for (self: ReduceAction388, Parser) */
-void parser__ReduceAction388__action(val* self, val* p0) {
+/* method parser#ReduceAction379#action for (self: ReduceAction379, Parser) */
+void parser__ReduceAction379__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3653,38 +3787,36 @@ val* var_pdocnode2 /* var pdocnode2: nullable Object */;
 short int var8 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
 short int var9 /* : Bool */;
 int cltype10;
 int idtype11;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
 short int var12 /* : Bool */;
 int cltype13;
 int idtype14;
-val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
 short int var15 /* : Bool */;
 int cltype16;
 int idtype17;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
 short int var18 /* : Bool */;
 int cltype19;
 int idtype20;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
 short int var21 /* : Bool */;
 int cltype22;
 int idtype23;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
 short int var24 /* : Bool */;
 int cltype25;
 int idtype26;
-val* var27 /* : AAttrPropdef */;
+val* var27 /* : AExternMethPropdef */;
 val* var28 /* : null */;
 val* var29 /* : null */;
-val* var30 /* : null */;
-val* var31 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var32 /* : Int */;
-long var33 /* : Int */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
+long var30 /* : Int */;
+long var31 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
@@ -3716,6210 +3848,6061 @@ var8 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
 if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17514);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16928);
 exit(1);
 }
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype10 = type_nullable_parser_nodes__AAble.color;
-idtype11 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
+var_pvisibilitynode4 = var_nodearraylist2;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype10 = type_nullable_parser_nodes__AVisibility.color;
+idtype11 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
 var9 = 1;
 } else {
-if(cltype10 >= var_pablenode3->type->table_size) {
+if(cltype10 >= var_pvisibilitynode4->type->table_size) {
 var9 = 0;
 } else {
-var9 = var_pablenode3->type->type_table[cltype10] == idtype11;
+var9 = var_pvisibilitynode4->type->type_table[cltype10] == idtype11;
 }
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17516);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16930);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype13 = type_nullable_parser_nodes__AAble.color;
-idtype14 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
+var_tkwmethnode5 = var_nodearraylist3;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype13 = type_nullable_parser_nodes__TKwmeth.color;
+idtype14 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
 var12 = 1;
 } else {
-if(cltype13 >= var_pablenode4->type->table_size) {
+if(cltype13 >= var_tkwmethnode5->type->table_size) {
 var12 = 0;
 } else {
-var12 = var_pablenode4->type->type_table[cltype13] == idtype14;
+var12 = var_tkwmethnode5->type->type_table[cltype13] == idtype14;
 }
 }
 if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17518);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16932);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist4;
-/* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype16 = type_nullable_parser_nodes__TKwredef.color;
-idtype17 = type_nullable_parser_nodes__TKwredef.id;
-if(var_tkwredefnode5 == NULL) {
+var_pmethidnode6 = var_nodearraylist4;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype16 = type_nullable_parser_nodes__AMethid.color;
+idtype17 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
 var15 = 1;
 } else {
-if(cltype16 >= var_tkwredefnode5->type->table_size) {
+if(cltype16 >= var_pmethidnode6->type->table_size) {
 var15 = 0;
 } else {
-var15 = var_tkwredefnode5->type->type_table[cltype16] == idtype17;
+var15 = var_pmethidnode6->type->type_table[cltype16] == idtype17;
 }
 }
 if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17520);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16934);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist5;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype19 = type_nullable_parser_nodes__AVisibility.color;
-idtype20 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
+var_psignaturenode7 = var_nodearraylist5;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype19 = type_nullable_parser_nodes__ASignature.color;
+idtype20 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
 var18 = 1;
 } else {
-if(cltype19 >= var_pvisibilitynode6->type->table_size) {
+if(cltype19 >= var_psignaturenode7->type->table_size) {
 var18 = 0;
 } else {
-var18 = var_pvisibilitynode6->type->type_table[cltype19] == idtype20;
+var18 = var_psignaturenode7->type->type_table[cltype19] == idtype20;
 }
 }
 if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17522);
-exit(1);
-}
-var_tkwvarnode7 = var_nodearraylist6;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype22 = type_nullable_parser_nodes__TKwvar.color;
-idtype23 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var21 = 1;
-} else {
-if(cltype22 >= var_tkwvarnode7->type->table_size) {
-var21 = 0;
-} else {
-var21 = var_tkwvarnode7->type->type_table[cltype22] == idtype23;
-}
-}
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17524);
-exit(1);
-}
-var_tattridnode8 = var_nodearraylist7;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype25 = type_nullable_parser_nodes__TAttrid.color;
-idtype26 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var24 = 1;
-} else {
-if(cltype25 >= var_tattridnode8->type->table_size) {
-var24 = 0;
-} else {
-var24 = var_tattridnode8->type->type_table[cltype25] == idtype26;
-}
-}
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17526);
-exit(1);
-}
-var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var28 = NULL;
-var29 = NULL;
-var30 = NULL;
-var31 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var_pablenode3, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var27);
-var_ppropdefnode1 = var27;
-var_node_list = var_ppropdefnode1;
-var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction388> */
-var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction388#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction388__action(val* self, val* p0) {
-parser__ReduceAction388__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction389#action for (self: ReduceAction389, Parser) */
-void parser__ReduceAction389__action(val* self, val* p0) {
-val* var_p /* var p: Parser */;
-val* var /* : null */;
-val* var_node_list /* var node_list: nullable Object */;
-val* var1 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var5 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var6 /* : Bool */;
-int cltype;
-int idtype;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var19 /* : AAttrPropdef */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var23 /* : null */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var26 /* : Int */;
-long var27 /* : Int */;
-var_p = p0;
-var = NULL;
-var_node_list = var;
-var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var3;
-var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var4;
-var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var5;
-var_pdocnode2 = var_nodearraylist1;
-/* <var_pdocnode2:nullable Object> isa nullable ADoc */
-cltype = type_nullable_parser_nodes__ADoc.color;
-idtype = type_nullable_parser_nodes__ADoc.id;
-if(var_pdocnode2 == NULL) {
-var6 = 1;
-} else {
-if(cltype >= var_pdocnode2->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17555);
-exit(1);
-}
-var_pvisibilitynode6 = var_nodearraylist2;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype8 = type_nullable_parser_nodes__AVisibility.color;
-idtype9 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var7 = 1;
-} else {
-if(cltype8 >= var_pvisibilitynode6->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_pvisibilitynode6->type->type_table[cltype8] == idtype9;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17557);
-exit(1);
-}
-var_tkwvarnode7 = var_nodearraylist3;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype11 = type_nullable_parser_nodes__TKwvar.color;
-idtype12 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var10 = 1;
-} else {
-if(cltype11 >= var_tkwvarnode7->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_tkwvarnode7->type->type_table[cltype11] == idtype12;
-}
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17559);
-exit(1);
-}
-var_tattridnode8 = var_nodearraylist4;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype14 = type_nullable_parser_nodes__TAttrid.color;
-idtype15 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var13 = 1;
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16936);
+exit(1);
+}
+var_pexterncallsnode9 = var_nodearraylist6;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype22 = type_nullable_parser_nodes__AExternCalls.color;
+idtype23 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
+var21 = 1;
 } else {
-if(cltype14 >= var_tattridnode8->type->table_size) {
-var13 = 0;
+if(cltype22 >= var_pexterncallsnode9->type->table_size) {
+var21 = 0;
 } else {
-var13 = var_tattridnode8->type->type_table[cltype14] == idtype15;
+var21 = var_pexterncallsnode9->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17561);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16938);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist5;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype17 = type_nullable_parser_nodes__AType.color;
-idtype18 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var16 = 1;
+var_pexterncodeblocknode10 = var_nodearraylist7;
+/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
+cltype25 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype26 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_pexterncodeblocknode10 == NULL) {
+var24 = 1;
 } else {
-if(cltype17 >= var_ptypenode10->type->table_size) {
-var16 = 0;
+if(cltype25 >= var_pexterncodeblocknode10->type->table_size) {
+var24 = 0;
 } else {
-var16 = var_ptypenode10->type->type_table[cltype17] == idtype18;
+var24 = var_pexterncodeblocknode10->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17563);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16940);
 exit(1);
 }
-var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-var23 = NULL;
-var24 = NULL;
-var25 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var21, var22, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var23, var_ptypenode10, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var19);
-var_ppropdefnode1 = var19;
+var27 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var28 = NULL;
+var29 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var27, var_pdocnode2, var28, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var29, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var27:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var27);
+var_ppropdefnode1 = var27;
 var_node_list = var_ppropdefnode1;
-var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction389> */
-var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
+var30 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction379> */
+var31 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var30) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var31, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction389#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction389__action(val* self, val* p0) {
-parser__ReduceAction389__action(self, p0);
+/* method parser#ReduceAction379#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction379__action(val* self, val* p0) {
+parser__ReduceAction379__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction390#action for (self: ReduceAction390, Parser) */
-void parser__ReduceAction390__action(val* self, val* p0) {
+/* method parser#ReduceAction380#action for (self: ReduceAction380, Parser) */
+void parser__ReduceAction380__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
 val* var6 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
-val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var23 /* : AAttrPropdef */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
-val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
-long var30 /* : Int */;
+val* var_tkwredefnode3 /* var tkwredefnode3: nullable Object */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+val* var_pvisibilitynode4 /* var pvisibilitynode4: nullable Object */;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
+val* var_tkwmethnode5 /* var tkwmethnode5: nullable Object */;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+val* var_pmethidnode6 /* var pmethidnode6: nullable Object */;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
+val* var_psignaturenode7 /* var psignaturenode7: nullable Object */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var_pexterncallsnode9 /* var pexterncallsnode9: nullable Object */;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
+val* var_pexterncodeblocknode10 /* var pexterncodeblocknode10: nullable Object */;
+short int var28 /* : Bool */;
+int cltype29;
+int idtype30;
+val* var31 /* : AExternMethPropdef */;
+val* var32 /* : null */;
+val* var_ppropdefnode1 /* var ppropdefnode1: nullable AExternMethPropdef */;
+long var33 /* : Int */;
+long var34 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
+var_nodearraylist3 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var7 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
+var9 = 0;
 } else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17593);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16970);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist2;
-/* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype9 = type_nullable_parser_nodes__TKwredef.color;
-idtype10 = type_nullable_parser_nodes__TKwredef.id;
-if(var_tkwredefnode5 == NULL) {
-var8 = 1;
+var_tkwredefnode3 = var_nodearraylist2;
+/* <var_tkwredefnode3:nullable Object> isa nullable TKwredef */
+cltype11 = type_nullable_parser_nodes__TKwredef.color;
+idtype12 = type_nullable_parser_nodes__TKwredef.id;
+if(var_tkwredefnode3 == NULL) {
+var10 = 1;
 } else {
-if(cltype9 >= var_tkwredefnode5->type->table_size) {
-var8 = 0;
+if(cltype11 >= var_tkwredefnode3->type->table_size) {
+var10 = 0;
 } else {
-var8 = var_tkwredefnode5->type->type_table[cltype9] == idtype10;
+var10 = var_tkwredefnode3->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17595);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16972);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype12 = type_nullable_parser_nodes__AVisibility.color;
-idtype13 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var11 = 1;
+var_pvisibilitynode4 = var_nodearraylist3;
+/* <var_pvisibilitynode4:nullable Object> isa nullable AVisibility */
+cltype14 = type_nullable_parser_nodes__AVisibility.color;
+idtype15 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode4 == NULL) {
+var13 = 1;
 } else {
-if(cltype12 >= var_pvisibilitynode6->type->table_size) {
-var11 = 0;
+if(cltype14 >= var_pvisibilitynode4->type->table_size) {
+var13 = 0;
 } else {
-var11 = var_pvisibilitynode6->type->type_table[cltype12] == idtype13;
+var13 = var_pvisibilitynode4->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17597);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16974);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype15 = type_nullable_parser_nodes__TKwvar.color;
-idtype16 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var14 = 1;
+var_tkwmethnode5 = var_nodearraylist4;
+/* <var_tkwmethnode5:nullable Object> isa nullable TKwmeth */
+cltype17 = type_nullable_parser_nodes__TKwmeth.color;
+idtype18 = type_nullable_parser_nodes__TKwmeth.id;
+if(var_tkwmethnode5 == NULL) {
+var16 = 1;
 } else {
-if(cltype15 >= var_tkwvarnode7->type->table_size) {
-var14 = 0;
+if(cltype17 >= var_tkwmethnode5->type->table_size) {
+var16 = 0;
+} else {
+var16 = var_tkwmethnode5->type->type_table[cltype17] == idtype18;
+}
+}
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16976);
+exit(1);
+}
+var_pmethidnode6 = var_nodearraylist5;
+/* <var_pmethidnode6:nullable Object> isa nullable AMethid */
+cltype20 = type_nullable_parser_nodes__AMethid.color;
+idtype21 = type_nullable_parser_nodes__AMethid.id;
+if(var_pmethidnode6 == NULL) {
+var19 = 1;
+} else {
+if(cltype20 >= var_pmethidnode6->type->table_size) {
+var19 = 0;
+} else {
+var19 = var_pmethidnode6->type->type_table[cltype20] == idtype21;
+}
+}
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16978);
+exit(1);
+}
+var_psignaturenode7 = var_nodearraylist6;
+/* <var_psignaturenode7:nullable Object> isa nullable ASignature */
+cltype23 = type_nullable_parser_nodes__ASignature.color;
+idtype24 = type_nullable_parser_nodes__ASignature.id;
+if(var_psignaturenode7 == NULL) {
+var22 = 1;
+} else {
+if(cltype23 >= var_psignaturenode7->type->table_size) {
+var22 = 0;
 } else {
-var14 = var_tkwvarnode7->type->type_table[cltype15] == idtype16;
+var22 = var_psignaturenode7->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17599);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16980);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype18 = type_nullable_parser_nodes__TAttrid.color;
-idtype19 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var17 = 1;
+var_pexterncallsnode9 = var_nodearraylist7;
+/* <var_pexterncallsnode9:nullable Object> isa nullable AExternCalls */
+cltype26 = type_nullable_parser_nodes__AExternCalls.color;
+idtype27 = type_nullable_parser_nodes__AExternCalls.id;
+if(var_pexterncallsnode9 == NULL) {
+var25 = 1;
 } else {
-if(cltype18 >= var_tattridnode8->type->table_size) {
-var17 = 0;
+if(cltype26 >= var_pexterncallsnode9->type->table_size) {
+var25 = 0;
 } else {
-var17 = var_tattridnode8->type->type_table[cltype18] == idtype19;
+var25 = var_pexterncallsnode9->type->type_table[cltype26] == idtype27;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17601);
+if (!var25) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16982);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist6;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype21 = type_nullable_parser_nodes__AType.color;
-idtype22 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var20 = 1;
+var_pexterncodeblocknode10 = var_nodearraylist8;
+/* <var_pexterncodeblocknode10:nullable Object> isa nullable AExternCodeBlock */
+cltype29 = type_nullable_parser_nodes__AExternCodeBlock.color;
+idtype30 = type_nullable_parser_nodes__AExternCodeBlock.id;
+if(var_pexterncodeblocknode10 == NULL) {
+var28 = 1;
 } else {
-if(cltype21 >= var_ptypenode10->type->table_size) {
-var20 = 0;
+if(cltype29 >= var_pexterncodeblocknode10->type->table_size) {
+var28 = 0;
 } else {
-var20 = var_ptypenode10->type->type_table[cltype21] == idtype22;
+var28 = var_pexterncodeblocknode10->type->type_table[cltype29] == idtype30;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17603);
+if (!var28) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 16984);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var24 = NULL;
-var25 = NULL;
-var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var25, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var26, var_ptypenode10, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
-var_ppropdefnode1 = var23;
+var31 = NEW_parser_nodes__AExternMethPropdef(&type_parser_nodes__AExternMethPropdef);
+var32 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var31->class->vft[COLOR_parser_prod__AExternMethPropdef__init_aexternmethpropdef]))(var31, var_pdocnode2, var_tkwredefnode3, var_pvisibilitynode4, var_tkwmethnode5, var_pmethidnode6, var_psignaturenode7, var32, var_pexterncallsnode9, var_pexterncodeblocknode10) /* init_aexternmethpropdef on <var31:AExternMethPropdef>*/;
+CHECK_NEW_parser_nodes__AExternMethPropdef(var31);
+var_ppropdefnode1 = var31;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction390> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var33 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction380> */
+var34 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var33) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var34, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction390#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction390__action(val* self, val* p0) {
-parser__ReduceAction390__action(self, p0);
+/* method parser#ReduceAction380#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction380__action(val* self, val* p0) {
+parser__ReduceAction380__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction391#action for (self: ReduceAction391, Parser) */
-void parser__ReduceAction391__action(val* self, val* p0) {
+/* method parser#ReduceAction381#action for (self: ReduceAction381, Parser) */
+void parser__ReduceAction381__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
+short int var5 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
+short int var6 /* : Bool */;
+int cltype7;
+int idtype8;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var23 /* : AAttrPropdef */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
+val* var15 /* : AAttrPropdef */;
+val* var16 /* : null */;
+val* var17 /* : null */;
+val* var18 /* : null */;
+val* var19 /* : null */;
+val* var20 /* : null */;
+val* var21 /* : null */;
+val* var22 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
-long var30 /* : Int */;
+long var23 /* : Int */;
+long var24 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
+var_nodearraylist4 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
+var_nodearraylist3 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
+var_nodearraylist2 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
-var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
-var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
+var_nodearraylist1 = var4;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var7 = 1;
+var5 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17633);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype9 = type_nullable_parser_nodes__AAble.color;
-idtype10 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var8 = 1;
-} else {
-if(cltype9 >= var_pablenode3->type->table_size) {
-var8 = 0;
+var5 = 0;
 } else {
-var8 = var_pablenode3->type->type_table[cltype9] == idtype10;
+var5 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17635);
+if (!var5) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17010);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
+var_pvisibilitynode6 = var_nodearraylist2;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype12 = type_nullable_parser_nodes__AVisibility.color;
-idtype13 = type_nullable_parser_nodes__AVisibility.id;
+cltype7 = type_nullable_parser_nodes__AVisibility.color;
+idtype8 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var11 = 1;
+var6 = 1;
 } else {
-if(cltype12 >= var_pvisibilitynode6->type->table_size) {
-var11 = 0;
+if(cltype7 >= var_pvisibilitynode6->type->table_size) {
+var6 = 0;
 } else {
-var11 = var_pvisibilitynode6->type->type_table[cltype12] == idtype13;
+var6 = var_pvisibilitynode6->type->type_table[cltype7] == idtype8;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17637);
+if (!var6) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17012);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
+var_tkwvarnode7 = var_nodearraylist3;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype15 = type_nullable_parser_nodes__TKwvar.color;
-idtype16 = type_nullable_parser_nodes__TKwvar.id;
+cltype10 = type_nullable_parser_nodes__TKwvar.color;
+idtype11 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var14 = 1;
+var9 = 1;
 } else {
-if(cltype15 >= var_tkwvarnode7->type->table_size) {
-var14 = 0;
+if(cltype10 >= var_tkwvarnode7->type->table_size) {
+var9 = 0;
 } else {
-var14 = var_tkwvarnode7->type->type_table[cltype15] == idtype16;
+var9 = var_tkwvarnode7->type->type_table[cltype10] == idtype11;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17639);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17014);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
+var_tattridnode8 = var_nodearraylist4;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype18 = type_nullable_parser_nodes__TAttrid.color;
-idtype19 = type_nullable_parser_nodes__TAttrid.id;
+cltype13 = type_nullable_parser_nodes__TAttrid.color;
+idtype14 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var17 = 1;
-} else {
-if(cltype18 >= var_tattridnode8->type->table_size) {
-var17 = 0;
-} else {
-var17 = var_tattridnode8->type->type_table[cltype18] == idtype19;
-}
-}
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17641);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist6;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype21 = type_nullable_parser_nodes__AType.color;
-idtype22 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var20 = 1;
+var12 = 1;
 } else {
-if(cltype21 >= var_ptypenode10->type->table_size) {
-var20 = 0;
+if(cltype13 >= var_tattridnode8->type->table_size) {
+var12 = 0;
 } else {
-var20 = var_ptypenode10->type->type_table[cltype21] == idtype22;
+var12 = var_tattridnode8->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17643);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17016);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var24 = NULL;
-var25 = NULL;
-var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var_pablenode3, var24, var25, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var26, var_ptypenode10, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
-var_ppropdefnode1 = var23;
+var15 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var16 = NULL;
+var17 = NULL;
+var18 = NULL;
+var19 = NULL;
+var20 = NULL;
+var21 = NULL;
+var22 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var15->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var15, var_pdocnode2, var16, var17, var18, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var19, var20, var21, var22) /* init_aattrpropdef on <var15:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var15);
+var_ppropdefnode1 = var15;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction391> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var23 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction381> */
+var24 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var23) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var24, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction391#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction391__action(val* self, val* p0) {
-parser__ReduceAction391__action(self, p0);
+/* method parser#ReduceAction381#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction381__action(val* self, val* p0) {
+parser__ReduceAction381__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction392#action for (self: ReduceAction392, Parser) */
-void parser__ReduceAction392__action(val* self, val* p0) {
+/* method parser#ReduceAction382#action for (self: ReduceAction382, Parser) */
+void parser__ReduceAction382__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var8 /* : Bool */;
+short int var6 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+short int var7 /* : Bool */;
+int cltype8;
+int idtype9;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var27 /* : AAttrPropdef */;
-val* var28 /* : null */;
-val* var29 /* : null */;
-val* var30 /* : null */;
-val* var31 /* : null */;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+val* var19 /* : AAttrPropdef */;
+val* var20 /* : null */;
+val* var21 /* : null */;
+val* var22 /* : null */;
+val* var23 /* : null */;
+val* var24 /* : null */;
+val* var25 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var32 /* : Int */;
-long var33 /* : Int */;
+long var26 /* : Int */;
+long var27 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var1;
+var_nodearraylist5 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var2;
+var_nodearraylist4 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var3;
+var_nodearraylist3 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var4;
+var_nodearraylist2 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var5;
-var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var7;
+var_nodearraylist1 = var5;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var8 = 1;
+var6 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var8 = 0;
-} else {
-var8 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17674);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype10 = type_nullable_parser_nodes__AAble.color;
-idtype11 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var9 = 1;
-} else {
-if(cltype10 >= var_pablenode3->type->table_size) {
-var9 = 0;
+var6 = 0;
 } else {
-var9 = var_pablenode3->type->type_table[cltype10] == idtype11;
+var6 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17676);
+if (!var6) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17045);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist3;
+var_tkwredefnode5 = var_nodearraylist2;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype13 = type_nullable_parser_nodes__TKwredef.color;
-idtype14 = type_nullable_parser_nodes__TKwredef.id;
+cltype8 = type_nullable_parser_nodes__TKwredef.color;
+idtype9 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var12 = 1;
+var7 = 1;
 } else {
-if(cltype13 >= var_tkwredefnode5->type->table_size) {
-var12 = 0;
+if(cltype8 >= var_tkwredefnode5->type->table_size) {
+var7 = 0;
 } else {
-var12 = var_tkwredefnode5->type->type_table[cltype13] == idtype14;
+var7 = var_tkwredefnode5->type->type_table[cltype8] == idtype9;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17678);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17047);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
+var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype16 = type_nullable_parser_nodes__AVisibility.color;
-idtype17 = type_nullable_parser_nodes__AVisibility.id;
+cltype11 = type_nullable_parser_nodes__AVisibility.color;
+idtype12 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var15 = 1;
+var10 = 1;
 } else {
-if(cltype16 >= var_pvisibilitynode6->type->table_size) {
-var15 = 0;
+if(cltype11 >= var_pvisibilitynode6->type->table_size) {
+var10 = 0;
 } else {
-var15 = var_pvisibilitynode6->type->type_table[cltype16] == idtype17;
+var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17680);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17049);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
+var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype19 = type_nullable_parser_nodes__TKwvar.color;
-idtype20 = type_nullable_parser_nodes__TKwvar.id;
+cltype14 = type_nullable_parser_nodes__TKwvar.color;
+idtype15 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var18 = 1;
+var13 = 1;
 } else {
-if(cltype19 >= var_tkwvarnode7->type->table_size) {
-var18 = 0;
+if(cltype14 >= var_tkwvarnode7->type->table_size) {
+var13 = 0;
 } else {
-var18 = var_tkwvarnode7->type->type_table[cltype19] == idtype20;
+var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17682);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17051);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
+var_tattridnode8 = var_nodearraylist5;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype22 = type_nullable_parser_nodes__TAttrid.color;
-idtype23 = type_nullable_parser_nodes__TAttrid.id;
+cltype17 = type_nullable_parser_nodes__TAttrid.color;
+idtype18 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var21 = 1;
-} else {
-if(cltype22 >= var_tattridnode8->type->table_size) {
-var21 = 0;
-} else {
-var21 = var_tattridnode8->type->type_table[cltype22] == idtype23;
-}
-}
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17684);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist7;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype25 = type_nullable_parser_nodes__AType.color;
-idtype26 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var24 = 1;
+var16 = 1;
 } else {
-if(cltype25 >= var_ptypenode10->type->table_size) {
-var24 = 0;
+if(cltype17 >= var_tattridnode8->type->table_size) {
+var16 = 0;
 } else {
-var24 = var_ptypenode10->type->type_table[cltype25] == idtype26;
+var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17686);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17053);
 exit(1);
 }
-var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var28 = NULL;
-var29 = NULL;
-var30 = NULL;
-var31 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var_pablenode3, var28, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var27);
-var_ppropdefnode1 = var27;
+var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var20 = NULL;
+var21 = NULL;
+var22 = NULL;
+var23 = NULL;
+var24 = NULL;
+var25 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var21, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var22, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var19);
+var_ppropdefnode1 = var19;
 var_node_list = var_ppropdefnode1;
-var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction392> */
-var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
+var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction382> */
+var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction392#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction392__action(val* self, val* p0) {
-parser__ReduceAction392__action(self, p0);
+/* method parser#ReduceAction382#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction382__action(val* self, val* p0) {
+parser__ReduceAction382__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction393#action for (self: ReduceAction393, Parser) */
-void parser__ReduceAction393__action(val* self, val* p0) {
+/* method parser#ReduceAction383#action for (self: ReduceAction383, Parser) */
+void parser__ReduceAction383__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
+short int var6 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var7 /* : Bool */;
+int cltype8;
+int idtype9;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var23 /* : AAttrPropdef */;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+val* var19 /* : AAttrPropdef */;
+val* var20 /* : null */;
+val* var21 /* : null */;
+val* var22 /* : null */;
+val* var23 /* : null */;
 val* var24 /* : null */;
 val* var25 /* : null */;
-val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
-long var30 /* : Int */;
+long var26 /* : Int */;
+long var27 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
+var_nodearraylist5 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
+var_nodearraylist4 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
+var_nodearraylist3 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
+var_nodearraylist2 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
-var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
+var_nodearraylist1 = var5;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var7 = 1;
+var6 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
+var6 = 0;
 } else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+var6 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17716);
+if (!var6) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17082);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype9 = type_nullable_parser_nodes__AAble.color;
-idtype10 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var8 = 1;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype8 = type_nullable_parser_nodes__AAble.color;
+idtype9 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var7 = 1;
 } else {
-if(cltype9 >= var_pablenode4->type->table_size) {
-var8 = 0;
+if(cltype8 >= var_pablenode3->type->table_size) {
+var7 = 0;
 } else {
-var8 = var_pablenode4->type->type_table[cltype9] == idtype10;
+var7 = var_pablenode3->type->type_table[cltype8] == idtype9;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17718);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17084);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype12 = type_nullable_parser_nodes__AVisibility.color;
-idtype13 = type_nullable_parser_nodes__AVisibility.id;
+cltype11 = type_nullable_parser_nodes__AVisibility.color;
+idtype12 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var11 = 1;
+var10 = 1;
 } else {
-if(cltype12 >= var_pvisibilitynode6->type->table_size) {
-var11 = 0;
+if(cltype11 >= var_pvisibilitynode6->type->table_size) {
+var10 = 0;
 } else {
-var11 = var_pvisibilitynode6->type->type_table[cltype12] == idtype13;
+var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17720);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17086);
 exit(1);
 }
 var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype15 = type_nullable_parser_nodes__TKwvar.color;
-idtype16 = type_nullable_parser_nodes__TKwvar.id;
+cltype14 = type_nullable_parser_nodes__TKwvar.color;
+idtype15 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var14 = 1;
+var13 = 1;
 } else {
-if(cltype15 >= var_tkwvarnode7->type->table_size) {
-var14 = 0;
+if(cltype14 >= var_tkwvarnode7->type->table_size) {
+var13 = 0;
 } else {
-var14 = var_tkwvarnode7->type->type_table[cltype15] == idtype16;
+var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17722);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17088);
 exit(1);
 }
 var_tattridnode8 = var_nodearraylist5;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype18 = type_nullable_parser_nodes__TAttrid.color;
-idtype19 = type_nullable_parser_nodes__TAttrid.id;
+cltype17 = type_nullable_parser_nodes__TAttrid.color;
+idtype18 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var17 = 1;
-} else {
-if(cltype18 >= var_tattridnode8->type->table_size) {
-var17 = 0;
-} else {
-var17 = var_tattridnode8->type->type_table[cltype18] == idtype19;
-}
-}
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17724);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist6;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype21 = type_nullable_parser_nodes__AType.color;
-idtype22 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var20 = 1;
+var16 = 1;
 } else {
-if(cltype21 >= var_ptypenode10->type->table_size) {
-var20 = 0;
+if(cltype17 >= var_tattridnode8->type->table_size) {
+var16 = 0;
 } else {
-var20 = var_ptypenode10->type->type_table[cltype21] == idtype22;
+var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17726);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17090);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var20 = NULL;
+var21 = NULL;
+var22 = NULL;
+var23 = NULL;
 var24 = NULL;
 var25 = NULL;
-var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var_pablenode4, var25, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var26, var_ptypenode10, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
-var_ppropdefnode1 = var23;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var_pablenode3, var20, var21, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var22, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var19);
+var_ppropdefnode1 = var19;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction393> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction383> */
+var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction393#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction393__action(val* self, val* p0) {
-parser__ReduceAction393__action(self, p0);
+/* method parser#ReduceAction383#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction383__action(val* self, val* p0) {
+parser__ReduceAction383__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction394#action for (self: ReduceAction394, Parser) */
-void parser__ReduceAction394__action(val* self, val* p0) {
+/* method parser#ReduceAction384#action for (self: ReduceAction384, Parser) */
+void parser__ReduceAction384__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var8 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var27 /* : AAttrPropdef */;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
+val* var23 /* : AAttrPropdef */;
+val* var24 /* : null */;
+val* var25 /* : null */;
+val* var26 /* : null */;
+val* var27 /* : null */;
 val* var28 /* : null */;
-val* var29 /* : null */;
-val* var30 /* : null */;
-val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var32 /* : Int */;
-long var33 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var1;
+var_nodearraylist6 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var2;
+var_nodearraylist5 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var3;
+var_nodearraylist4 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var4;
+var_nodearraylist3 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var5;
+var_nodearraylist2 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var7;
+var_nodearraylist1 = var6;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var8 = 1;
+var7 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var8 = 0;
+var7 = 0;
 } else {
-var8 = var_pdocnode2->type->type_table[cltype] == idtype;
+var7 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17757);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17120);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype10 = type_nullable_parser_nodes__AAble.color;
-idtype11 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var9 = 1;
-} else {
-if(cltype10 >= var_pablenode4->type->table_size) {
-var9 = 0;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype9 = type_nullable_parser_nodes__AAble.color;
+idtype10 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var8 = 1;
 } else {
-var9 = var_pablenode4->type->type_table[cltype10] == idtype11;
+if(cltype9 >= var_pablenode3->type->table_size) {
+var8 = 0;
+} else {
+var8 = var_pablenode3->type->type_table[cltype9] == idtype10;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17759);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17122);
 exit(1);
 }
 var_tkwredefnode5 = var_nodearraylist3;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype13 = type_nullable_parser_nodes__TKwredef.color;
-idtype14 = type_nullable_parser_nodes__TKwredef.id;
+cltype12 = type_nullable_parser_nodes__TKwredef.color;
+idtype13 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var12 = 1;
+var11 = 1;
 } else {
-if(cltype13 >= var_tkwredefnode5->type->table_size) {
-var12 = 0;
+if(cltype12 >= var_tkwredefnode5->type->table_size) {
+var11 = 0;
 } else {
-var12 = var_tkwredefnode5->type->type_table[cltype13] == idtype14;
+var11 = var_tkwredefnode5->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17761);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17124);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype16 = type_nullable_parser_nodes__AVisibility.color;
-idtype17 = type_nullable_parser_nodes__AVisibility.id;
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var15 = 1;
+var14 = 1;
 } else {
-if(cltype16 >= var_pvisibilitynode6->type->table_size) {
-var15 = 0;
+if(cltype15 >= var_pvisibilitynode6->type->table_size) {
+var14 = 0;
 } else {
-var15 = var_pvisibilitynode6->type->type_table[cltype16] == idtype17;
+var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17763);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17126);
 exit(1);
 }
 var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype19 = type_nullable_parser_nodes__TKwvar.color;
-idtype20 = type_nullable_parser_nodes__TKwvar.id;
+cltype18 = type_nullable_parser_nodes__TKwvar.color;
+idtype19 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var18 = 1;
+var17 = 1;
 } else {
-if(cltype19 >= var_tkwvarnode7->type->table_size) {
-var18 = 0;
+if(cltype18 >= var_tkwvarnode7->type->table_size) {
+var17 = 0;
 } else {
-var18 = var_tkwvarnode7->type->type_table[cltype19] == idtype20;
+var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17765);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17128);
 exit(1);
 }
 var_tattridnode8 = var_nodearraylist6;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype22 = type_nullable_parser_nodes__TAttrid.color;
-idtype23 = type_nullable_parser_nodes__TAttrid.id;
+cltype21 = type_nullable_parser_nodes__TAttrid.color;
+idtype22 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var21 = 1;
-} else {
-if(cltype22 >= var_tattridnode8->type->table_size) {
-var21 = 0;
-} else {
-var21 = var_tattridnode8->type->type_table[cltype22] == idtype23;
-}
-}
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17767);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist7;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype25 = type_nullable_parser_nodes__AType.color;
-idtype26 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var24 = 1;
+var20 = 1;
 } else {
-if(cltype25 >= var_ptypenode10->type->table_size) {
-var24 = 0;
+if(cltype21 >= var_tattridnode8->type->table_size) {
+var20 = 0;
 } else {
-var24 = var_ptypenode10->type->type_table[cltype25] == idtype26;
+var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17769);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17130);
 exit(1);
 }
-var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var24 = NULL;
+var25 = NULL;
+var26 = NULL;
+var27 = NULL;
 var28 = NULL;
-var29 = NULL;
-var30 = NULL;
-var31 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var28, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var27);
-var_ppropdefnode1 = var27;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var_pablenode3, var24, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var23);
+var_ppropdefnode1 = var23;
 var_node_list = var_ppropdefnode1;
-var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction394> */
-var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction384> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction394#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction394__action(val* self, val* p0) {
-parser__ReduceAction394__action(self, p0);
+/* method parser#ReduceAction384#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction384__action(val* self, val* p0) {
+parser__ReduceAction384__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction395#action for (self: ReduceAction395, Parser) */
-void parser__ReduceAction395__action(val* self, val* p0) {
+/* method parser#ReduceAction385#action for (self: ReduceAction385, Parser) */
+void parser__ReduceAction385__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var8 /* : Bool */;
+short int var6 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
 val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+short int var7 /* : Bool */;
+int cltype8;
+int idtype9;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var27 /* : AAttrPropdef */;
-val* var28 /* : null */;
-val* var29 /* : null */;
-val* var30 /* : null */;
-val* var31 /* : null */;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
+val* var19 /* : AAttrPropdef */;
+val* var20 /* : null */;
+val* var21 /* : null */;
+val* var22 /* : null */;
+val* var23 /* : null */;
+val* var24 /* : null */;
+val* var25 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var32 /* : Int */;
-long var33 /* : Int */;
+long var26 /* : Int */;
+long var27 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var1;
+var_nodearraylist5 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var2;
+var_nodearraylist4 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var3;
+var_nodearraylist3 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var4;
+var_nodearraylist2 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var5;
-var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var7;
+var_nodearraylist1 = var5;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var8 = 1;
+var6 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var8 = 0;
-} else {
-var8 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17800);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype10 = type_nullable_parser_nodes__AAble.color;
-idtype11 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var9 = 1;
-} else {
-if(cltype10 >= var_pablenode3->type->table_size) {
-var9 = 0;
+var6 = 0;
 } else {
-var9 = var_pablenode3->type->type_table[cltype10] == idtype11;
+var6 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17802);
+if (!var6) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17159);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
+var_pablenode4 = var_nodearraylist2;
 /* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype13 = type_nullable_parser_nodes__AAble.color;
-idtype14 = type_nullable_parser_nodes__AAble.id;
+cltype8 = type_nullable_parser_nodes__AAble.color;
+idtype9 = type_nullable_parser_nodes__AAble.id;
 if(var_pablenode4 == NULL) {
-var12 = 1;
+var7 = 1;
 } else {
-if(cltype13 >= var_pablenode4->type->table_size) {
-var12 = 0;
+if(cltype8 >= var_pablenode4->type->table_size) {
+var7 = 0;
 } else {
-var12 = var_pablenode4->type->type_table[cltype13] == idtype14;
+var7 = var_pablenode4->type->type_table[cltype8] == idtype9;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17804);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17161);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
+var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype16 = type_nullable_parser_nodes__AVisibility.color;
-idtype17 = type_nullable_parser_nodes__AVisibility.id;
+cltype11 = type_nullable_parser_nodes__AVisibility.color;
+idtype12 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var15 = 1;
-} else {
-if(cltype16 >= var_pvisibilitynode6->type->table_size) {
-var15 = 0;
-} else {
-var15 = var_pvisibilitynode6->type->type_table[cltype16] == idtype17;
-}
-}
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17806);
-exit(1);
-}
-var_tkwvarnode7 = var_nodearraylist5;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype19 = type_nullable_parser_nodes__TKwvar.color;
-idtype20 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var18 = 1;
+var10 = 1;
 } else {
-if(cltype19 >= var_tkwvarnode7->type->table_size) {
-var18 = 0;
+if(cltype11 >= var_pvisibilitynode6->type->table_size) {
+var10 = 0;
 } else {
-var18 = var_tkwvarnode7->type->type_table[cltype19] == idtype20;
+var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17808);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17163);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype22 = type_nullable_parser_nodes__TAttrid.color;
-idtype23 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var21 = 1;
+var_tkwvarnode7 = var_nodearraylist4;
+/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
+cltype14 = type_nullable_parser_nodes__TKwvar.color;
+idtype15 = type_nullable_parser_nodes__TKwvar.id;
+if(var_tkwvarnode7 == NULL) {
+var13 = 1;
 } else {
-if(cltype22 >= var_tattridnode8->type->table_size) {
-var21 = 0;
+if(cltype14 >= var_tkwvarnode7->type->table_size) {
+var13 = 0;
 } else {
-var21 = var_tattridnode8->type->type_table[cltype22] == idtype23;
+var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17810);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17165);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist7;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype25 = type_nullable_parser_nodes__AType.color;
-idtype26 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var24 = 1;
+var_tattridnode8 = var_nodearraylist5;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype17 = type_nullable_parser_nodes__TAttrid.color;
+idtype18 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var16 = 1;
 } else {
-if(cltype25 >= var_ptypenode10->type->table_size) {
-var24 = 0;
+if(cltype17 >= var_tattridnode8->type->table_size) {
+var16 = 0;
 } else {
-var24 = var_ptypenode10->type->type_table[cltype25] == idtype26;
+var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17812);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17167);
 exit(1);
 }
-var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var28 = NULL;
-var29 = NULL;
-var30 = NULL;
-var31 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var_pablenode3, var_pablenode4, var28, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var27);
-var_ppropdefnode1 = var27;
+var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var20 = NULL;
+var21 = NULL;
+var22 = NULL;
+var23 = NULL;
+var24 = NULL;
+var25 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var_pablenode4, var21, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var22, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var19);
+var_ppropdefnode1 = var19;
 var_node_list = var_ppropdefnode1;
-var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction395> */
-var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
+var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction385> */
+var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction395#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction395__action(val* self, val* p0) {
-parser__ReduceAction395__action(self, p0);
+/* method parser#ReduceAction385#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction385__action(val* self, val* p0) {
+parser__ReduceAction385__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction396#action for (self: ReduceAction396, Parser) */
-void parser__ReduceAction396__action(val* self, val* p0) {
+/* method parser#ReduceAction386#action for (self: ReduceAction386, Parser) */
+void parser__ReduceAction386__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var9 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
 val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-val* var31 /* : AAttrPropdef */;
-val* var32 /* : null */;
-val* var33 /* : null */;
-val* var34 /* : null */;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
+val* var23 /* : AAttrPropdef */;
+val* var24 /* : null */;
+val* var25 /* : null */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var35 /* : Int */;
-long var36 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var1;
+var_nodearraylist6 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var2;
+var_nodearraylist5 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var3;
+var_nodearraylist4 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var4;
+var_nodearraylist3 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var5;
+var_nodearraylist2 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var8;
+var_nodearraylist1 = var6;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var9 = 1;
+var7 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17844);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype11 = type_nullable_parser_nodes__AAble.color;
-idtype12 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var10 = 1;
-} else {
-if(cltype11 >= var_pablenode3->type->table_size) {
-var10 = 0;
+var7 = 0;
 } else {
-var10 = var_pablenode3->type->type_table[cltype11] == idtype12;
+var7 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17846);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17197);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
+var_pablenode4 = var_nodearraylist2;
 /* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype14 = type_nullable_parser_nodes__AAble.color;
-idtype15 = type_nullable_parser_nodes__AAble.id;
+cltype9 = type_nullable_parser_nodes__AAble.color;
+idtype10 = type_nullable_parser_nodes__AAble.id;
 if(var_pablenode4 == NULL) {
-var13 = 1;
+var8 = 1;
 } else {
-if(cltype14 >= var_pablenode4->type->table_size) {
-var13 = 0;
+if(cltype9 >= var_pablenode4->type->table_size) {
+var8 = 0;
 } else {
-var13 = var_pablenode4->type->type_table[cltype14] == idtype15;
+var8 = var_pablenode4->type->type_table[cltype9] == idtype10;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17848);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17199);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist4;
+var_tkwredefnode5 = var_nodearraylist3;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype17 = type_nullable_parser_nodes__TKwredef.color;
-idtype18 = type_nullable_parser_nodes__TKwredef.id;
+cltype12 = type_nullable_parser_nodes__TKwredef.color;
+idtype13 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var16 = 1;
+var11 = 1;
 } else {
-if(cltype17 >= var_tkwredefnode5->type->table_size) {
-var16 = 0;
+if(cltype12 >= var_tkwredefnode5->type->table_size) {
+var11 = 0;
 } else {
-var16 = var_tkwredefnode5->type->type_table[cltype17] == idtype18;
+var11 = var_tkwredefnode5->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17850);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17201);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist5;
+var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype20 = type_nullable_parser_nodes__AVisibility.color;
-idtype21 = type_nullable_parser_nodes__AVisibility.id;
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var19 = 1;
+var14 = 1;
 } else {
-if(cltype20 >= var_pvisibilitynode6->type->table_size) {
-var19 = 0;
+if(cltype15 >= var_pvisibilitynode6->type->table_size) {
+var14 = 0;
 } else {
-var19 = var_pvisibilitynode6->type->type_table[cltype20] == idtype21;
+var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17852);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17203);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist6;
+var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype23 = type_nullable_parser_nodes__TKwvar.color;
-idtype24 = type_nullable_parser_nodes__TKwvar.id;
+cltype18 = type_nullable_parser_nodes__TKwvar.color;
+idtype19 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var22 = 1;
-} else {
-if(cltype23 >= var_tkwvarnode7->type->table_size) {
-var22 = 0;
-} else {
-var22 = var_tkwvarnode7->type->type_table[cltype23] == idtype24;
-}
-}
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17854);
-exit(1);
-}
-var_tattridnode8 = var_nodearraylist7;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype26 = type_nullable_parser_nodes__TAttrid.color;
-idtype27 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var25 = 1;
+var17 = 1;
 } else {
-if(cltype26 >= var_tattridnode8->type->table_size) {
-var25 = 0;
+if(cltype18 >= var_tkwvarnode7->type->table_size) {
+var17 = 0;
 } else {
-var25 = var_tattridnode8->type->type_table[cltype26] == idtype27;
+var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17856);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17205);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist8;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype29 = type_nullable_parser_nodes__AType.color;
-idtype30 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var28 = 1;
+var_tattridnode8 = var_nodearraylist6;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype21 = type_nullable_parser_nodes__TAttrid.color;
+idtype22 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var20 = 1;
 } else {
-if(cltype29 >= var_ptypenode10->type->table_size) {
-var28 = 0;
+if(cltype21 >= var_tattridnode8->type->table_size) {
+var20 = 0;
 } else {
-var28 = var_ptypenode10->type->type_table[cltype29] == idtype30;
+var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var28) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17858);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17207);
 exit(1);
 }
-var31 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var32 = NULL;
-var33 = NULL;
-var34 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var31->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var31, var_pdocnode2, var_pablenode3, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var32, var_ptypenode10, var33, var34) /* init_aattrpropdef on <var31:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var31);
-var_ppropdefnode1 = var31;
+var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var24 = NULL;
+var25 = NULL;
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var23);
+var_ppropdefnode1 = var23;
 var_node_list = var_ppropdefnode1;
-var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction396> */
-var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction386> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction396#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction396__action(val* self, val* p0) {
-parser__ReduceAction396__action(self, p0);
+/* method parser#ReduceAction386#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction386__action(val* self, val* p0) {
+parser__ReduceAction386__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction397#action for (self: ReduceAction397, Parser) */
-void parser__ReduceAction397__action(val* self, val* p0) {
+/* method parser#ReduceAction387#action for (self: ReduceAction387, Parser) */
+void parser__ReduceAction387__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var8 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
-val* var21 /* : AAttrPropdef */;
-val* var22 /* : null */;
-val* var23 /* : null */;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
+val* var23 /* : AAttrPropdef */;
 val* var24 /* : null */;
 val* var25 /* : null */;
 val* var26 /* : null */;
 val* var27 /* : null */;
+val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var28 /* : Int */;
 long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var1;
+var_nodearraylist6 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var2;
+var_nodearraylist5 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var3;
+var_nodearraylist4 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var4;
+var_nodearraylist3 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var5;
+var_nodearraylist2 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var7;
+var_nodearraylist1 = var6;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var8 = 1;
+var7 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
+var7 = 0;
+} else {
+var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+}
+}
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17237);
+exit(1);
+}
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype9 = type_nullable_parser_nodes__AAble.color;
+idtype10 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var8 = 1;
+} else {
+if(cltype9 >= var_pablenode3->type->table_size) {
 var8 = 0;
 } else {
-var8 = var_pdocnode2->type->type_table[cltype] == idtype;
+var8 = var_pablenode3->type->type_table[cltype9] == idtype10;
 }
 }
 if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17889);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17239);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist2;
-/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype10 = type_nullable_parser_nodes__AVisibility.color;
-idtype11 = type_nullable_parser_nodes__AVisibility.id;
-if(var_pvisibilitynode6 == NULL) {
-var9 = 1;
+var_pablenode4 = var_nodearraylist3;
+/* <var_pablenode4:nullable Object> isa nullable AAble */
+cltype12 = type_nullable_parser_nodes__AAble.color;
+idtype13 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode4 == NULL) {
+var11 = 1;
 } else {
-if(cltype10 >= var_pvisibilitynode6->type->table_size) {
-var9 = 0;
+if(cltype12 >= var_pablenode4->type->table_size) {
+var11 = 0;
 } else {
-var9 = var_pvisibilitynode6->type->type_table[cltype10] == idtype11;
+var11 = var_pablenode4->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17891);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17241);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist3;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype13 = type_nullable_parser_nodes__TKwvar.color;
-idtype14 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var12 = 1;
+var_pvisibilitynode6 = var_nodearraylist4;
+/* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
+if(var_pvisibilitynode6 == NULL) {
+var14 = 1;
 } else {
-if(cltype13 >= var_tkwvarnode7->type->table_size) {
-var12 = 0;
+if(cltype15 >= var_pvisibilitynode6->type->table_size) {
+var14 = 0;
 } else {
-var12 = var_tkwvarnode7->type->type_table[cltype13] == idtype14;
+var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17893);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17243);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist4;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype16 = type_nullable_parser_nodes__TAttrid.color;
-idtype17 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var15 = 1;
+var_tkwvarnode7 = var_nodearraylist5;
+/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
+cltype18 = type_nullable_parser_nodes__TKwvar.color;
+idtype19 = type_nullable_parser_nodes__TKwvar.id;
+if(var_tkwvarnode7 == NULL) {
+var17 = 1;
 } else {
-if(cltype16 >= var_tattridnode8->type->table_size) {
-var15 = 0;
+if(cltype18 >= var_tkwvarnode7->type->table_size) {
+var17 = 0;
 } else {
-var15 = var_tattridnode8->type->type_table[cltype16] == idtype17;
+var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17895);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17245);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist7;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype19 = type_nullable_parser_nodes__AExpr.color;
-idtype20 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var18 = 1;
+var_tattridnode8 = var_nodearraylist6;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype21 = type_nullable_parser_nodes__TAttrid.color;
+idtype22 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var20 = 1;
 } else {
-if(cltype19 >= var_pexprnode12->type->table_size) {
-var18 = 0;
+if(cltype21 >= var_tattridnode8->type->table_size) {
+var20 = 0;
 } else {
-var18 = var_pexprnode12->type->type_table[cltype19] == idtype20;
+var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17897);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17247);
 exit(1);
 }
-var21 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var22 = NULL;
-var23 = NULL;
+var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
 var24 = NULL;
 var25 = NULL;
 var26 = NULL;
 var27 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var21->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var21, var_pdocnode2, var22, var23, var24, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var_pexprnode12) /* init_aattrpropdef on <var21:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var21);
-var_ppropdefnode1 = var21;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var_pablenode3, var_pablenode4, var24, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var23);
+var_ppropdefnode1 = var23;
 var_node_list = var_ppropdefnode1;
-var28 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction397> */
-var29 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var28) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var29, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction387> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction397#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction397__action(val* self, val* p0) {
-parser__ReduceAction397__action(self, p0);
+/* method parser#ReduceAction387#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction387__action(val* self, val* p0) {
+parser__ReduceAction387__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction398#action for (self: ReduceAction398, Parser) */
-void parser__ReduceAction398__action(val* self, val* p0) {
+/* method parser#ReduceAction388#action for (self: ReduceAction388, Parser) */
+void parser__ReduceAction388__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var9 /* : Bool */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
-val* var25 /* : AAttrPropdef */;
-val* var26 /* : null */;
-val* var27 /* : null */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var27 /* : AAttrPropdef */;
 val* var28 /* : null */;
 val* var29 /* : null */;
 val* var30 /* : null */;
+val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var31 /* : Int */;
 long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var1;
+var_nodearraylist7 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var2;
+var_nodearraylist6 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var3;
+var_nodearraylist5 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var4;
+var_nodearraylist4 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var5;
+var_nodearraylist3 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var6;
+var_nodearraylist2 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var8;
+var_nodearraylist1 = var7;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var9 = 1;
+var8 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
+var8 = 0;
+} else {
+var8 = var_pdocnode2->type->type_table[cltype] == idtype;
+}
+}
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17278);
+exit(1);
+}
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype10 = type_nullable_parser_nodes__AAble.color;
+idtype11 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var9 = 1;
+} else {
+if(cltype10 >= var_pablenode3->type->table_size) {
 var9 = 0;
 } else {
-var9 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pablenode3->type->type_table[cltype10] == idtype11;
 }
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17929);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17280);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist2;
+var_pablenode4 = var_nodearraylist3;
+/* <var_pablenode4:nullable Object> isa nullable AAble */
+cltype13 = type_nullable_parser_nodes__AAble.color;
+idtype14 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode4 == NULL) {
+var12 = 1;
+} else {
+if(cltype13 >= var_pablenode4->type->table_size) {
+var12 = 0;
+} else {
+var12 = var_pablenode4->type->type_table[cltype13] == idtype14;
+}
+}
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17282);
+exit(1);
+}
+var_tkwredefnode5 = var_nodearraylist4;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype11 = type_nullable_parser_nodes__TKwredef.color;
-idtype12 = type_nullable_parser_nodes__TKwredef.id;
+cltype16 = type_nullable_parser_nodes__TKwredef.color;
+idtype17 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var10 = 1;
+var15 = 1;
 } else {
-if(cltype11 >= var_tkwredefnode5->type->table_size) {
-var10 = 0;
+if(cltype16 >= var_tkwredefnode5->type->table_size) {
+var15 = 0;
 } else {
-var10 = var_tkwredefnode5->type->type_table[cltype11] == idtype12;
+var15 = var_tkwredefnode5->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17931);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17284);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
+var_pvisibilitynode6 = var_nodearraylist5;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype14 = type_nullable_parser_nodes__AVisibility.color;
-idtype15 = type_nullable_parser_nodes__AVisibility.id;
+cltype19 = type_nullable_parser_nodes__AVisibility.color;
+idtype20 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var13 = 1;
+var18 = 1;
 } else {
-if(cltype14 >= var_pvisibilitynode6->type->table_size) {
-var13 = 0;
+if(cltype19 >= var_pvisibilitynode6->type->table_size) {
+var18 = 0;
 } else {
-var13 = var_pvisibilitynode6->type->type_table[cltype14] == idtype15;
+var18 = var_pvisibilitynode6->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17933);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17286);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
+var_tkwvarnode7 = var_nodearraylist6;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype17 = type_nullable_parser_nodes__TKwvar.color;
-idtype18 = type_nullable_parser_nodes__TKwvar.id;
+cltype22 = type_nullable_parser_nodes__TKwvar.color;
+idtype23 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var16 = 1;
+var21 = 1;
 } else {
-if(cltype17 >= var_tkwvarnode7->type->table_size) {
-var16 = 0;
+if(cltype22 >= var_tkwvarnode7->type->table_size) {
+var21 = 0;
 } else {
-var16 = var_tkwvarnode7->type->type_table[cltype17] == idtype18;
+var21 = var_tkwvarnode7->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17935);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17288);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
+var_tattridnode8 = var_nodearraylist7;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype20 = type_nullable_parser_nodes__TAttrid.color;
-idtype21 = type_nullable_parser_nodes__TAttrid.id;
+cltype25 = type_nullable_parser_nodes__TAttrid.color;
+idtype26 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var19 = 1;
-} else {
-if(cltype20 >= var_tattridnode8->type->table_size) {
-var19 = 0;
-} else {
-var19 = var_tattridnode8->type->type_table[cltype20] == idtype21;
-}
-}
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17937);
-exit(1);
-}
-var_pexprnode12 = var_nodearraylist8;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype23 = type_nullable_parser_nodes__AExpr.color;
-idtype24 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var22 = 1;
+var24 = 1;
 } else {
-if(cltype23 >= var_pexprnode12->type->table_size) {
-var22 = 0;
+if(cltype25 >= var_tattridnode8->type->table_size) {
+var24 = 0;
 } else {
-var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
+var24 = var_tattridnode8->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17939);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17290);
 exit(1);
 }
-var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var26 = NULL;
-var27 = NULL;
+var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
 var28 = NULL;
 var29 = NULL;
 var30 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var26, var27, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var25);
-var_ppropdefnode1 = var25;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var_pablenode3, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var27);
+var_ppropdefnode1 = var27;
 var_node_list = var_ppropdefnode1;
-var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction398> */
-var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction388> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction398#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction398__action(val* self, val* p0) {
-parser__ReduceAction398__action(self, p0);
+/* method parser#ReduceAction388#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction388__action(val* self, val* p0) {
+parser__ReduceAction388__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction399#action for (self: ReduceAction399, Parser) */
-void parser__ReduceAction399__action(val* self, val* p0) {
+/* method parser#ReduceAction389#action for (self: ReduceAction389, Parser) */
+void parser__ReduceAction389__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var9 /* : Bool */;
+short int var6 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
+val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
+short int var7 /* : Bool */;
+int cltype8;
+int idtype9;
+val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
 short int var10 /* : Bool */;
 int cltype11;
 int idtype12;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
 short int var13 /* : Bool */;
 int cltype14;
 int idtype15;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
 short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
-val* var25 /* : AAttrPropdef */;
-val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
-val* var29 /* : null */;
-val* var30 /* : null */;
+int cltype17;
+int idtype18;
+val* var19 /* : AAttrPropdef */;
+val* var20 /* : null */;
+val* var21 /* : null */;
+val* var22 /* : null */;
+val* var23 /* : null */;
+val* var24 /* : null */;
+val* var25 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var31 /* : Int */;
-long var32 /* : Int */;
+long var26 /* : Int */;
+long var27 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var1;
+var_nodearraylist5 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var2;
+var_nodearraylist4 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var3;
+var_nodearraylist3 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var4;
+var_nodearraylist2 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var5;
-var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var8;
+var_nodearraylist1 = var5;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var9 = 1;
+var6 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17971);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype11 = type_nullable_parser_nodes__AAble.color;
-idtype12 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var10 = 1;
-} else {
-if(cltype11 >= var_pablenode3->type->table_size) {
-var10 = 0;
+var6 = 0;
 } else {
-var10 = var_pablenode3->type->type_table[cltype11] == idtype12;
+var6 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17973);
+if (!var6) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17319);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
+var_pvisibilitynode6 = var_nodearraylist2;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype14 = type_nullable_parser_nodes__AVisibility.color;
-idtype15 = type_nullable_parser_nodes__AVisibility.id;
+cltype8 = type_nullable_parser_nodes__AVisibility.color;
+idtype9 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var13 = 1;
+var7 = 1;
 } else {
-if(cltype14 >= var_pvisibilitynode6->type->table_size) {
-var13 = 0;
+if(cltype8 >= var_pvisibilitynode6->type->table_size) {
+var7 = 0;
 } else {
-var13 = var_pvisibilitynode6->type->type_table[cltype14] == idtype15;
+var7 = var_pvisibilitynode6->type->type_table[cltype8] == idtype9;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17975);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17321);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
+var_tkwvarnode7 = var_nodearraylist3;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype17 = type_nullable_parser_nodes__TKwvar.color;
-idtype18 = type_nullable_parser_nodes__TKwvar.id;
+cltype11 = type_nullable_parser_nodes__TKwvar.color;
+idtype12 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var16 = 1;
+var10 = 1;
 } else {
-if(cltype17 >= var_tkwvarnode7->type->table_size) {
-var16 = 0;
+if(cltype11 >= var_tkwvarnode7->type->table_size) {
+var10 = 0;
 } else {
-var16 = var_tkwvarnode7->type->type_table[cltype17] == idtype18;
+var10 = var_tkwvarnode7->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17977);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17323);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
+var_tattridnode8 = var_nodearraylist4;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype20 = type_nullable_parser_nodes__TAttrid.color;
-idtype21 = type_nullable_parser_nodes__TAttrid.id;
+cltype14 = type_nullable_parser_nodes__TAttrid.color;
+idtype15 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var19 = 1;
+var13 = 1;
 } else {
-if(cltype20 >= var_tattridnode8->type->table_size) {
-var19 = 0;
+if(cltype14 >= var_tattridnode8->type->table_size) {
+var13 = 0;
 } else {
-var19 = var_tattridnode8->type->type_table[cltype20] == idtype21;
+var13 = var_tattridnode8->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17979);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17325);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist8;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype23 = type_nullable_parser_nodes__AExpr.color;
-idtype24 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var22 = 1;
+var_ptypenode10 = var_nodearraylist5;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype17 = type_nullable_parser_nodes__AType.color;
+idtype18 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var16 = 1;
 } else {
-if(cltype23 >= var_pexprnode12->type->table_size) {
-var22 = 0;
+if(cltype17 >= var_ptypenode10->type->table_size) {
+var16 = 0;
 } else {
-var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
+var16 = var_ptypenode10->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 17981);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17327);
 exit(1);
 }
-var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-var29 = NULL;
-var30 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var_pablenode3, var26, var27, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var25);
-var_ppropdefnode1 = var25;
+var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var20 = NULL;
+var21 = NULL;
+var22 = NULL;
+var23 = NULL;
+var24 = NULL;
+var25 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var21, var22, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var23, var_ptypenode10, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var19);
+var_ppropdefnode1 = var19;
 var_node_list = var_ppropdefnode1;
-var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction399> */
-var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
+var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction389> */
+var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction399#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction399__action(val* self, val* p0) {
-parser__ReduceAction399__action(self, p0);
+/* method parser#ReduceAction389#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction389__action(val* self, val* p0) {
+parser__ReduceAction389__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction400#action for (self: ReduceAction400, Parser) */
-void parser__ReduceAction400__action(val* self, val* p0) {
+/* method parser#ReduceAction390#action for (self: ReduceAction390, Parser) */
+void parser__ReduceAction390__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
+val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
 short int var11 /* : Bool */;
 int cltype12;
 int idtype13;
-val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
+val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
 short int var14 /* : Bool */;
 int cltype15;
 int idtype16;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
 short int var17 /* : Bool */;
 int cltype18;
 int idtype19;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
 short int var20 /* : Bool */;
 int cltype21;
 int idtype22;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AAttrPropdef */;
-val* var30 /* : null */;
-val* var31 /* : null */;
-val* var32 /* : null */;
-val* var33 /* : null */;
+val* var23 /* : AAttrPropdef */;
+val* var24 /* : null */;
+val* var25 /* : null */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var34 /* : Int */;
-long var35 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist6 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist5 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist4 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist3 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist2 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
+var_nodearraylist1 = var6;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var10 = 1;
+var7 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18014);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype12 = type_nullable_parser_nodes__AAble.color;
-idtype13 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var11 = 1;
-} else {
-if(cltype12 >= var_pablenode3->type->table_size) {
-var11 = 0;
+var7 = 0;
 } else {
-var11 = var_pablenode3->type->type_table[cltype12] == idtype13;
+var7 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18016);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17357);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist3;
+var_tkwredefnode5 = var_nodearraylist2;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype15 = type_nullable_parser_nodes__TKwredef.color;
-idtype16 = type_nullable_parser_nodes__TKwredef.id;
+cltype9 = type_nullable_parser_nodes__TKwredef.color;
+idtype10 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var14 = 1;
+var8 = 1;
 } else {
-if(cltype15 >= var_tkwredefnode5->type->table_size) {
-var14 = 0;
+if(cltype9 >= var_tkwredefnode5->type->table_size) {
+var8 = 0;
 } else {
-var14 = var_tkwredefnode5->type->type_table[cltype15] == idtype16;
+var8 = var_tkwredefnode5->type->type_table[cltype9] == idtype10;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18018);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17359);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
+var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype18 = type_nullable_parser_nodes__AVisibility.color;
-idtype19 = type_nullable_parser_nodes__AVisibility.id;
+cltype12 = type_nullable_parser_nodes__AVisibility.color;
+idtype13 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var17 = 1;
+var11 = 1;
 } else {
-if(cltype18 >= var_pvisibilitynode6->type->table_size) {
-var17 = 0;
+if(cltype12 >= var_pvisibilitynode6->type->table_size) {
+var11 = 0;
 } else {
-var17 = var_pvisibilitynode6->type->type_table[cltype18] == idtype19;
+var11 = var_pvisibilitynode6->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18020);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17361);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
+var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype21 = type_nullable_parser_nodes__TKwvar.color;
-idtype22 = type_nullable_parser_nodes__TKwvar.id;
+cltype15 = type_nullable_parser_nodes__TKwvar.color;
+idtype16 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var20 = 1;
+var14 = 1;
 } else {
-if(cltype21 >= var_tkwvarnode7->type->table_size) {
-var20 = 0;
+if(cltype15 >= var_tkwvarnode7->type->table_size) {
+var14 = 0;
 } else {
-var20 = var_tkwvarnode7->type->type_table[cltype21] == idtype22;
+var14 = var_tkwvarnode7->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18022);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17363);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
+var_tattridnode8 = var_nodearraylist5;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype24 = type_nullable_parser_nodes__TAttrid.color;
-idtype25 = type_nullable_parser_nodes__TAttrid.id;
+cltype18 = type_nullable_parser_nodes__TAttrid.color;
+idtype19 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var23 = 1;
+var17 = 1;
 } else {
-if(cltype24 >= var_tattridnode8->type->table_size) {
-var23 = 0;
+if(cltype18 >= var_tattridnode8->type->table_size) {
+var17 = 0;
 } else {
-var23 = var_tattridnode8->type->type_table[cltype24] == idtype25;
+var17 = var_tattridnode8->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18024);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17365);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist9;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype27 = type_nullable_parser_nodes__AExpr.color;
-idtype28 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var26 = 1;
+var_ptypenode10 = var_nodearraylist6;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype21 = type_nullable_parser_nodes__AType.color;
+idtype22 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var20 = 1;
 } else {
-if(cltype27 >= var_pexprnode12->type->table_size) {
-var26 = 0;
+if(cltype21 >= var_ptypenode10->type->table_size) {
+var20 = 0;
 } else {
-var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+var20 = var_ptypenode10->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18026);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17367);
 exit(1);
 }
-var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var30 = NULL;
-var31 = NULL;
-var32 = NULL;
-var33 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var_pablenode3, var30, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var31, var32, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var29);
-var_ppropdefnode1 = var29;
+var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var24 = NULL;
+var25 = NULL;
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var25, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var26, var_ptypenode10, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var23);
+var_ppropdefnode1 = var23;
 var_node_list = var_ppropdefnode1;
-var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction400> */
-var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction390> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction400#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction400__action(val* self, val* p0) {
-parser__ReduceAction400__action(self, p0);
+/* method parser#ReduceAction390#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction390__action(val* self, val* p0) {
+parser__ReduceAction390__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction401#action for (self: ReduceAction401, Parser) */
-void parser__ReduceAction401__action(val* self, val* p0) {
+/* method parser#ReduceAction391#action for (self: ReduceAction391, Parser) */
+void parser__ReduceAction391__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var9 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
-val* var25 /* : AAttrPropdef */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
+val* var23 /* : AAttrPropdef */;
+val* var24 /* : null */;
+val* var25 /* : null */;
 val* var26 /* : null */;
 val* var27 /* : null */;
 val* var28 /* : null */;
-val* var29 /* : null */;
-val* var30 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var31 /* : Int */;
-long var32 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var1;
+var_nodearraylist6 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var2;
+var_nodearraylist5 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var3;
+var_nodearraylist4 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var4;
+var_nodearraylist3 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var5;
+var_nodearraylist2 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var8;
+var_nodearraylist1 = var6;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var9 = 1;
+var7 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var9 = 0;
+var7 = 0;
 } else {
-var9 = var_pdocnode2->type->type_table[cltype] == idtype;
+var7 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18058);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17397);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype11 = type_nullable_parser_nodes__AAble.color;
-idtype12 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var10 = 1;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype9 = type_nullable_parser_nodes__AAble.color;
+idtype10 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var8 = 1;
 } else {
-if(cltype11 >= var_pablenode4->type->table_size) {
-var10 = 0;
+if(cltype9 >= var_pablenode3->type->table_size) {
+var8 = 0;
 } else {
-var10 = var_pablenode4->type->type_table[cltype11] == idtype12;
+var8 = var_pablenode3->type->type_table[cltype9] == idtype10;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18060);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17399);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype14 = type_nullable_parser_nodes__AVisibility.color;
-idtype15 = type_nullable_parser_nodes__AVisibility.id;
+cltype12 = type_nullable_parser_nodes__AVisibility.color;
+idtype13 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var13 = 1;
+var11 = 1;
 } else {
-if(cltype14 >= var_pvisibilitynode6->type->table_size) {
-var13 = 0;
+if(cltype12 >= var_pvisibilitynode6->type->table_size) {
+var11 = 0;
 } else {
-var13 = var_pvisibilitynode6->type->type_table[cltype14] == idtype15;
+var11 = var_pvisibilitynode6->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18062);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17401);
 exit(1);
 }
 var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype17 = type_nullable_parser_nodes__TKwvar.color;
-idtype18 = type_nullable_parser_nodes__TKwvar.id;
+cltype15 = type_nullable_parser_nodes__TKwvar.color;
+idtype16 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var16 = 1;
+var14 = 1;
 } else {
-if(cltype17 >= var_tkwvarnode7->type->table_size) {
-var16 = 0;
+if(cltype15 >= var_tkwvarnode7->type->table_size) {
+var14 = 0;
 } else {
-var16 = var_tkwvarnode7->type->type_table[cltype17] == idtype18;
+var14 = var_tkwvarnode7->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18064);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17403);
 exit(1);
 }
 var_tattridnode8 = var_nodearraylist5;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype20 = type_nullable_parser_nodes__TAttrid.color;
-idtype21 = type_nullable_parser_nodes__TAttrid.id;
+cltype18 = type_nullable_parser_nodes__TAttrid.color;
+idtype19 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var19 = 1;
+var17 = 1;
 } else {
-if(cltype20 >= var_tattridnode8->type->table_size) {
-var19 = 0;
+if(cltype18 >= var_tattridnode8->type->table_size) {
+var17 = 0;
 } else {
-var19 = var_tattridnode8->type->type_table[cltype20] == idtype21;
+var17 = var_tattridnode8->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18066);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17405);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist8;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype23 = type_nullable_parser_nodes__AExpr.color;
-idtype24 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var22 = 1;
+var_ptypenode10 = var_nodearraylist6;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype21 = type_nullable_parser_nodes__AType.color;
+idtype22 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var20 = 1;
 } else {
-if(cltype23 >= var_pexprnode12->type->table_size) {
-var22 = 0;
+if(cltype21 >= var_ptypenode10->type->table_size) {
+var20 = 0;
 } else {
-var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
+var20 = var_ptypenode10->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18068);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17407);
 exit(1);
 }
-var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var24 = NULL;
+var25 = NULL;
 var26 = NULL;
 var27 = NULL;
 var28 = NULL;
-var29 = NULL;
-var30 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var26, var_pablenode4, var27, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var25);
-var_ppropdefnode1 = var25;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var_pablenode3, var24, var25, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var26, var_ptypenode10, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var23);
+var_ppropdefnode1 = var23;
 var_node_list = var_ppropdefnode1;
-var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction401> */
-var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction391> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction401#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction401__action(val* self, val* p0) {
-parser__ReduceAction401__action(self, p0);
+/* method parser#ReduceAction391#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction391__action(val* self, val* p0) {
+parser__ReduceAction391__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction402#action for (self: ReduceAction402, Parser) */
-void parser__ReduceAction402__action(val* self, val* p0) {
+/* method parser#ReduceAction392#action for (self: ReduceAction392, Parser) */
+void parser__ReduceAction392__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AAttrPropdef */;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var27 /* : AAttrPropdef */;
+val* var28 /* : null */;
+val* var29 /* : null */;
 val* var30 /* : null */;
 val* var31 /* : null */;
-val* var32 /* : null */;
-val* var33 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var34 /* : Int */;
-long var35 /* : Int */;
+long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist7 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist6 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist5 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist4 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist3 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
+var_nodearraylist2 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
+var_nodearraylist1 = var7;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var10 = 1;
+var8 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var10 = 0;
+var8 = 0;
 } else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
+var8 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18101);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17438);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype12 = type_nullable_parser_nodes__AAble.color;
-idtype13 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var11 = 1;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype10 = type_nullable_parser_nodes__AAble.color;
+idtype11 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var9 = 1;
 } else {
-if(cltype12 >= var_pablenode4->type->table_size) {
-var11 = 0;
+if(cltype10 >= var_pablenode3->type->table_size) {
+var9 = 0;
 } else {
-var11 = var_pablenode4->type->type_table[cltype12] == idtype13;
+var9 = var_pablenode3->type->type_table[cltype10] == idtype11;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18103);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17440);
 exit(1);
 }
 var_tkwredefnode5 = var_nodearraylist3;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype15 = type_nullable_parser_nodes__TKwredef.color;
-idtype16 = type_nullable_parser_nodes__TKwredef.id;
+cltype13 = type_nullable_parser_nodes__TKwredef.color;
+idtype14 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var14 = 1;
+var12 = 1;
 } else {
-if(cltype15 >= var_tkwredefnode5->type->table_size) {
-var14 = 0;
+if(cltype13 >= var_tkwredefnode5->type->table_size) {
+var12 = 0;
 } else {
-var14 = var_tkwredefnode5->type->type_table[cltype15] == idtype16;
+var12 = var_tkwredefnode5->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18105);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17442);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype18 = type_nullable_parser_nodes__AVisibility.color;
-idtype19 = type_nullable_parser_nodes__AVisibility.id;
+cltype16 = type_nullable_parser_nodes__AVisibility.color;
+idtype17 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var17 = 1;
+var15 = 1;
 } else {
-if(cltype18 >= var_pvisibilitynode6->type->table_size) {
-var17 = 0;
+if(cltype16 >= var_pvisibilitynode6->type->table_size) {
+var15 = 0;
 } else {
-var17 = var_pvisibilitynode6->type->type_table[cltype18] == idtype19;
+var15 = var_pvisibilitynode6->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18107);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17444);
 exit(1);
 }
 var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype21 = type_nullable_parser_nodes__TKwvar.color;
-idtype22 = type_nullable_parser_nodes__TKwvar.id;
+cltype19 = type_nullable_parser_nodes__TKwvar.color;
+idtype20 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var20 = 1;
+var18 = 1;
 } else {
-if(cltype21 >= var_tkwvarnode7->type->table_size) {
-var20 = 0;
+if(cltype19 >= var_tkwvarnode7->type->table_size) {
+var18 = 0;
 } else {
-var20 = var_tkwvarnode7->type->type_table[cltype21] == idtype22;
+var18 = var_tkwvarnode7->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18109);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17446);
 exit(1);
 }
 var_tattridnode8 = var_nodearraylist6;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype24 = type_nullable_parser_nodes__TAttrid.color;
-idtype25 = type_nullable_parser_nodes__TAttrid.id;
+cltype22 = type_nullable_parser_nodes__TAttrid.color;
+idtype23 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var23 = 1;
+var21 = 1;
 } else {
-if(cltype24 >= var_tattridnode8->type->table_size) {
-var23 = 0;
+if(cltype22 >= var_tattridnode8->type->table_size) {
+var21 = 0;
 } else {
-var23 = var_tattridnode8->type->type_table[cltype24] == idtype25;
+var21 = var_tattridnode8->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18111);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17448);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist9;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype27 = type_nullable_parser_nodes__AExpr.color;
-idtype28 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var26 = 1;
+var_ptypenode10 = var_nodearraylist7;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype25 = type_nullable_parser_nodes__AType.color;
+idtype26 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var24 = 1;
 } else {
-if(cltype27 >= var_pexprnode12->type->table_size) {
-var26 = 0;
+if(cltype25 >= var_ptypenode10->type->table_size) {
+var24 = 0;
 } else {
-var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+var24 = var_ptypenode10->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18113);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17450);
 exit(1);
 }
-var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var28 = NULL;
+var29 = NULL;
 var30 = NULL;
 var31 = NULL;
-var32 = NULL;
-var33 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var30, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var31, var32, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var29);
-var_ppropdefnode1 = var29;
-var_node_list = var_ppropdefnode1;
-var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction402> */
-var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var_pablenode3, var28, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var27);
+var_ppropdefnode1 = var27;
+var_node_list = var_ppropdefnode1;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction392> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction402#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction402__action(val* self, val* p0) {
-parser__ReduceAction402__action(self, p0);
+/* method parser#ReduceAction392#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction392__action(val* self, val* p0) {
+parser__ReduceAction392__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction403#action for (self: ReduceAction403, Parser) */
-void parser__ReduceAction403__action(val* self, val* p0) {
+/* method parser#ReduceAction393#action for (self: ReduceAction393, Parser) */
+void parser__ReduceAction393__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var7 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
 short int var11 /* : Bool */;
 int cltype12;
 int idtype13;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
+val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
 short int var14 /* : Bool */;
 int cltype15;
 int idtype16;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
 short int var17 /* : Bool */;
 int cltype18;
 int idtype19;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
 short int var20 /* : Bool */;
 int cltype21;
 int idtype22;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AAttrPropdef */;
-val* var30 /* : null */;
-val* var31 /* : null */;
-val* var32 /* : null */;
-val* var33 /* : null */;
+val* var23 /* : AAttrPropdef */;
+val* var24 /* : null */;
+val* var25 /* : null */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var34 /* : Int */;
-long var35 /* : Int */;
+long var29 /* : Int */;
+long var30 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist6 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist5 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist4 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist3 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist2 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
+var_nodearraylist1 = var6;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var10 = 1;
+var7 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18146);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype12 = type_nullable_parser_nodes__AAble.color;
-idtype13 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var11 = 1;
-} else {
-if(cltype12 >= var_pablenode3->type->table_size) {
-var11 = 0;
+var7 = 0;
 } else {
-var11 = var_pablenode3->type->type_table[cltype12] == idtype13;
+var7 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18148);
+if (!var7) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17480);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
+var_pablenode4 = var_nodearraylist2;
 /* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype15 = type_nullable_parser_nodes__AAble.color;
-idtype16 = type_nullable_parser_nodes__AAble.id;
+cltype9 = type_nullable_parser_nodes__AAble.color;
+idtype10 = type_nullable_parser_nodes__AAble.id;
 if(var_pablenode4 == NULL) {
-var14 = 1;
+var8 = 1;
 } else {
-if(cltype15 >= var_pablenode4->type->table_size) {
-var14 = 0;
+if(cltype9 >= var_pablenode4->type->table_size) {
+var8 = 0;
 } else {
-var14 = var_pablenode4->type->type_table[cltype15] == idtype16;
+var8 = var_pablenode4->type->type_table[cltype9] == idtype10;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18150);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17482);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
+var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype18 = type_nullable_parser_nodes__AVisibility.color;
-idtype19 = type_nullable_parser_nodes__AVisibility.id;
+cltype12 = type_nullable_parser_nodes__AVisibility.color;
+idtype13 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var17 = 1;
+var11 = 1;
 } else {
-if(cltype18 >= var_pvisibilitynode6->type->table_size) {
-var17 = 0;
+if(cltype12 >= var_pvisibilitynode6->type->table_size) {
+var11 = 0;
 } else {
-var17 = var_pvisibilitynode6->type->type_table[cltype18] == idtype19;
+var11 = var_pvisibilitynode6->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18152);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17484);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
+var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype21 = type_nullable_parser_nodes__TKwvar.color;
-idtype22 = type_nullable_parser_nodes__TKwvar.id;
+cltype15 = type_nullable_parser_nodes__TKwvar.color;
+idtype16 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var20 = 1;
+var14 = 1;
 } else {
-if(cltype21 >= var_tkwvarnode7->type->table_size) {
-var20 = 0;
+if(cltype15 >= var_tkwvarnode7->type->table_size) {
+var14 = 0;
 } else {
-var20 = var_tkwvarnode7->type->type_table[cltype21] == idtype22;
+var14 = var_tkwvarnode7->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18154);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17486);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
+var_tattridnode8 = var_nodearraylist5;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype24 = type_nullable_parser_nodes__TAttrid.color;
-idtype25 = type_nullable_parser_nodes__TAttrid.id;
+cltype18 = type_nullable_parser_nodes__TAttrid.color;
+idtype19 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var23 = 1;
+var17 = 1;
 } else {
-if(cltype24 >= var_tattridnode8->type->table_size) {
-var23 = 0;
+if(cltype18 >= var_tattridnode8->type->table_size) {
+var17 = 0;
 } else {
-var23 = var_tattridnode8->type->type_table[cltype24] == idtype25;
+var17 = var_tattridnode8->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18156);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17488);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist9;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype27 = type_nullable_parser_nodes__AExpr.color;
-idtype28 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var26 = 1;
+var_ptypenode10 = var_nodearraylist6;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype21 = type_nullable_parser_nodes__AType.color;
+idtype22 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var20 = 1;
 } else {
-if(cltype27 >= var_pexprnode12->type->table_size) {
-var26 = 0;
+if(cltype21 >= var_ptypenode10->type->table_size) {
+var20 = 0;
 } else {
-var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+var20 = var_ptypenode10->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18158);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17490);
 exit(1);
 }
-var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var30 = NULL;
-var31 = NULL;
-var32 = NULL;
-var33 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var_pablenode3, var_pablenode4, var30, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var31, var32, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var29);
-var_ppropdefnode1 = var29;
+var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var24 = NULL;
+var25 = NULL;
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var_pablenode4, var25, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var26, var_ptypenode10, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var23);
+var_ppropdefnode1 = var23;
 var_node_list = var_ppropdefnode1;
-var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction403> */
-var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
+var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction393> */
+var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction403#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction403__action(val* self, val* p0) {
-parser__ReduceAction403__action(self, p0);
+/* method parser#ReduceAction393#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction393__action(val* self, val* p0) {
+parser__ReduceAction393__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction404#action for (self: ReduceAction404, Parser) */
-void parser__ReduceAction404__action(val* self, val* p0) {
+/* method parser#ReduceAction394#action for (self: ReduceAction394, Parser) */
+void parser__ReduceAction394__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var4 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var11 /* : Bool */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
 short int var12 /* : Bool */;
 int cltype13;
 int idtype14;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
+val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
 short int var15 /* : Bool */;
 int cltype16;
 int idtype17;
-val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
+val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
 short int var18 /* : Bool */;
 int cltype19;
 int idtype20;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
 short int var21 /* : Bool */;
 int cltype22;
 int idtype23;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
 short int var24 /* : Bool */;
 int cltype25;
 int idtype26;
-val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var27 /* : Bool */;
-int cltype28;
-int idtype29;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-val* var33 /* : AAttrPropdef */;
-val* var34 /* : null */;
-val* var35 /* : null */;
-val* var36 /* : null */;
+val* var27 /* : AAttrPropdef */;
+val* var28 /* : null */;
+val* var29 /* : null */;
+val* var30 /* : null */;
+val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var37 /* : Int */;
-long var38 /* : Int */;
+long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var1;
+var_nodearraylist7 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var2;
+var_nodearraylist6 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var3;
+var_nodearraylist5 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var4;
+var_nodearraylist4 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var5;
+var_nodearraylist3 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var6;
+var_nodearraylist2 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var10;
+var_nodearraylist1 = var7;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var11 = 1;
+var8 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var11 = 0;
-} else {
-var11 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18192);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype13 = type_nullable_parser_nodes__AAble.color;
-idtype14 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var12 = 1;
-} else {
-if(cltype13 >= var_pablenode3->type->table_size) {
-var12 = 0;
+var8 = 0;
 } else {
-var12 = var_pablenode3->type->type_table[cltype13] == idtype14;
+var8 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18194);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17521);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
+var_pablenode4 = var_nodearraylist2;
 /* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype16 = type_nullable_parser_nodes__AAble.color;
-idtype17 = type_nullable_parser_nodes__AAble.id;
+cltype10 = type_nullable_parser_nodes__AAble.color;
+idtype11 = type_nullable_parser_nodes__AAble.id;
 if(var_pablenode4 == NULL) {
-var15 = 1;
+var9 = 1;
 } else {
-if(cltype16 >= var_pablenode4->type->table_size) {
-var15 = 0;
+if(cltype10 >= var_pablenode4->type->table_size) {
+var9 = 0;
 } else {
-var15 = var_pablenode4->type->type_table[cltype16] == idtype17;
+var9 = var_pablenode4->type->type_table[cltype10] == idtype11;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18196);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17523);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist4;
+var_tkwredefnode5 = var_nodearraylist3;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype19 = type_nullable_parser_nodes__TKwredef.color;
-idtype20 = type_nullable_parser_nodes__TKwredef.id;
+cltype13 = type_nullable_parser_nodes__TKwredef.color;
+idtype14 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var18 = 1;
+var12 = 1;
 } else {
-if(cltype19 >= var_tkwredefnode5->type->table_size) {
-var18 = 0;
+if(cltype13 >= var_tkwredefnode5->type->table_size) {
+var12 = 0;
 } else {
-var18 = var_tkwredefnode5->type->type_table[cltype19] == idtype20;
+var12 = var_tkwredefnode5->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18198);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17525);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist5;
+var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype22 = type_nullable_parser_nodes__AVisibility.color;
-idtype23 = type_nullable_parser_nodes__AVisibility.id;
+cltype16 = type_nullable_parser_nodes__AVisibility.color;
+idtype17 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var21 = 1;
+var15 = 1;
 } else {
-if(cltype22 >= var_pvisibilitynode6->type->table_size) {
-var21 = 0;
+if(cltype16 >= var_pvisibilitynode6->type->table_size) {
+var15 = 0;
 } else {
-var21 = var_pvisibilitynode6->type->type_table[cltype22] == idtype23;
+var15 = var_pvisibilitynode6->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18200);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17527);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist6;
+var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype25 = type_nullable_parser_nodes__TKwvar.color;
-idtype26 = type_nullable_parser_nodes__TKwvar.id;
+cltype19 = type_nullable_parser_nodes__TKwvar.color;
+idtype20 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var24 = 1;
+var18 = 1;
 } else {
-if(cltype25 >= var_tkwvarnode7->type->table_size) {
-var24 = 0;
+if(cltype19 >= var_tkwvarnode7->type->table_size) {
+var18 = 0;
 } else {
-var24 = var_tkwvarnode7->type->type_table[cltype25] == idtype26;
+var18 = var_tkwvarnode7->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18202);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17529);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist7;
+var_tattridnode8 = var_nodearraylist6;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype28 = type_nullable_parser_nodes__TAttrid.color;
-idtype29 = type_nullable_parser_nodes__TAttrid.id;
+cltype22 = type_nullable_parser_nodes__TAttrid.color;
+idtype23 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var27 = 1;
+var21 = 1;
 } else {
-if(cltype28 >= var_tattridnode8->type->table_size) {
-var27 = 0;
+if(cltype22 >= var_tattridnode8->type->table_size) {
+var21 = 0;
 } else {
-var27 = var_tattridnode8->type->type_table[cltype28] == idtype29;
+var21 = var_tattridnode8->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var27) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18204);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17531);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist10;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype31 = type_nullable_parser_nodes__AExpr.color;
-idtype32 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var30 = 1;
+var_ptypenode10 = var_nodearraylist7;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype25 = type_nullable_parser_nodes__AType.color;
+idtype26 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var24 = 1;
 } else {
-if(cltype31 >= var_pexprnode12->type->table_size) {
-var30 = 0;
+if(cltype25 >= var_ptypenode10->type->table_size) {
+var24 = 0;
 } else {
-var30 = var_pexprnode12->type->type_table[cltype31] == idtype32;
+var24 = var_ptypenode10->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18206);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17533);
 exit(1);
 }
-var33 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var34 = NULL;
-var35 = NULL;
-var36 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var33, var_pdocnode2, var_pablenode3, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var34, var35, var36, var_pexprnode12) /* init_aattrpropdef on <var33:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var33);
-var_ppropdefnode1 = var33;
+var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var28 = NULL;
+var29 = NULL;
+var30 = NULL;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var28, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var27);
+var_ppropdefnode1 = var27;
 var_node_list = var_ppropdefnode1;
-var37 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction404> */
-var38 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var37) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var38, var_node_list) /* push on <var_p:Parser>*/;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction394> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction404#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction404__action(val* self, val* p0) {
-parser__ReduceAction404__action(self, p0);
+/* method parser#ReduceAction394#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction394__action(val* self, val* p0) {
+parser__ReduceAction394__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction405#action for (self: ReduceAction405, Parser) */
-void parser__ReduceAction405__action(val* self, val* p0) {
+/* method parser#ReduceAction395#action for (self: ReduceAction395, Parser) */
+void parser__ReduceAction395__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var9 /* : Bool */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
 val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
-val* var25 /* : AAttrPropdef */;
-val* var26 /* : null */;
-val* var27 /* : null */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var27 /* : AAttrPropdef */;
 val* var28 /* : null */;
 val* var29 /* : null */;
 val* var30 /* : null */;
+val* var31 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var31 /* : Int */;
 long var32 /* : Int */;
+long var33 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var1;
+var_nodearraylist7 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var2;
+var_nodearraylist6 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var3;
+var_nodearraylist5 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var4;
+var_nodearraylist4 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var5;
+var_nodearraylist3 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var6;
+var_nodearraylist2 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var8;
+var_nodearraylist1 = var7;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var9 = 1;
+var8 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
+var8 = 0;
+} else {
+var8 = var_pdocnode2->type->type_table[cltype] == idtype;
+}
+}
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17564);
+exit(1);
+}
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype10 = type_nullable_parser_nodes__AAble.color;
+idtype11 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var9 = 1;
+} else {
+if(cltype10 >= var_pablenode3->type->table_size) {
 var9 = 0;
 } else {
-var9 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pablenode3->type->type_table[cltype10] == idtype11;
 }
 }
 if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18238);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17566);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist2;
+var_pablenode4 = var_nodearraylist3;
+/* <var_pablenode4:nullable Object> isa nullable AAble */
+cltype13 = type_nullable_parser_nodes__AAble.color;
+idtype14 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode4 == NULL) {
+var12 = 1;
+} else {
+if(cltype13 >= var_pablenode4->type->table_size) {
+var12 = 0;
+} else {
+var12 = var_pablenode4->type->type_table[cltype13] == idtype14;
+}
+}
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17568);
+exit(1);
+}
+var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype11 = type_nullable_parser_nodes__AVisibility.color;
-idtype12 = type_nullable_parser_nodes__AVisibility.id;
+cltype16 = type_nullable_parser_nodes__AVisibility.color;
+idtype17 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var10 = 1;
+var15 = 1;
 } else {
-if(cltype11 >= var_pvisibilitynode6->type->table_size) {
-var10 = 0;
+if(cltype16 >= var_pvisibilitynode6->type->table_size) {
+var15 = 0;
 } else {
-var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
+var15 = var_pvisibilitynode6->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18240);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17570);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist3;
+var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype14 = type_nullable_parser_nodes__TKwvar.color;
-idtype15 = type_nullable_parser_nodes__TKwvar.id;
+cltype19 = type_nullable_parser_nodes__TKwvar.color;
+idtype20 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var13 = 1;
+var18 = 1;
 } else {
-if(cltype14 >= var_tkwvarnode7->type->table_size) {
-var13 = 0;
+if(cltype19 >= var_tkwvarnode7->type->table_size) {
+var18 = 0;
 } else {
-var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
+var18 = var_tkwvarnode7->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18242);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17572);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist4;
+var_tattridnode8 = var_nodearraylist6;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype17 = type_nullable_parser_nodes__TAttrid.color;
-idtype18 = type_nullable_parser_nodes__TAttrid.id;
+cltype22 = type_nullable_parser_nodes__TAttrid.color;
+idtype23 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var16 = 1;
+var21 = 1;
 } else {
-if(cltype17 >= var_tattridnode8->type->table_size) {
-var16 = 0;
+if(cltype22 >= var_tattridnode8->type->table_size) {
+var21 = 0;
 } else {
-var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
+var21 = var_tattridnode8->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18244);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17574);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist5;
+var_ptypenode10 = var_nodearraylist7;
 /* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype20 = type_nullable_parser_nodes__AType.color;
-idtype21 = type_nullable_parser_nodes__AType.id;
+cltype25 = type_nullable_parser_nodes__AType.color;
+idtype26 = type_nullable_parser_nodes__AType.id;
 if(var_ptypenode10 == NULL) {
-var19 = 1;
-} else {
-if(cltype20 >= var_ptypenode10->type->table_size) {
-var19 = 0;
-} else {
-var19 = var_ptypenode10->type->type_table[cltype20] == idtype21;
-}
-}
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18246);
-exit(1);
-}
-var_pexprnode12 = var_nodearraylist8;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype23 = type_nullable_parser_nodes__AExpr.color;
-idtype24 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var22 = 1;
+var24 = 1;
 } else {
-if(cltype23 >= var_pexprnode12->type->table_size) {
-var22 = 0;
+if(cltype25 >= var_ptypenode10->type->table_size) {
+var24 = 0;
 } else {
-var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
+var24 = var_ptypenode10->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18248);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17576);
 exit(1);
 }
-var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var26 = NULL;
-var27 = NULL;
+var27 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
 var28 = NULL;
 var29 = NULL;
 var30 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var26, var27, var28, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var25);
-var_ppropdefnode1 = var25;
+var31 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var27->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var27, var_pdocnode2, var_pablenode3, var_pablenode4, var28, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var31) /* init_aattrpropdef on <var27:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var27);
+var_ppropdefnode1 = var27;
 var_node_list = var_ppropdefnode1;
-var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction405> */
-var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
+var32 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction395> */
+var33 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var32) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var33, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction405#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction405__action(val* self, val* p0) {
-parser__ReduceAction405__action(self, p0);
+/* method parser#ReduceAction395#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction395__action(val* self, val* p0) {
+parser__ReduceAction395__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction406#action for (self: ReduceAction406, Parser) */
-void parser__ReduceAction406__action(val* self, val* p0) {
+/* method parser#ReduceAction396#action for (self: ReduceAction396, Parser) */
+void parser__ReduceAction396__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
+short int var25 /* : Bool */;
+int cltype26;
+int idtype27;
 val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
-val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AAttrPropdef */;
-val* var30 /* : null */;
-val* var31 /* : null */;
+short int var28 /* : Bool */;
+int cltype29;
+int idtype30;
+val* var31 /* : AAttrPropdef */;
 val* var32 /* : null */;
 val* var33 /* : null */;
+val* var34 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var34 /* : Int */;
 long var35 /* : Int */;
+long var36 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
+var_nodearraylist3 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
+var_nodearraylist2 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
+var9 = 1;
+} else {
+if(cltype >= var_pdocnode2->type->table_size) {
+var9 = 0;
+} else {
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
+}
+}
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17608);
+exit(1);
+}
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype11 = type_nullable_parser_nodes__AAble.color;
+idtype12 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
 var10 = 1;
 } else {
-if(cltype >= var_pdocnode2->type->table_size) {
+if(cltype11 >= var_pablenode3->type->table_size) {
 var10 = 0;
 } else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pablenode3->type->type_table[cltype11] == idtype12;
 }
 }
 if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18281);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17610);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist2;
+var_pablenode4 = var_nodearraylist3;
+/* <var_pablenode4:nullable Object> isa nullable AAble */
+cltype14 = type_nullable_parser_nodes__AAble.color;
+idtype15 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode4 == NULL) {
+var13 = 1;
+} else {
+if(cltype14 >= var_pablenode4->type->table_size) {
+var13 = 0;
+} else {
+var13 = var_pablenode4->type->type_table[cltype14] == idtype15;
+}
+}
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17612);
+exit(1);
+}
+var_tkwredefnode5 = var_nodearraylist4;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype12 = type_nullable_parser_nodes__TKwredef.color;
-idtype13 = type_nullable_parser_nodes__TKwredef.id;
+cltype17 = type_nullable_parser_nodes__TKwredef.color;
+idtype18 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var11 = 1;
+var16 = 1;
 } else {
-if(cltype12 >= var_tkwredefnode5->type->table_size) {
-var11 = 0;
+if(cltype17 >= var_tkwredefnode5->type->table_size) {
+var16 = 0;
 } else {
-var11 = var_tkwredefnode5->type->type_table[cltype12] == idtype13;
+var16 = var_tkwredefnode5->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18283);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17614);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
+var_pvisibilitynode6 = var_nodearraylist5;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
+cltype20 = type_nullable_parser_nodes__AVisibility.color;
+idtype21 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var14 = 1;
+var19 = 1;
 } else {
-if(cltype15 >= var_pvisibilitynode6->type->table_size) {
-var14 = 0;
+if(cltype20 >= var_pvisibilitynode6->type->table_size) {
+var19 = 0;
 } else {
-var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
+var19 = var_pvisibilitynode6->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18285);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17616);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
+var_tkwvarnode7 = var_nodearraylist6;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype18 = type_nullable_parser_nodes__TKwvar.color;
-idtype19 = type_nullable_parser_nodes__TKwvar.id;
+cltype23 = type_nullable_parser_nodes__TKwvar.color;
+idtype24 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var17 = 1;
+var22 = 1;
 } else {
-if(cltype18 >= var_tkwvarnode7->type->table_size) {
-var17 = 0;
+if(cltype23 >= var_tkwvarnode7->type->table_size) {
+var22 = 0;
 } else {
-var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
+var22 = var_tkwvarnode7->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18287);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17618);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
+var_tattridnode8 = var_nodearraylist7;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype21 = type_nullable_parser_nodes__TAttrid.color;
-idtype22 = type_nullable_parser_nodes__TAttrid.id;
+cltype26 = type_nullable_parser_nodes__TAttrid.color;
+idtype27 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var20 = 1;
+var25 = 1;
 } else {
-if(cltype21 >= var_tattridnode8->type->table_size) {
-var20 = 0;
+if(cltype26 >= var_tattridnode8->type->table_size) {
+var25 = 0;
 } else {
-var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
+var25 = var_tattridnode8->type->type_table[cltype26] == idtype27;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18289);
+if (!var25) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17620);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist6;
+var_ptypenode10 = var_nodearraylist8;
 /* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype24 = type_nullable_parser_nodes__AType.color;
-idtype25 = type_nullable_parser_nodes__AType.id;
+cltype29 = type_nullable_parser_nodes__AType.color;
+idtype30 = type_nullable_parser_nodes__AType.id;
 if(var_ptypenode10 == NULL) {
-var23 = 1;
-} else {
-if(cltype24 >= var_ptypenode10->type->table_size) {
-var23 = 0;
-} else {
-var23 = var_ptypenode10->type->type_table[cltype24] == idtype25;
-}
-}
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18291);
-exit(1);
-}
-var_pexprnode12 = var_nodearraylist9;
-/* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype27 = type_nullable_parser_nodes__AExpr.color;
-idtype28 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode12 == NULL) {
-var26 = 1;
+var28 = 1;
 } else {
-if(cltype27 >= var_pexprnode12->type->table_size) {
-var26 = 0;
+if(cltype29 >= var_ptypenode10->type->table_size) {
+var28 = 0;
 } else {
-var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+var28 = var_ptypenode10->type->type_table[cltype29] == idtype30;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18293);
+if (!var28) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17622);
 exit(1);
 }
-var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var30 = NULL;
-var31 = NULL;
+var31 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
 var32 = NULL;
 var33 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var30, var31, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var32, var_ptypenode10, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var29);
-var_ppropdefnode1 = var29;
+var34 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var31->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var31, var_pdocnode2, var_pablenode3, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var32, var_ptypenode10, var33, var34) /* init_aattrpropdef on <var31:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var31);
+var_ppropdefnode1 = var31;
 var_node_list = var_ppropdefnode1;
-var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction406> */
-var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
+var35 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction396> */
+var36 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var35) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var36, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction406#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction406__action(val* self, val* p0) {
-parser__ReduceAction406__action(self, p0);
+/* method parser#ReduceAction396#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction396__action(val* self, val* p0) {
+parser__ReduceAction396__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction407#action for (self: ReduceAction407, Parser) */
-void parser__ReduceAction407__action(val* self, val* p0) {
+/* method parser#ReduceAction397#action for (self: ReduceAction397, Parser) */
+void parser__ReduceAction397__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var8 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
 val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AAttrPropdef */;
-val* var30 /* : null */;
-val* var31 /* : null */;
-val* var32 /* : null */;
-val* var33 /* : null */;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
+val* var21 /* : AAttrPropdef */;
+val* var22 /* : null */;
+val* var23 /* : null */;
+val* var24 /* : null */;
+val* var25 /* : null */;
+val* var26 /* : null */;
+val* var27 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var34 /* : Int */;
-long var35 /* : Int */;
+long var28 /* : Int */;
+long var29 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist7 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist6 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist5 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist4 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist3 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
-var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
-var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
-var_pdocnode2 = var_nodearraylist1;
-/* <var_pdocnode2:nullable Object> isa nullable ADoc */
-cltype = type_nullable_parser_nodes__ADoc.color;
-idtype = type_nullable_parser_nodes__ADoc.id;
-if(var_pdocnode2 == NULL) {
-var10 = 1;
-} else {
-if(cltype >= var_pdocnode2->type->table_size) {
-var10 = 0;
-} else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18326);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype12 = type_nullable_parser_nodes__AAble.color;
-idtype13 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var11 = 1;
+var_nodearraylist2 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var7;
+var_pdocnode2 = var_nodearraylist1;
+/* <var_pdocnode2:nullable Object> isa nullable ADoc */
+cltype = type_nullable_parser_nodes__ADoc.color;
+idtype = type_nullable_parser_nodes__ADoc.id;
+if(var_pdocnode2 == NULL) {
+var8 = 1;
 } else {
-if(cltype12 >= var_pablenode3->type->table_size) {
-var11 = 0;
+if(cltype >= var_pdocnode2->type->table_size) {
+var8 = 0;
 } else {
-var11 = var_pablenode3->type->type_table[cltype12] == idtype13;
+var8 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18328);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17653);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
+var_pvisibilitynode6 = var_nodearraylist2;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
+cltype10 = type_nullable_parser_nodes__AVisibility.color;
+idtype11 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var14 = 1;
+var9 = 1;
 } else {
-if(cltype15 >= var_pvisibilitynode6->type->table_size) {
-var14 = 0;
+if(cltype10 >= var_pvisibilitynode6->type->table_size) {
+var9 = 0;
 } else {
-var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
+var9 = var_pvisibilitynode6->type->type_table[cltype10] == idtype11;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18330);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17655);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
+var_tkwvarnode7 = var_nodearraylist3;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype18 = type_nullable_parser_nodes__TKwvar.color;
-idtype19 = type_nullable_parser_nodes__TKwvar.id;
+cltype13 = type_nullable_parser_nodes__TKwvar.color;
+idtype14 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var17 = 1;
+var12 = 1;
 } else {
-if(cltype18 >= var_tkwvarnode7->type->table_size) {
-var17 = 0;
+if(cltype13 >= var_tkwvarnode7->type->table_size) {
+var12 = 0;
 } else {
-var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
+var12 = var_tkwvarnode7->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18332);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17657);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
+var_tattridnode8 = var_nodearraylist4;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype21 = type_nullable_parser_nodes__TAttrid.color;
-idtype22 = type_nullable_parser_nodes__TAttrid.id;
+cltype16 = type_nullable_parser_nodes__TAttrid.color;
+idtype17 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var20 = 1;
-} else {
-if(cltype21 >= var_tattridnode8->type->table_size) {
-var20 = 0;
-} else {
-var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
-}
-}
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18334);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist6;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype24 = type_nullable_parser_nodes__AType.color;
-idtype25 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var23 = 1;
+var15 = 1;
 } else {
-if(cltype24 >= var_ptypenode10->type->table_size) {
-var23 = 0;
+if(cltype16 >= var_tattridnode8->type->table_size) {
+var15 = 0;
 } else {
-var23 = var_ptypenode10->type->type_table[cltype24] == idtype25;
+var15 = var_tattridnode8->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18336);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17659);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist9;
+var_pexprnode12 = var_nodearraylist7;
 /* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype27 = type_nullable_parser_nodes__AExpr.color;
-idtype28 = type_nullable_parser_nodes__AExpr.id;
+cltype19 = type_nullable_parser_nodes__AExpr.color;
+idtype20 = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode12 == NULL) {
-var26 = 1;
+var18 = 1;
 } else {
-if(cltype27 >= var_pexprnode12->type->table_size) {
-var26 = 0;
+if(cltype19 >= var_pexprnode12->type->table_size) {
+var18 = 0;
 } else {
-var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+var18 = var_pexprnode12->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18338);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17661);
 exit(1);
 }
-var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var30 = NULL;
-var31 = NULL;
-var32 = NULL;
-var33 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var_pablenode3, var30, var31, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var32, var_ptypenode10, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var29);
-var_ppropdefnode1 = var29;
+var21 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var22 = NULL;
+var23 = NULL;
+var24 = NULL;
+var25 = NULL;
+var26 = NULL;
+var27 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var21->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var21, var_pdocnode2, var22, var23, var24, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var25, var26, var27, var_pexprnode12) /* init_aattrpropdef on <var21:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var21);
+var_ppropdefnode1 = var21;
 var_node_list = var_ppropdefnode1;
-var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction407> */
-var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
+var28 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction397> */
+var29 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var28) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var29, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction407#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction407__action(val* self, val* p0) {
-parser__ReduceAction407__action(self, p0);
+/* method parser#ReduceAction397#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction397__action(val* self, val* p0) {
+parser__ReduceAction397__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction408#action for (self: ReduceAction408, Parser) */
-void parser__ReduceAction408__action(val* self, val* p0) {
+/* method parser#ReduceAction398#action for (self: ReduceAction398, Parser) */
+void parser__ReduceAction398__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var11 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var27 /* : Bool */;
-int cltype28;
-int idtype29;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
 val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-val* var33 /* : AAttrPropdef */;
-val* var34 /* : null */;
-val* var35 /* : null */;
-val* var36 /* : null */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AAttrPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
+val* var29 /* : null */;
+val* var30 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var37 /* : Int */;
-long var38 /* : Int */;
+long var31 /* : Int */;
+long var32 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var6;
+var_nodearraylist3 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var7;
+var_nodearraylist2 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var10;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var11 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var11 = 0;
-} else {
-var11 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18372);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype13 = type_nullable_parser_nodes__AAble.color;
-idtype14 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var12 = 1;
-} else {
-if(cltype13 >= var_pablenode3->type->table_size) {
-var12 = 0;
+var9 = 0;
 } else {
-var12 = var_pablenode3->type->type_table[cltype13] == idtype14;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18374);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17693);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist3;
+var_tkwredefnode5 = var_nodearraylist2;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype16 = type_nullable_parser_nodes__TKwredef.color;
-idtype17 = type_nullable_parser_nodes__TKwredef.id;
+cltype11 = type_nullable_parser_nodes__TKwredef.color;
+idtype12 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var15 = 1;
+var10 = 1;
 } else {
-if(cltype16 >= var_tkwredefnode5->type->table_size) {
-var15 = 0;
+if(cltype11 >= var_tkwredefnode5->type->table_size) {
+var10 = 0;
 } else {
-var15 = var_tkwredefnode5->type->type_table[cltype16] == idtype17;
+var10 = var_tkwredefnode5->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18376);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17695);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
+var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype19 = type_nullable_parser_nodes__AVisibility.color;
-idtype20 = type_nullable_parser_nodes__AVisibility.id;
+cltype14 = type_nullable_parser_nodes__AVisibility.color;
+idtype15 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var18 = 1;
+var13 = 1;
 } else {
-if(cltype19 >= var_pvisibilitynode6->type->table_size) {
-var18 = 0;
+if(cltype14 >= var_pvisibilitynode6->type->table_size) {
+var13 = 0;
 } else {
-var18 = var_pvisibilitynode6->type->type_table[cltype19] == idtype20;
+var13 = var_pvisibilitynode6->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18378);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17697);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
+var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype22 = type_nullable_parser_nodes__TKwvar.color;
-idtype23 = type_nullable_parser_nodes__TKwvar.id;
+cltype17 = type_nullable_parser_nodes__TKwvar.color;
+idtype18 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var21 = 1;
+var16 = 1;
 } else {
-if(cltype22 >= var_tkwvarnode7->type->table_size) {
-var21 = 0;
+if(cltype17 >= var_tkwvarnode7->type->table_size) {
+var16 = 0;
 } else {
-var21 = var_tkwvarnode7->type->type_table[cltype22] == idtype23;
+var16 = var_tkwvarnode7->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18380);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17699);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
+var_tattridnode8 = var_nodearraylist5;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype25 = type_nullable_parser_nodes__TAttrid.color;
-idtype26 = type_nullable_parser_nodes__TAttrid.id;
+cltype20 = type_nullable_parser_nodes__TAttrid.color;
+idtype21 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var24 = 1;
-} else {
-if(cltype25 >= var_tattridnode8->type->table_size) {
-var24 = 0;
-} else {
-var24 = var_tattridnode8->type->type_table[cltype25] == idtype26;
-}
-}
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18382);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist7;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype28 = type_nullable_parser_nodes__AType.color;
-idtype29 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var27 = 1;
+var19 = 1;
 } else {
-if(cltype28 >= var_ptypenode10->type->table_size) {
-var27 = 0;
+if(cltype20 >= var_tattridnode8->type->table_size) {
+var19 = 0;
 } else {
-var27 = var_ptypenode10->type->type_table[cltype28] == idtype29;
+var19 = var_tattridnode8->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var27) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18384);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17701);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist10;
+var_pexprnode12 = var_nodearraylist8;
 /* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype31 = type_nullable_parser_nodes__AExpr.color;
-idtype32 = type_nullable_parser_nodes__AExpr.id;
+cltype23 = type_nullable_parser_nodes__AExpr.color;
+idtype24 = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode12 == NULL) {
-var30 = 1;
+var22 = 1;
 } else {
-if(cltype31 >= var_pexprnode12->type->table_size) {
-var30 = 0;
+if(cltype23 >= var_pexprnode12->type->table_size) {
+var22 = 0;
 } else {
-var30 = var_pexprnode12->type->type_table[cltype31] == idtype32;
+var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18386);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17703);
 exit(1);
 }
-var33 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var34 = NULL;
-var35 = NULL;
-var36 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var33, var_pdocnode2, var_pablenode3, var34, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var35, var_ptypenode10, var36, var_pexprnode12) /* init_aattrpropdef on <var33:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var33);
-var_ppropdefnode1 = var33;
+var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+var29 = NULL;
+var30 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var26, var27, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var37 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction408> */
-var38 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var37) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var38, var_node_list) /* push on <var_p:Parser>*/;
+var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction398> */
+var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction408#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction408__action(val* self, val* p0) {
-parser__ReduceAction408__action(self, p0);
+/* method parser#ReduceAction398#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction398__action(val* self, val* p0) {
+parser__ReduceAction398__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction409#action for (self: ReduceAction409, Parser) */
-void parser__ReduceAction409__action(val* self, val* p0) {
+/* method parser#ReduceAction399#action for (self: ReduceAction399, Parser) */
+void parser__ReduceAction399__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var10 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var23 /* : Bool */;
-int cltype24;
-int idtype25;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
 val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var26 /* : Bool */;
-int cltype27;
-int idtype28;
-val* var29 /* : AAttrPropdef */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AAttrPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
+val* var29 /* : null */;
 val* var30 /* : null */;
-val* var31 /* : null */;
-val* var32 /* : null */;
-val* var33 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var34 /* : Int */;
-long var35 /* : Int */;
+long var31 /* : Int */;
+long var32 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var6;
+var_nodearraylist3 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var7;
+var_nodearraylist2 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var9;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var10 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var10 = 0;
+var9 = 0;
 } else {
-var10 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18419);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17735);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype12 = type_nullable_parser_nodes__AAble.color;
-idtype13 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var11 = 1;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype11 = type_nullable_parser_nodes__AAble.color;
+idtype12 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var10 = 1;
 } else {
-if(cltype12 >= var_pablenode4->type->table_size) {
-var11 = 0;
+if(cltype11 >= var_pablenode3->type->table_size) {
+var10 = 0;
 } else {
-var11 = var_pablenode4->type->type_table[cltype12] == idtype13;
+var10 = var_pablenode3->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18421);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17737);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
+cltype14 = type_nullable_parser_nodes__AVisibility.color;
+idtype15 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var14 = 1;
-} else {
-if(cltype15 >= var_pvisibilitynode6->type->table_size) {
-var14 = 0;
-} else {
-var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
-}
-}
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18423);
-exit(1);
-}
-var_tkwvarnode7 = var_nodearraylist4;
-/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype18 = type_nullable_parser_nodes__TKwvar.color;
-idtype19 = type_nullable_parser_nodes__TKwvar.id;
-if(var_tkwvarnode7 == NULL) {
-var17 = 1;
+var13 = 1;
 } else {
-if(cltype18 >= var_tkwvarnode7->type->table_size) {
-var17 = 0;
+if(cltype14 >= var_pvisibilitynode6->type->table_size) {
+var13 = 0;
 } else {
-var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
+var13 = var_pvisibilitynode6->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18425);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17739);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist5;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype21 = type_nullable_parser_nodes__TAttrid.color;
-idtype22 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var20 = 1;
+var_tkwvarnode7 = var_nodearraylist4;
+/* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
+cltype17 = type_nullable_parser_nodes__TKwvar.color;
+idtype18 = type_nullable_parser_nodes__TKwvar.id;
+if(var_tkwvarnode7 == NULL) {
+var16 = 1;
 } else {
-if(cltype21 >= var_tattridnode8->type->table_size) {
-var20 = 0;
+if(cltype17 >= var_tkwvarnode7->type->table_size) {
+var16 = 0;
 } else {
-var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
+var16 = var_tkwvarnode7->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18427);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17741);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist6;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype24 = type_nullable_parser_nodes__AType.color;
-idtype25 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var23 = 1;
+var_tattridnode8 = var_nodearraylist5;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype20 = type_nullable_parser_nodes__TAttrid.color;
+idtype21 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var19 = 1;
 } else {
-if(cltype24 >= var_ptypenode10->type->table_size) {
-var23 = 0;
+if(cltype20 >= var_tattridnode8->type->table_size) {
+var19 = 0;
 } else {
-var23 = var_ptypenode10->type->type_table[cltype24] == idtype25;
+var19 = var_tattridnode8->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var23) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18429);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17743);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist9;
+var_pexprnode12 = var_nodearraylist8;
 /* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype27 = type_nullable_parser_nodes__AExpr.color;
-idtype28 = type_nullable_parser_nodes__AExpr.id;
+cltype23 = type_nullable_parser_nodes__AExpr.color;
+idtype24 = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode12 == NULL) {
-var26 = 1;
+var22 = 1;
 } else {
-if(cltype27 >= var_pexprnode12->type->table_size) {
-var26 = 0;
+if(cltype23 >= var_pexprnode12->type->table_size) {
+var22 = 0;
 } else {
-var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var26) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18431);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17745);
 exit(1);
 }
-var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+var29 = NULL;
 var30 = NULL;
-var31 = NULL;
-var32 = NULL;
-var33 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var30, var_pablenode4, var31, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var32, var_ptypenode10, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var29);
-var_ppropdefnode1 = var29;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var_pablenode3, var26, var27, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction409> */
-var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
+var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction399> */
+var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction409#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction409__action(val* self, val* p0) {
-parser__ReduceAction409__action(self, p0);
+/* method parser#ReduceAction399#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction399__action(val* self, val* p0) {
+parser__ReduceAction399__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction410#action for (self: ReduceAction410, Parser) */
-void parser__ReduceAction410__action(val* self, val* p0) {
+/* method parser#ReduceAction400#action for (self: ReduceAction400, Parser) */
+void parser__ReduceAction400__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var2 /* : nullable Object */;
 val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var3 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var11 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var27 /* : Bool */;
-int cltype28;
-int idtype29;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
 val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-val* var33 /* : AAttrPropdef */;
-val* var34 /* : null */;
-val* var35 /* : null */;
-val* var36 /* : null */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AAttrPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
+val* var32 /* : null */;
+val* var33 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var37 /* : Int */;
-long var38 /* : Int */;
+long var34 /* : Int */;
+long var35 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var5;
+var_nodearraylist5 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var6;
+var_nodearraylist4 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var7;
+var_nodearraylist3 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var8;
+var_nodearraylist2 = var8;
 var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var10;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var11 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var11 = 0;
+var10 = 0;
 } else {
-var11 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18465);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17778);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist2;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype13 = type_nullable_parser_nodes__AAble.color;
-idtype14 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var12 = 1;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype12 = type_nullable_parser_nodes__AAble.color;
+idtype13 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var11 = 1;
 } else {
-if(cltype13 >= var_pablenode4->type->table_size) {
-var12 = 0;
+if(cltype12 >= var_pablenode3->type->table_size) {
+var11 = 0;
 } else {
-var12 = var_pablenode4->type->type_table[cltype13] == idtype14;
+var11 = var_pablenode3->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18467);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17780);
 exit(1);
 }
 var_tkwredefnode5 = var_nodearraylist3;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype16 = type_nullable_parser_nodes__TKwredef.color;
-idtype17 = type_nullable_parser_nodes__TKwredef.id;
+cltype15 = type_nullable_parser_nodes__TKwredef.color;
+idtype16 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var15 = 1;
+var14 = 1;
 } else {
-if(cltype16 >= var_tkwredefnode5->type->table_size) {
-var15 = 0;
+if(cltype15 >= var_tkwredefnode5->type->table_size) {
+var14 = 0;
 } else {
-var15 = var_tkwredefnode5->type->type_table[cltype16] == idtype17;
+var14 = var_tkwredefnode5->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18469);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17782);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype19 = type_nullable_parser_nodes__AVisibility.color;
-idtype20 = type_nullable_parser_nodes__AVisibility.id;
+cltype18 = type_nullable_parser_nodes__AVisibility.color;
+idtype19 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var18 = 1;
+var17 = 1;
 } else {
-if(cltype19 >= var_pvisibilitynode6->type->table_size) {
-var18 = 0;
+if(cltype18 >= var_pvisibilitynode6->type->table_size) {
+var17 = 0;
 } else {
-var18 = var_pvisibilitynode6->type->type_table[cltype19] == idtype20;
+var17 = var_pvisibilitynode6->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18471);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17784);
 exit(1);
 }
 var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype22 = type_nullable_parser_nodes__TKwvar.color;
-idtype23 = type_nullable_parser_nodes__TKwvar.id;
+cltype21 = type_nullable_parser_nodes__TKwvar.color;
+idtype22 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var21 = 1;
-} else {
-if(cltype22 >= var_tkwvarnode7->type->table_size) {
-var21 = 0;
-} else {
-var21 = var_tkwvarnode7->type->type_table[cltype22] == idtype23;
-}
-}
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18473);
-exit(1);
-}
-var_tattridnode8 = var_nodearraylist6;
-/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype25 = type_nullable_parser_nodes__TAttrid.color;
-idtype26 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var24 = 1;
+var20 = 1;
 } else {
-if(cltype25 >= var_tattridnode8->type->table_size) {
-var24 = 0;
+if(cltype21 >= var_tkwvarnode7->type->table_size) {
+var20 = 0;
 } else {
-var24 = var_tattridnode8->type->type_table[cltype25] == idtype26;
+var20 = var_tkwvarnode7->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18475);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17786);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist7;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype28 = type_nullable_parser_nodes__AType.color;
-idtype29 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var27 = 1;
+var_tattridnode8 = var_nodearraylist6;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype24 = type_nullable_parser_nodes__TAttrid.color;
+idtype25 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var23 = 1;
 } else {
-if(cltype28 >= var_ptypenode10->type->table_size) {
-var27 = 0;
+if(cltype24 >= var_tattridnode8->type->table_size) {
+var23 = 0;
 } else {
-var27 = var_ptypenode10->type->type_table[cltype28] == idtype29;
+var23 = var_tattridnode8->type->type_table[cltype24] == idtype25;
 }
 }
-if (!var27) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18477);
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17788);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist10;
+var_pexprnode12 = var_nodearraylist9;
 /* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype31 = type_nullable_parser_nodes__AExpr.color;
-idtype32 = type_nullable_parser_nodes__AExpr.id;
+cltype27 = type_nullable_parser_nodes__AExpr.color;
+idtype28 = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode12 == NULL) {
-var30 = 1;
+var26 = 1;
 } else {
-if(cltype31 >= var_pexprnode12->type->table_size) {
-var30 = 0;
+if(cltype27 >= var_pexprnode12->type->table_size) {
+var26 = 0;
 } else {
-var30 = var_pexprnode12->type->type_table[cltype31] == idtype32;
+var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
 }
 }
-if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18479);
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17790);
 exit(1);
 }
-var33 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var34 = NULL;
-var35 = NULL;
-var36 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var33, var_pdocnode2, var34, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var35, var_ptypenode10, var36, var_pexprnode12) /* init_aattrpropdef on <var33:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var33);
-var_ppropdefnode1 = var33;
+var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var30 = NULL;
+var31 = NULL;
+var32 = NULL;
+var33 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var_pablenode3, var30, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var31, var32, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var37 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction410> */
-var38 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var37) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var38, var_node_list) /* push on <var_p:Parser>*/;
+var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction400> */
+var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction410#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction410__action(val* self, val* p0) {
-parser__ReduceAction410__action(self, p0);
+/* method parser#ReduceAction400#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction400__action(val* self, val* p0) {
+parser__ReduceAction400__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction411#action for (self: ReduceAction411, Parser) */
-void parser__ReduceAction411__action(val* self, val* p0) {
+/* method parser#ReduceAction401#action for (self: ReduceAction401, Parser) */
+void parser__ReduceAction401__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var11 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
 val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var15 /* : Bool */;
-int cltype16;
-int idtype17;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var18 /* : Bool */;
-int cltype19;
-int idtype20;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var21 /* : Bool */;
-int cltype22;
-int idtype23;
+short int var16 /* : Bool */;
+int cltype17;
+int idtype18;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var24 /* : Bool */;
-int cltype25;
-int idtype26;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var27 /* : Bool */;
-int cltype28;
-int idtype29;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
 val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var30 /* : Bool */;
-int cltype31;
-int idtype32;
-val* var33 /* : AAttrPropdef */;
-val* var34 /* : null */;
-val* var35 /* : null */;
-val* var36 /* : null */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AAttrPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
+val* var29 /* : null */;
+val* var30 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var37 /* : Int */;
-long var38 /* : Int */;
+long var31 /* : Int */;
+long var32 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var5;
+var_nodearraylist4 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var6;
+var_nodearraylist3 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var7;
+var_nodearraylist2 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var8;
-var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var10;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var11 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var11 = 0;
-} else {
-var11 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18513);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype13 = type_nullable_parser_nodes__AAble.color;
-idtype14 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var12 = 1;
-} else {
-if(cltype13 >= var_pablenode3->type->table_size) {
-var12 = 0;
+var9 = 0;
 } else {
-var12 = var_pablenode3->type->type_table[cltype13] == idtype14;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18515);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17822);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
+var_pablenode4 = var_nodearraylist2;
 /* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype16 = type_nullable_parser_nodes__AAble.color;
-idtype17 = type_nullable_parser_nodes__AAble.id;
+cltype11 = type_nullable_parser_nodes__AAble.color;
+idtype12 = type_nullable_parser_nodes__AAble.id;
 if(var_pablenode4 == NULL) {
-var15 = 1;
+var10 = 1;
 } else {
-if(cltype16 >= var_pablenode4->type->table_size) {
-var15 = 0;
+if(cltype11 >= var_pablenode4->type->table_size) {
+var10 = 0;
 } else {
-var15 = var_pablenode4->type->type_table[cltype16] == idtype17;
+var10 = var_pablenode4->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var15) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18517);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17824);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist4;
+var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype19 = type_nullable_parser_nodes__AVisibility.color;
-idtype20 = type_nullable_parser_nodes__AVisibility.id;
+cltype14 = type_nullable_parser_nodes__AVisibility.color;
+idtype15 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var18 = 1;
+var13 = 1;
 } else {
-if(cltype19 >= var_pvisibilitynode6->type->table_size) {
-var18 = 0;
+if(cltype14 >= var_pvisibilitynode6->type->table_size) {
+var13 = 0;
 } else {
-var18 = var_pvisibilitynode6->type->type_table[cltype19] == idtype20;
+var13 = var_pvisibilitynode6->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var18) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18519);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17826);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist5;
+var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype22 = type_nullable_parser_nodes__TKwvar.color;
-idtype23 = type_nullable_parser_nodes__TKwvar.id;
+cltype17 = type_nullable_parser_nodes__TKwvar.color;
+idtype18 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var21 = 1;
+var16 = 1;
 } else {
-if(cltype22 >= var_tkwvarnode7->type->table_size) {
-var21 = 0;
+if(cltype17 >= var_tkwvarnode7->type->table_size) {
+var16 = 0;
 } else {
-var21 = var_tkwvarnode7->type->type_table[cltype22] == idtype23;
+var16 = var_tkwvarnode7->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var21) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18521);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17828);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist6;
+var_tattridnode8 = var_nodearraylist5;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype25 = type_nullable_parser_nodes__TAttrid.color;
-idtype26 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode8 == NULL) {
-var24 = 1;
-} else {
-if(cltype25 >= var_tattridnode8->type->table_size) {
-var24 = 0;
-} else {
-var24 = var_tattridnode8->type->type_table[cltype25] == idtype26;
-}
-}
-if (!var24) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18523);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist7;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype28 = type_nullable_parser_nodes__AType.color;
-idtype29 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var27 = 1;
+cltype20 = type_nullable_parser_nodes__TAttrid.color;
+idtype21 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var19 = 1;
 } else {
-if(cltype28 >= var_ptypenode10->type->table_size) {
-var27 = 0;
+if(cltype20 >= var_tattridnode8->type->table_size) {
+var19 = 0;
 } else {
-var27 = var_ptypenode10->type->type_table[cltype28] == idtype29;
+var19 = var_tattridnode8->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var27) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18525);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17830);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist10;
+var_pexprnode12 = var_nodearraylist8;
 /* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype31 = type_nullable_parser_nodes__AExpr.color;
-idtype32 = type_nullable_parser_nodes__AExpr.id;
+cltype23 = type_nullable_parser_nodes__AExpr.color;
+idtype24 = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode12 == NULL) {
-var30 = 1;
+var22 = 1;
 } else {
-if(cltype31 >= var_pexprnode12->type->table_size) {
-var30 = 0;
+if(cltype23 >= var_pexprnode12->type->table_size) {
+var22 = 0;
 } else {
-var30 = var_pexprnode12->type->type_table[cltype31] == idtype32;
+var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
 }
 }
-if (!var30) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18527);
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17832);
 exit(1);
 }
-var33 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var34 = NULL;
-var35 = NULL;
-var36 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var33, var_pdocnode2, var_pablenode3, var_pablenode4, var34, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var35, var_ptypenode10, var36, var_pexprnode12) /* init_aattrpropdef on <var33:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var33);
-var_ppropdefnode1 = var33;
+var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+var29 = NULL;
+var30 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var26, var_pablenode4, var27, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var28, var29, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var37 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction411> */
-var38 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var37) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var38, var_node_list) /* push on <var_p:Parser>*/;
+var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction401> */
+var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction411#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction411__action(val* self, val* p0) {
-parser__ReduceAction411__action(self, p0);
+/* method parser#ReduceAction401#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction401__action(val* self, val* p0) {
+parser__ReduceAction401__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction412#action for (self: ReduceAction412, Parser) */
-void parser__ReduceAction412__action(val* self, val* p0) {
+/* method parser#ReduceAction402#action for (self: ReduceAction402, Parser) */
+void parser__ReduceAction402__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist11 /* var nodearraylist11: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
-val* var3 /* : nullable Object */;
 val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
-val* var4 /* : nullable Object */;
+val* var2 /* : nullable Object */;
 val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
-val* var5 /* : nullable Object */;
+val* var3 /* : nullable Object */;
 val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
-val* var6 /* : nullable Object */;
+val* var4 /* : nullable Object */;
 val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
-val* var7 /* : nullable Object */;
+val* var5 /* : nullable Object */;
 val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
-val* var8 /* : nullable Object */;
+val* var6 /* : nullable Object */;
 val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
-val* var9 /* : nullable Object */;
+val* var7 /* : nullable Object */;
 val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var10 /* : nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var11 /* : nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var12 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode3 /* var pablenode3: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
 val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var19 /* : Bool */;
-int cltype20;
-int idtype21;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var25 /* : Bool */;
-int cltype26;
-int idtype27;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
 val* var_tattridnode8 /* var tattridnode8: nullable Object */;
-short int var28 /* : Bool */;
-int cltype29;
-int idtype30;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
-short int var31 /* : Bool */;
-int cltype32;
-int idtype33;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
 val* var_pexprnode12 /* var pexprnode12: nullable Object */;
-short int var34 /* : Bool */;
-int cltype35;
-int idtype36;
-val* var37 /* : AAttrPropdef */;
-val* var38 /* : null */;
-val* var39 /* : null */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AAttrPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
+val* var32 /* : null */;
+val* var33 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var40 /* : Int */;
-long var41 /* : Int */;
+long var34 /* : Int */;
+long var35 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist11 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist10 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist9 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist8 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist7 = var5;
+var_nodearraylist5 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var6;
+var_nodearraylist4 = var6;
 var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var7;
+var_nodearraylist3 = var7;
 var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var8;
+var_nodearraylist2 = var8;
 var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var9;
-var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var10;
-var11 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var11;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var12 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var12 = 0;
-} else {
-var12 = var_pdocnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18562);
-exit(1);
-}
-var_pablenode3 = var_nodearraylist2;
-/* <var_pablenode3:nullable Object> isa nullable AAble */
-cltype14 = type_nullable_parser_nodes__AAble.color;
-idtype15 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode3 == NULL) {
-var13 = 1;
-} else {
-if(cltype14 >= var_pablenode3->type->table_size) {
-var13 = 0;
+var10 = 0;
 } else {
-var13 = var_pablenode3->type->type_table[cltype14] == idtype15;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18564);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17865);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist3;
+var_pablenode4 = var_nodearraylist2;
 /* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype17 = type_nullable_parser_nodes__AAble.color;
-idtype18 = type_nullable_parser_nodes__AAble.id;
+cltype12 = type_nullable_parser_nodes__AAble.color;
+idtype13 = type_nullable_parser_nodes__AAble.id;
 if(var_pablenode4 == NULL) {
-var16 = 1;
+var11 = 1;
 } else {
-if(cltype17 >= var_pablenode4->type->table_size) {
-var16 = 0;
+if(cltype12 >= var_pablenode4->type->table_size) {
+var11 = 0;
 } else {
-var16 = var_pablenode4->type->type_table[cltype17] == idtype18;
+var11 = var_pablenode4->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18566);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17867);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist4;
+var_tkwredefnode5 = var_nodearraylist3;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype20 = type_nullable_parser_nodes__TKwredef.color;
-idtype21 = type_nullable_parser_nodes__TKwredef.id;
+cltype15 = type_nullable_parser_nodes__TKwredef.color;
+idtype16 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var19 = 1;
+var14 = 1;
 } else {
-if(cltype20 >= var_tkwredefnode5->type->table_size) {
-var19 = 0;
+if(cltype15 >= var_tkwredefnode5->type->table_size) {
+var14 = 0;
 } else {
-var19 = var_tkwredefnode5->type->type_table[cltype20] == idtype21;
+var14 = var_tkwredefnode5->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var19) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18568);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17869);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist5;
+var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype23 = type_nullable_parser_nodes__AVisibility.color;
-idtype24 = type_nullable_parser_nodes__AVisibility.id;
+cltype18 = type_nullable_parser_nodes__AVisibility.color;
+idtype19 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var22 = 1;
+var17 = 1;
 } else {
-if(cltype23 >= var_pvisibilitynode6->type->table_size) {
-var22 = 0;
+if(cltype18 >= var_pvisibilitynode6->type->table_size) {
+var17 = 0;
 } else {
-var22 = var_pvisibilitynode6->type->type_table[cltype23] == idtype24;
+var17 = var_pvisibilitynode6->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var22) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18570);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17871);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist6;
+var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype26 = type_nullable_parser_nodes__TKwvar.color;
-idtype27 = type_nullable_parser_nodes__TKwvar.id;
+cltype21 = type_nullable_parser_nodes__TKwvar.color;
+idtype22 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var25 = 1;
+var20 = 1;
 } else {
-if(cltype26 >= var_tkwvarnode7->type->table_size) {
-var25 = 0;
+if(cltype21 >= var_tkwvarnode7->type->table_size) {
+var20 = 0;
 } else {
-var25 = var_tkwvarnode7->type->type_table[cltype26] == idtype27;
+var20 = var_tkwvarnode7->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var25) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18572);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17873);
 exit(1);
 }
-var_tattridnode8 = var_nodearraylist7;
+var_tattridnode8 = var_nodearraylist6;
 /* <var_tattridnode8:nullable Object> isa nullable TAttrid */
-cltype29 = type_nullable_parser_nodes__TAttrid.color;
-idtype30 = type_nullable_parser_nodes__TAttrid.id;
+cltype24 = type_nullable_parser_nodes__TAttrid.color;
+idtype25 = type_nullable_parser_nodes__TAttrid.id;
 if(var_tattridnode8 == NULL) {
-var28 = 1;
-} else {
-if(cltype29 >= var_tattridnode8->type->table_size) {
-var28 = 0;
-} else {
-var28 = var_tattridnode8->type->type_table[cltype29] == idtype30;
-}
-}
-if (!var28) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18574);
-exit(1);
-}
-var_ptypenode10 = var_nodearraylist8;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype32 = type_nullable_parser_nodes__AType.color;
-idtype33 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var31 = 1;
+var23 = 1;
 } else {
-if(cltype32 >= var_ptypenode10->type->table_size) {
-var31 = 0;
+if(cltype24 >= var_tattridnode8->type->table_size) {
+var23 = 0;
 } else {
-var31 = var_ptypenode10->type->type_table[cltype32] == idtype33;
+var23 = var_tattridnode8->type->type_table[cltype24] == idtype25;
 }
 }
-if (!var31) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18576);
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17875);
 exit(1);
 }
-var_pexprnode12 = var_nodearraylist11;
+var_pexprnode12 = var_nodearraylist9;
 /* <var_pexprnode12:nullable Object> isa nullable AExpr */
-cltype35 = type_nullable_parser_nodes__AExpr.color;
-idtype36 = type_nullable_parser_nodes__AExpr.id;
+cltype27 = type_nullable_parser_nodes__AExpr.color;
+idtype28 = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode12 == NULL) {
-var34 = 1;
+var26 = 1;
 } else {
-if(cltype35 >= var_pexprnode12->type->table_size) {
-var34 = 0;
+if(cltype27 >= var_pexprnode12->type->table_size) {
+var26 = 0;
 } else {
-var34 = var_pexprnode12->type->type_table[cltype35] == idtype36;
+var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
 }
 }
-if (!var34) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18578);
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17877);
 exit(1);
 }
-var37 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var38 = NULL;
-var39 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var37->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var37, var_pdocnode2, var_pablenode3, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var38, var_ptypenode10, var39, var_pexprnode12) /* init_aattrpropdef on <var37:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var37);
-var_ppropdefnode1 = var37;
+var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var30 = NULL;
+var31 = NULL;
+var32 = NULL;
+var33 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var30, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var31, var32, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var40 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction412> */
-var41 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var40) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var41, var_node_list) /* push on <var_p:Parser>*/;
+var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction402> */
+var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction412#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction412__action(val* self, val* p0) {
-parser__ReduceAction412__action(self, p0);
+/* method parser#ReduceAction402#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction402__action(val* self, val* p0) {
+parser__ReduceAction402__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction413#action for (self: ReduceAction413, Parser) */
-void parser__ReduceAction413__action(val* self, val* p0) {
+/* method parser#ReduceAction403#action for (self: ReduceAction403, Parser) */
+void parser__ReduceAction403__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var4 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var5 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var5 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var6 /* : Bool */;
-int cltype7;
-int idtype8;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var_tidnode9 /* var tidnode9: nullable Object */;
-short int var12 /* : Bool */;
-int cltype13;
-int idtype14;
-val* var15 /* : AAttrPropdef */;
-val* var16 /* : null */;
-val* var17 /* : null */;
-val* var18 /* : null */;
-val* var19 /* : null */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
+val* var_pexprnode12 /* var pexprnode12: nullable Object */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AAttrPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
+val* var32 /* : null */;
+val* var33 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var23 /* : Int */;
-long var24 /* : Int */;
+long var34 /* : Int */;
+long var35 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var4;
+var_nodearraylist6 = var4;
+var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist5 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var5 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var5 = 0;
+var10 = 0;
 } else {
-var5 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18606);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17910);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist2;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype12 = type_nullable_parser_nodes__AAble.color;
+idtype13 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var11 = 1;
+} else {
+if(cltype12 >= var_pablenode3->type->table_size) {
+var11 = 0;
+} else {
+var11 = var_pablenode3->type->type_table[cltype12] == idtype13;
+}
+}
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17912);
+exit(1);
+}
+var_pablenode4 = var_nodearraylist3;
+/* <var_pablenode4:nullable Object> isa nullable AAble */
+cltype15 = type_nullable_parser_nodes__AAble.color;
+idtype16 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode4 == NULL) {
+var14 = 1;
+} else {
+if(cltype15 >= var_pablenode4->type->table_size) {
+var14 = 0;
+} else {
+var14 = var_pablenode4->type->type_table[cltype15] == idtype16;
+}
+}
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17914);
+exit(1);
+}
+var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype7 = type_nullable_parser_nodes__AVisibility.color;
-idtype8 = type_nullable_parser_nodes__AVisibility.id;
+cltype18 = type_nullable_parser_nodes__AVisibility.color;
+idtype19 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var6 = 1;
+var17 = 1;
 } else {
-if(cltype7 >= var_pvisibilitynode6->type->table_size) {
-var6 = 0;
+if(cltype18 >= var_pvisibilitynode6->type->table_size) {
+var17 = 0;
 } else {
-var6 = var_pvisibilitynode6->type->type_table[cltype7] == idtype8;
+var17 = var_pvisibilitynode6->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18608);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17916);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist3;
+var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype10 = type_nullable_parser_nodes__TKwvar.color;
-idtype11 = type_nullable_parser_nodes__TKwvar.id;
+cltype21 = type_nullable_parser_nodes__TKwvar.color;
+idtype22 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var9 = 1;
+var20 = 1;
 } else {
-if(cltype10 >= var_tkwvarnode7->type->table_size) {
-var9 = 0;
+if(cltype21 >= var_tkwvarnode7->type->table_size) {
+var20 = 0;
 } else {
-var9 = var_tkwvarnode7->type->type_table[cltype10] == idtype11;
+var20 = var_tkwvarnode7->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18610);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17918);
 exit(1);
 }
-var_tidnode9 = var_nodearraylist4;
-/* <var_tidnode9:nullable Object> isa nullable TId */
-cltype13 = type_nullable_parser_nodes__TId.color;
-idtype14 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode9 == NULL) {
-var12 = 1;
+var_tattridnode8 = var_nodearraylist6;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype24 = type_nullable_parser_nodes__TAttrid.color;
+idtype25 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var23 = 1;
 } else {
-if(cltype13 >= var_tidnode9->type->table_size) {
-var12 = 0;
+if(cltype24 >= var_tattridnode8->type->table_size) {
+var23 = 0;
 } else {
-var12 = var_tidnode9->type->type_table[cltype13] == idtype14;
+var23 = var_tattridnode8->type->type_table[cltype24] == idtype25;
 }
 }
-if (!var12) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18612);
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17920);
 exit(1);
 }
-var15 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var16 = NULL;
-var17 = NULL;
-var18 = NULL;
-var19 = NULL;
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var15->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var15, var_pdocnode2, var16, var17, var18, var_pvisibilitynode6, var_tkwvarnode7, var19, var_tidnode9, var20, var21, var22) /* init_aattrpropdef on <var15:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var15);
-var_ppropdefnode1 = var15;
+var_pexprnode12 = var_nodearraylist9;
+/* <var_pexprnode12:nullable Object> isa nullable AExpr */
+cltype27 = type_nullable_parser_nodes__AExpr.color;
+idtype28 = type_nullable_parser_nodes__AExpr.id;
+if(var_pexprnode12 == NULL) {
+var26 = 1;
+} else {
+if(cltype27 >= var_pexprnode12->type->table_size) {
+var26 = 0;
+} else {
+var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+}
+}
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17922);
+exit(1);
+}
+var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var30 = NULL;
+var31 = NULL;
+var32 = NULL;
+var33 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var_pablenode3, var_pablenode4, var30, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var31, var32, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var23 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction413> */
-var24 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var23) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var24, var_node_list) /* push on <var_p:Parser>*/;
+var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction403> */
+var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction413#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction413__action(val* self, val* p0) {
-parser__ReduceAction413__action(self, p0);
+/* method parser#ReduceAction403#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction403__action(val* self, val* p0) {
+parser__ReduceAction403__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction414#action for (self: ReduceAction414, Parser) */
-void parser__ReduceAction414__action(val* self, val* p0) {
+/* method parser#ReduceAction404#action for (self: ReduceAction404, Parser) */
+void parser__ReduceAction404__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var5 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var9 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var10 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var6 /* : Bool */;
+short int var11 /* : Bool */;
 int cltype;
 int idtype;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
+val* var_pablenode4 /* var pablenode4: nullable Object */;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
-val* var_tidnode9 /* var tidnode9: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var19 /* : AAttrPropdef */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var23 /* : null */;
-val* var24 /* : null */;
-val* var25 /* : null */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+val* var_pexprnode12 /* var pexprnode12: nullable Object */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+val* var33 /* : AAttrPropdef */;
+val* var34 /* : null */;
+val* var35 /* : null */;
+val* var36 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var26 /* : Int */;
-long var27 /* : Int */;
+long var37 /* : Int */;
+long var38 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var1;
+var_nodearraylist10 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var2;
+var_nodearraylist9 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var3;
+var_nodearraylist8 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var4;
+var_nodearraylist7 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var5;
+var_nodearraylist6 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist5 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var9;
+var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var10;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var6 = 1;
+var11 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var6 = 0;
+var11 = 0;
 } else {
-var6 = var_pdocnode2->type->type_table[cltype] == idtype;
+var11 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18641);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17956);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist2;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype13 = type_nullable_parser_nodes__AAble.color;
+idtype14 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var12 = 1;
+} else {
+if(cltype13 >= var_pablenode3->type->table_size) {
+var12 = 0;
+} else {
+var12 = var_pablenode3->type->type_table[cltype13] == idtype14;
+}
+}
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17958);
+exit(1);
+}
+var_pablenode4 = var_nodearraylist3;
+/* <var_pablenode4:nullable Object> isa nullable AAble */
+cltype16 = type_nullable_parser_nodes__AAble.color;
+idtype17 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode4 == NULL) {
+var15 = 1;
+} else {
+if(cltype16 >= var_pablenode4->type->table_size) {
+var15 = 0;
+} else {
+var15 = var_pablenode4->type->type_table[cltype16] == idtype17;
+}
+}
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17960);
+exit(1);
+}
+var_tkwredefnode5 = var_nodearraylist4;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype8 = type_nullable_parser_nodes__TKwredef.color;
-idtype9 = type_nullable_parser_nodes__TKwredef.id;
+cltype19 = type_nullable_parser_nodes__TKwredef.color;
+idtype20 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var7 = 1;
+var18 = 1;
 } else {
-if(cltype8 >= var_tkwredefnode5->type->table_size) {
-var7 = 0;
+if(cltype19 >= var_tkwredefnode5->type->table_size) {
+var18 = 0;
 } else {
-var7 = var_tkwredefnode5->type->type_table[cltype8] == idtype9;
+var18 = var_tkwredefnode5->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18643);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17962);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
+var_pvisibilitynode6 = var_nodearraylist5;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype11 = type_nullable_parser_nodes__AVisibility.color;
-idtype12 = type_nullable_parser_nodes__AVisibility.id;
+cltype22 = type_nullable_parser_nodes__AVisibility.color;
+idtype23 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var10 = 1;
+var21 = 1;
 } else {
-if(cltype11 >= var_pvisibilitynode6->type->table_size) {
-var10 = 0;
+if(cltype22 >= var_pvisibilitynode6->type->table_size) {
+var21 = 0;
 } else {
-var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
+var21 = var_pvisibilitynode6->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18645);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17964);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
+var_tkwvarnode7 = var_nodearraylist6;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype14 = type_nullable_parser_nodes__TKwvar.color;
-idtype15 = type_nullable_parser_nodes__TKwvar.id;
+cltype25 = type_nullable_parser_nodes__TKwvar.color;
+idtype26 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var13 = 1;
+var24 = 1;
 } else {
-if(cltype14 >= var_tkwvarnode7->type->table_size) {
-var13 = 0;
+if(cltype25 >= var_tkwvarnode7->type->table_size) {
+var24 = 0;
 } else {
-var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
+var24 = var_tkwvarnode7->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18647);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17966);
 exit(1);
 }
-var_tidnode9 = var_nodearraylist5;
-/* <var_tidnode9:nullable Object> isa nullable TId */
-cltype17 = type_nullable_parser_nodes__TId.color;
-idtype18 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode9 == NULL) {
-var16 = 1;
+var_tattridnode8 = var_nodearraylist7;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype28 = type_nullable_parser_nodes__TAttrid.color;
+idtype29 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var27 = 1;
 } else {
-if(cltype17 >= var_tidnode9->type->table_size) {
-var16 = 0;
+if(cltype28 >= var_tattridnode8->type->table_size) {
+var27 = 0;
+} else {
+var27 = var_tattridnode8->type->type_table[cltype28] == idtype29;
+}
+}
+if (!var27) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17968);
+exit(1);
+}
+var_pexprnode12 = var_nodearraylist10;
+/* <var_pexprnode12:nullable Object> isa nullable AExpr */
+cltype31 = type_nullable_parser_nodes__AExpr.color;
+idtype32 = type_nullable_parser_nodes__AExpr.id;
+if(var_pexprnode12 == NULL) {
+var30 = 1;
 } else {
-var16 = var_tidnode9->type->type_table[cltype17] == idtype18;
+if(cltype31 >= var_pexprnode12->type->table_size) {
+var30 = 0;
+} else {
+var30 = var_pexprnode12->type->type_table[cltype31] == idtype32;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18649);
+if (!var30) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 17970);
 exit(1);
 }
-var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-var23 = NULL;
-var24 = NULL;
-var25 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var21, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var22, var_tidnode9, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var19);
-var_ppropdefnode1 = var19;
+var33 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var34 = NULL;
+var35 = NULL;
+var36 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var33, var_pdocnode2, var_pablenode3, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var34, var35, var36, var_pexprnode12) /* init_aattrpropdef on <var33:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var33);
+var_ppropdefnode1 = var33;
 var_node_list = var_ppropdefnode1;
-var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction414> */
-var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
+var37 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction404> */
+var38 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var37) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var38, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction414#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction414__action(val* self, val* p0) {
-parser__ReduceAction414__action(self, p0);
+/* method parser#ReduceAction404#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction404__action(val* self, val* p0) {
+parser__ReduceAction404__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction415#action for (self: ReduceAction415, Parser) */
-void parser__ReduceAction415__action(val* self, val* p0) {
+/* method parser#ReduceAction405#action for (self: ReduceAction405, Parser) */
+void parser__ReduceAction405__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var5 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var8 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var6 /* : Bool */;
+short int var9 /* : Bool */;
 int cltype;
 int idtype;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
 short int var10 /* : Bool */;
 int cltype11;
 int idtype12;
-val* var_tidnode9 /* var tidnode9: nullable Object */;
+val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
 short int var13 /* : Bool */;
 int cltype14;
 int idtype15;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
 short int var16 /* : Bool */;
 int cltype17;
 int idtype18;
-val* var19 /* : AAttrPropdef */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var23 /* : null */;
-val* var24 /* : null */;
-val* var25 /* : null */;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+short int var19 /* : Bool */;
+int cltype20;
+int idtype21;
+val* var_pexprnode12 /* var pexprnode12: nullable Object */;
+short int var22 /* : Bool */;
+int cltype23;
+int idtype24;
+val* var25 /* : AAttrPropdef */;
+val* var26 /* : null */;
+val* var27 /* : null */;
+val* var28 /* : null */;
+val* var29 /* : null */;
+val* var30 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var26 /* : Int */;
-long var27 /* : Int */;
+long var31 /* : Int */;
+long var32 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var1;
+var_nodearraylist8 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var2;
+var_nodearraylist7 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var3;
+var_nodearraylist6 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var4;
+var_nodearraylist5 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var5;
+var_nodearraylist4 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var8;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var6 = 1;
+var9 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var6 = 0;
+var9 = 0;
 } else {
-var6 = var_pdocnode2->type->type_table[cltype] == idtype;
+var9 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18678);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18002);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist2;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype8 = type_nullable_parser_nodes__AVisibility.color;
-idtype9 = type_nullable_parser_nodes__AVisibility.id;
+cltype11 = type_nullable_parser_nodes__AVisibility.color;
+idtype12 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var7 = 1;
+var10 = 1;
 } else {
-if(cltype8 >= var_pvisibilitynode6->type->table_size) {
-var7 = 0;
+if(cltype11 >= var_pvisibilitynode6->type->table_size) {
+var10 = 0;
 } else {
-var7 = var_pvisibilitynode6->type->type_table[cltype8] == idtype9;
+var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18680);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18004);
 exit(1);
 }
 var_tkwvarnode7 = var_nodearraylist3;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype11 = type_nullable_parser_nodes__TKwvar.color;
-idtype12 = type_nullable_parser_nodes__TKwvar.id;
+cltype14 = type_nullable_parser_nodes__TKwvar.color;
+idtype15 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var10 = 1;
+var13 = 1;
 } else {
-if(cltype11 >= var_tkwvarnode7->type->table_size) {
-var10 = 0;
+if(cltype14 >= var_tkwvarnode7->type->table_size) {
+var13 = 0;
 } else {
-var10 = var_tkwvarnode7->type->type_table[cltype11] == idtype12;
+var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18682);
+if (!var13) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18006);
 exit(1);
 }
-var_tidnode9 = var_nodearraylist4;
-/* <var_tidnode9:nullable Object> isa nullable TId */
-cltype14 = type_nullable_parser_nodes__TId.color;
-idtype15 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode9 == NULL) {
-var13 = 1;
+var_tattridnode8 = var_nodearraylist4;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype17 = type_nullable_parser_nodes__TAttrid.color;
+idtype18 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var16 = 1;
 } else {
-if(cltype14 >= var_tidnode9->type->table_size) {
-var13 = 0;
+if(cltype17 >= var_tattridnode8->type->table_size) {
+var16 = 0;
 } else {
-var13 = var_tidnode9->type->type_table[cltype14] == idtype15;
+var16 = var_tattridnode8->type->type_table[cltype17] == idtype18;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18684);
+if (!var16) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18008);
 exit(1);
 }
 var_ptypenode10 = var_nodearraylist5;
 /* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype17 = type_nullable_parser_nodes__AType.color;
-idtype18 = type_nullable_parser_nodes__AType.id;
+cltype20 = type_nullable_parser_nodes__AType.color;
+idtype21 = type_nullable_parser_nodes__AType.id;
 if(var_ptypenode10 == NULL) {
-var16 = 1;
+var19 = 1;
 } else {
-if(cltype17 >= var_ptypenode10->type->table_size) {
-var16 = 0;
+if(cltype20 >= var_ptypenode10->type->table_size) {
+var19 = 0;
 } else {
-var16 = var_ptypenode10->type->type_table[cltype17] == idtype18;
+var19 = var_ptypenode10->type->type_table[cltype20] == idtype21;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18686);
+if (!var19) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18010);
 exit(1);
 }
-var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-var23 = NULL;
-var24 = NULL;
-var25 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var21, var22, var_pvisibilitynode6, var_tkwvarnode7, var23, var_tidnode9, var_ptypenode10, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var19);
-var_ppropdefnode1 = var19;
+var_pexprnode12 = var_nodearraylist8;
+/* <var_pexprnode12:nullable Object> isa nullable AExpr */
+cltype23 = type_nullable_parser_nodes__AExpr.color;
+idtype24 = type_nullable_parser_nodes__AExpr.id;
+if(var_pexprnode12 == NULL) {
+var22 = 1;
+} else {
+if(cltype23 >= var_pexprnode12->type->table_size) {
+var22 = 0;
+} else {
+var22 = var_pexprnode12->type->type_table[cltype23] == idtype24;
+}
+}
+if (!var22) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18012);
+exit(1);
+}
+var25 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var26 = NULL;
+var27 = NULL;
+var28 = NULL;
+var29 = NULL;
+var30 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var25->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var25, var_pdocnode2, var26, var27, var28, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var29, var_ptypenode10, var30, var_pexprnode12) /* init_aattrpropdef on <var25:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var25);
+var_ppropdefnode1 = var25;
 var_node_list = var_ppropdefnode1;
-var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction415> */
-var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
+var31 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction405> */
+var32 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var31) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var32, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction415#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction415__action(val* self, val* p0) {
-parser__ReduceAction415__action(self, p0);
+/* method parser#ReduceAction405#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction405__action(val* self, val* p0) {
+parser__ReduceAction405__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction416#action for (self: ReduceAction416, Parser) */
-void parser__ReduceAction416__action(val* self, val* p0) {
+/* method parser#ReduceAction406#action for (self: ReduceAction406, Parser) */
+void parser__ReduceAction406__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
 val* var6 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
-val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
 short int var11 /* : Bool */;
 int cltype12;
 int idtype13;
-val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
+val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
 short int var14 /* : Bool */;
 int cltype15;
 int idtype16;
-val* var_tidnode9 /* var tidnode9: nullable Object */;
+val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
 short int var17 /* : Bool */;
 int cltype18;
 int idtype19;
-val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
 short int var20 /* : Bool */;
 int cltype21;
 int idtype22;
-val* var23 /* : AAttrPropdef */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
+val* var_pexprnode12 /* var pexprnode12: nullable Object */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AAttrPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
+val* var32 /* : null */;
+val* var33 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
-long var30 /* : Int */;
+long var34 /* : Int */;
+long var35 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
+var_nodearraylist5 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
+var_nodearraylist4 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var7 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
+var10 = 0;
 } else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18716);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18045);
 exit(1);
 }
 var_tkwredefnode5 = var_nodearraylist2;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype9 = type_nullable_parser_nodes__TKwredef.color;
-idtype10 = type_nullable_parser_nodes__TKwredef.id;
+cltype12 = type_nullable_parser_nodes__TKwredef.color;
+idtype13 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var8 = 1;
+var11 = 1;
 } else {
-if(cltype9 >= var_tkwredefnode5->type->table_size) {
-var8 = 0;
+if(cltype12 >= var_tkwredefnode5->type->table_size) {
+var11 = 0;
 } else {
-var8 = var_tkwredefnode5->type->type_table[cltype9] == idtype10;
+var11 = var_tkwredefnode5->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18718);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18047);
 exit(1);
 }
 var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype12 = type_nullable_parser_nodes__AVisibility.color;
-idtype13 = type_nullable_parser_nodes__AVisibility.id;
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var11 = 1;
+var14 = 1;
 } else {
-if(cltype12 >= var_pvisibilitynode6->type->table_size) {
-var11 = 0;
+if(cltype15 >= var_pvisibilitynode6->type->table_size) {
+var14 = 0;
 } else {
-var11 = var_pvisibilitynode6->type->type_table[cltype12] == idtype13;
+var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18720);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18049);
 exit(1);
 }
 var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype15 = type_nullable_parser_nodes__TKwvar.color;
-idtype16 = type_nullable_parser_nodes__TKwvar.id;
+cltype18 = type_nullable_parser_nodes__TKwvar.color;
+idtype19 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var14 = 1;
+var17 = 1;
 } else {
-if(cltype15 >= var_tkwvarnode7->type->table_size) {
-var14 = 0;
+if(cltype18 >= var_tkwvarnode7->type->table_size) {
+var17 = 0;
 } else {
-var14 = var_tkwvarnode7->type->type_table[cltype15] == idtype16;
+var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18722);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18051);
 exit(1);
 }
-var_tidnode9 = var_nodearraylist5;
-/* <var_tidnode9:nullable Object> isa nullable TId */
-cltype18 = type_nullable_parser_nodes__TId.color;
-idtype19 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode9 == NULL) {
-var17 = 1;
+var_tattridnode8 = var_nodearraylist5;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype21 = type_nullable_parser_nodes__TAttrid.color;
+idtype22 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var20 = 1;
+} else {
+if(cltype21 >= var_tattridnode8->type->table_size) {
+var20 = 0;
+} else {
+var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
+}
+}
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18053);
+exit(1);
+}
+var_ptypenode10 = var_nodearraylist6;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype24 = type_nullable_parser_nodes__AType.color;
+idtype25 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var23 = 1;
 } else {
-if(cltype18 >= var_tidnode9->type->table_size) {
-var17 = 0;
+if(cltype24 >= var_ptypenode10->type->table_size) {
+var23 = 0;
 } else {
-var17 = var_tidnode9->type->type_table[cltype18] == idtype19;
+var23 = var_ptypenode10->type->type_table[cltype24] == idtype25;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18724);
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18055);
 exit(1);
 }
-var_ptypenode10 = var_nodearraylist6;
-/* <var_ptypenode10:nullable Object> isa nullable AType */
-cltype21 = type_nullable_parser_nodes__AType.color;
-idtype22 = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode10 == NULL) {
-var20 = 1;
+var_pexprnode12 = var_nodearraylist9;
+/* <var_pexprnode12:nullable Object> isa nullable AExpr */
+cltype27 = type_nullable_parser_nodes__AExpr.color;
+idtype28 = type_nullable_parser_nodes__AExpr.id;
+if(var_pexprnode12 == NULL) {
+var26 = 1;
 } else {
-if(cltype21 >= var_ptypenode10->type->table_size) {
-var20 = 0;
+if(cltype27 >= var_pexprnode12->type->table_size) {
+var26 = 0;
 } else {
-var20 = var_ptypenode10->type->type_table[cltype21] == idtype22;
+var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18726);
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18057);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var24 = NULL;
-var25 = NULL;
-var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var25, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var26, var_tidnode9, var_ptypenode10, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
-var_ppropdefnode1 = var23;
+var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var30 = NULL;
+var31 = NULL;
+var32 = NULL;
+var33 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var30, var31, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var32, var_ptypenode10, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction416> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction406> */
+var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction416#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction416__action(val* self, val* p0) {
-parser__ReduceAction416__action(self, p0);
+/* method parser#ReduceAction406#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction406__action(val* self, val* p0) {
+parser__ReduceAction406__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction417#action for (self: ReduceAction417, Parser) */
-void parser__ReduceAction417__action(val* self, val* p0) {
+/* method parser#ReduceAction407#action for (self: ReduceAction407, Parser) */
+void parser__ReduceAction407__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var5 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var9 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var6 /* : Bool */;
+short int var10 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
+short int var14 /* : Bool */;
+int cltype15;
+int idtype16;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var13 /* : Bool */;
-int cltype14;
-int idtype15;
-val* var_tidnode9 /* var tidnode9: nullable Object */;
-short int var16 /* : Bool */;
-int cltype17;
-int idtype18;
-val* var19 /* : AAttrPropdef */;
-val* var20 /* : null */;
-val* var21 /* : null */;
-val* var22 /* : null */;
-val* var23 /* : null */;
-val* var24 /* : null */;
-val* var25 /* : null */;
+short int var17 /* : Bool */;
+int cltype18;
+int idtype19;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
+short int var20 /* : Bool */;
+int cltype21;
+int idtype22;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
+val* var_pexprnode12 /* var pexprnode12: nullable Object */;
+short int var26 /* : Bool */;
+int cltype27;
+int idtype28;
+val* var29 /* : AAttrPropdef */;
+val* var30 /* : null */;
+val* var31 /* : null */;
+val* var32 /* : null */;
+val* var33 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var26 /* : Int */;
-long var27 /* : Int */;
+long var34 /* : Int */;
+long var35 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var1;
+var_nodearraylist9 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var2;
+var_nodearraylist8 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var3;
+var_nodearraylist7 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var4;
+var_nodearraylist6 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var5;
+var_nodearraylist5 = var5;
+var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var9;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var6 = 1;
+var10 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var6 = 0;
+var10 = 0;
 } else {
-var6 = var_pdocnode2->type->type_table[cltype] == idtype;
+var10 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18755);
+if (!var10) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18090);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist5;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype8 = type_nullable_parser_nodes__AAble.color;
-idtype9 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var7 = 1;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype12 = type_nullable_parser_nodes__AAble.color;
+idtype13 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var11 = 1;
 } else {
-if(cltype8 >= var_pablenode4->type->table_size) {
-var7 = 0;
+if(cltype12 >= var_pablenode3->type->table_size) {
+var11 = 0;
 } else {
-var7 = var_pablenode4->type->type_table[cltype8] == idtype9;
+var11 = var_pablenode3->type->type_table[cltype12] == idtype13;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18757);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18092);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist2;
+var_pvisibilitynode6 = var_nodearraylist3;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype11 = type_nullable_parser_nodes__AVisibility.color;
-idtype12 = type_nullable_parser_nodes__AVisibility.id;
+cltype15 = type_nullable_parser_nodes__AVisibility.color;
+idtype16 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var10 = 1;
+var14 = 1;
 } else {
-if(cltype11 >= var_pvisibilitynode6->type->table_size) {
-var10 = 0;
+if(cltype15 >= var_pvisibilitynode6->type->table_size) {
+var14 = 0;
 } else {
-var10 = var_pvisibilitynode6->type->type_table[cltype11] == idtype12;
+var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18759);
+if (!var14) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18094);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist3;
+var_tkwvarnode7 = var_nodearraylist4;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype14 = type_nullable_parser_nodes__TKwvar.color;
-idtype15 = type_nullable_parser_nodes__TKwvar.id;
+cltype18 = type_nullable_parser_nodes__TKwvar.color;
+idtype19 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var13 = 1;
+var17 = 1;
 } else {
-if(cltype14 >= var_tkwvarnode7->type->table_size) {
-var13 = 0;
+if(cltype18 >= var_tkwvarnode7->type->table_size) {
+var17 = 0;
 } else {
-var13 = var_tkwvarnode7->type->type_table[cltype14] == idtype15;
+var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
 }
 }
-if (!var13) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18761);
+if (!var17) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18096);
 exit(1);
 }
-var_tidnode9 = var_nodearraylist4;
-/* <var_tidnode9:nullable Object> isa nullable TId */
-cltype17 = type_nullable_parser_nodes__TId.color;
-idtype18 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode9 == NULL) {
-var16 = 1;
+var_tattridnode8 = var_nodearraylist5;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype21 = type_nullable_parser_nodes__TAttrid.color;
+idtype22 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var20 = 1;
 } else {
-if(cltype17 >= var_tidnode9->type->table_size) {
-var16 = 0;
+if(cltype21 >= var_tattridnode8->type->table_size) {
+var20 = 0;
 } else {
-var16 = var_tidnode9->type->type_table[cltype17] == idtype18;
+var20 = var_tattridnode8->type->type_table[cltype21] == idtype22;
 }
 }
-if (!var16) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18763);
+if (!var20) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18098);
 exit(1);
 }
-var19 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var20 = NULL;
-var21 = NULL;
-var22 = NULL;
-var23 = NULL;
-var24 = NULL;
-var25 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var19->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var19, var_pdocnode2, var20, var_pablenode4, var21, var_pvisibilitynode6, var_tkwvarnode7, var22, var_tidnode9, var23, var24, var25) /* init_aattrpropdef on <var19:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var19);
-var_ppropdefnode1 = var19;
+var_ptypenode10 = var_nodearraylist6;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype24 = type_nullable_parser_nodes__AType.color;
+idtype25 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var23 = 1;
+} else {
+if(cltype24 >= var_ptypenode10->type->table_size) {
+var23 = 0;
+} else {
+var23 = var_ptypenode10->type->type_table[cltype24] == idtype25;
+}
+}
+if (!var23) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18100);
+exit(1);
+}
+var_pexprnode12 = var_nodearraylist9;
+/* <var_pexprnode12:nullable Object> isa nullable AExpr */
+cltype27 = type_nullable_parser_nodes__AExpr.color;
+idtype28 = type_nullable_parser_nodes__AExpr.id;
+if(var_pexprnode12 == NULL) {
+var26 = 1;
+} else {
+if(cltype27 >= var_pexprnode12->type->table_size) {
+var26 = 0;
+} else {
+var26 = var_pexprnode12->type->type_table[cltype27] == idtype28;
+}
+}
+if (!var26) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18102);
+exit(1);
+}
+var29 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var30 = NULL;
+var31 = NULL;
+var32 = NULL;
+var33 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var29->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var29, var_pdocnode2, var_pablenode3, var30, var31, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var32, var_ptypenode10, var33, var_pexprnode12) /* init_aattrpropdef on <var29:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var29);
+var_ppropdefnode1 = var29;
 var_node_list = var_ppropdefnode1;
-var26 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction417> */
-var27 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var26) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var27, var_node_list) /* push on <var_p:Parser>*/;
+var34 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction407> */
+var35 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var34) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var35, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction417#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction417__action(val* self, val* p0) {
-parser__ReduceAction417__action(self, p0);
+/* method parser#ReduceAction407#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction407__action(val* self, val* p0) {
+parser__ReduceAction407__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction418#action for (self: ReduceAction418, Parser) */
-void parser__ReduceAction418__action(val* self, val* p0) {
+/* method parser#ReduceAction408#action for (self: ReduceAction408, Parser) */
+void parser__ReduceAction408__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
 val* var1 /* : nullable Object */;
-val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var_nodearraylist10 /* var nodearraylist10: nullable Object */;
 val* var2 /* : nullable Object */;
-val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var_nodearraylist9 /* var nodearraylist9: nullable Object */;
 val* var3 /* : nullable Object */;
-val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var_nodearraylist8 /* var nodearraylist8: nullable Object */;
 val* var4 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
 val* var5 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
 val* var6 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var8 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var9 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var10 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
 val* var_pdocnode2 /* var pdocnode2: nullable Object */;
-short int var7 /* : Bool */;
+short int var11 /* : Bool */;
 int cltype;
 int idtype;
-val* var_pablenode4 /* var pablenode4: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
+val* var_pablenode3 /* var pablenode3: nullable Object */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
 val* var_tkwredefnode5 /* var tkwredefnode5: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
+short int var15 /* : Bool */;
+int cltype16;
+int idtype17;
 val* var_pvisibilitynode6 /* var pvisibilitynode6: nullable Object */;
-short int var14 /* : Bool */;
-int cltype15;
-int idtype16;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
 val* var_tkwvarnode7 /* var tkwvarnode7: nullable Object */;
-short int var17 /* : Bool */;
-int cltype18;
-int idtype19;
-val* var_tidnode9 /* var tidnode9: nullable Object */;
-short int var20 /* : Bool */;
-int cltype21;
-int idtype22;
-val* var23 /* : AAttrPropdef */;
-val* var24 /* : null */;
-val* var25 /* : null */;
-val* var26 /* : null */;
-val* var27 /* : null */;
-val* var28 /* : null */;
+short int var21 /* : Bool */;
+int cltype22;
+int idtype23;
+val* var_tattridnode8 /* var tattridnode8: nullable Object */;
+short int var24 /* : Bool */;
+int cltype25;
+int idtype26;
+val* var_ptypenode10 /* var ptypenode10: nullable Object */;
+short int var27 /* : Bool */;
+int cltype28;
+int idtype29;
+val* var_pexprnode12 /* var pexprnode12: nullable Object */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+val* var33 /* : AAttrPropdef */;
+val* var34 /* : null */;
+val* var35 /* : null */;
+val* var36 /* : null */;
 val* var_ppropdefnode1 /* var ppropdefnode1: nullable AAttrPropdef */;
-long var29 /* : Int */;
-long var30 /* : Int */;
+long var37 /* : Int */;
+long var38 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
 var1 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist6 = var1;
+var_nodearraylist10 = var1;
 var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist5 = var2;
+var_nodearraylist9 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist4 = var3;
+var_nodearraylist8 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist3 = var4;
+var_nodearraylist7 = var4;
 var5 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var5;
+var_nodearraylist6 = var5;
 var6 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var6;
+var_nodearraylist5 = var6;
+var7 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist4 = var7;
+var8 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist3 = var8;
+var9 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist2 = var9;
+var10 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
+var_nodearraylist1 = var10;
 var_pdocnode2 = var_nodearraylist1;
 /* <var_pdocnode2:nullable Object> isa nullable ADoc */
 cltype = type_nullable_parser_nodes__ADoc.color;
 idtype = type_nullable_parser_nodes__ADoc.id;
 if(var_pdocnode2 == NULL) {
-var7 = 1;
+var11 = 1;
 } else {
 if(cltype >= var_pdocnode2->type->table_size) {
-var7 = 0;
+var11 = 0;
 } else {
-var7 = var_pdocnode2->type->type_table[cltype] == idtype;
+var11 = var_pdocnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18793);
+if (!var11) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18136);
 exit(1);
 }
-var_pablenode4 = var_nodearraylist6;
-/* <var_pablenode4:nullable Object> isa nullable AAble */
-cltype9 = type_nullable_parser_nodes__AAble.color;
-idtype10 = type_nullable_parser_nodes__AAble.id;
-if(var_pablenode4 == NULL) {
-var8 = 1;
+var_pablenode3 = var_nodearraylist2;
+/* <var_pablenode3:nullable Object> isa nullable AAble */
+cltype13 = type_nullable_parser_nodes__AAble.color;
+idtype14 = type_nullable_parser_nodes__AAble.id;
+if(var_pablenode3 == NULL) {
+var12 = 1;
 } else {
-if(cltype9 >= var_pablenode4->type->table_size) {
-var8 = 0;
+if(cltype13 >= var_pablenode3->type->table_size) {
+var12 = 0;
 } else {
-var8 = var_pablenode4->type->type_table[cltype9] == idtype10;
+var12 = var_pablenode3->type->type_table[cltype13] == idtype14;
 }
 }
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18795);
+if (!var12) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18138);
 exit(1);
 }
-var_tkwredefnode5 = var_nodearraylist2;
+var_tkwredefnode5 = var_nodearraylist3;
 /* <var_tkwredefnode5:nullable Object> isa nullable TKwredef */
-cltype12 = type_nullable_parser_nodes__TKwredef.color;
-idtype13 = type_nullable_parser_nodes__TKwredef.id;
+cltype16 = type_nullable_parser_nodes__TKwredef.color;
+idtype17 = type_nullable_parser_nodes__TKwredef.id;
 if(var_tkwredefnode5 == NULL) {
-var11 = 1;
+var15 = 1;
 } else {
-if(cltype12 >= var_tkwredefnode5->type->table_size) {
-var11 = 0;
+if(cltype16 >= var_tkwredefnode5->type->table_size) {
+var15 = 0;
 } else {
-var11 = var_tkwredefnode5->type->type_table[cltype12] == idtype13;
+var15 = var_tkwredefnode5->type->type_table[cltype16] == idtype17;
 }
 }
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18797);
+if (!var15) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18140);
 exit(1);
 }
-var_pvisibilitynode6 = var_nodearraylist3;
+var_pvisibilitynode6 = var_nodearraylist4;
 /* <var_pvisibilitynode6:nullable Object> isa nullable AVisibility */
-cltype15 = type_nullable_parser_nodes__AVisibility.color;
-idtype16 = type_nullable_parser_nodes__AVisibility.id;
+cltype19 = type_nullable_parser_nodes__AVisibility.color;
+idtype20 = type_nullable_parser_nodes__AVisibility.id;
 if(var_pvisibilitynode6 == NULL) {
-var14 = 1;
+var18 = 1;
 } else {
-if(cltype15 >= var_pvisibilitynode6->type->table_size) {
-var14 = 0;
+if(cltype19 >= var_pvisibilitynode6->type->table_size) {
+var18 = 0;
 } else {
-var14 = var_pvisibilitynode6->type->type_table[cltype15] == idtype16;
+var18 = var_pvisibilitynode6->type->type_table[cltype19] == idtype20;
 }
 }
-if (!var14) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18799);
+if (!var18) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18142);
 exit(1);
 }
-var_tkwvarnode7 = var_nodearraylist4;
+var_tkwvarnode7 = var_nodearraylist5;
 /* <var_tkwvarnode7:nullable Object> isa nullable TKwvar */
-cltype18 = type_nullable_parser_nodes__TKwvar.color;
-idtype19 = type_nullable_parser_nodes__TKwvar.id;
+cltype22 = type_nullable_parser_nodes__TKwvar.color;
+idtype23 = type_nullable_parser_nodes__TKwvar.id;
 if(var_tkwvarnode7 == NULL) {
-var17 = 1;
+var21 = 1;
 } else {
-if(cltype18 >= var_tkwvarnode7->type->table_size) {
-var17 = 0;
+if(cltype22 >= var_tkwvarnode7->type->table_size) {
+var21 = 0;
 } else {
-var17 = var_tkwvarnode7->type->type_table[cltype18] == idtype19;
+var21 = var_tkwvarnode7->type->type_table[cltype22] == idtype23;
 }
 }
-if (!var17) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18801);
+if (!var21) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18144);
 exit(1);
 }
-var_tidnode9 = var_nodearraylist5;
-/* <var_tidnode9:nullable Object> isa nullable TId */
-cltype21 = type_nullable_parser_nodes__TId.color;
-idtype22 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode9 == NULL) {
-var20 = 1;
+var_tattridnode8 = var_nodearraylist6;
+/* <var_tattridnode8:nullable Object> isa nullable TAttrid */
+cltype25 = type_nullable_parser_nodes__TAttrid.color;
+idtype26 = type_nullable_parser_nodes__TAttrid.id;
+if(var_tattridnode8 == NULL) {
+var24 = 1;
 } else {
-if(cltype21 >= var_tidnode9->type->table_size) {
-var20 = 0;
+if(cltype25 >= var_tattridnode8->type->table_size) {
+var24 = 0;
 } else {
-var20 = var_tidnode9->type->type_table[cltype21] == idtype22;
+var24 = var_tattridnode8->type->type_table[cltype25] == idtype26;
 }
 }
-if (!var20) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 18803);
+if (!var24) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18146);
 exit(1);
 }
-var23 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
-var24 = NULL;
-var25 = NULL;
-var26 = NULL;
-var27 = NULL;
-var28 = NULL;
-((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var23->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var23, var_pdocnode2, var24, var_pablenode4, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var25, var_tidnode9, var26, var27, var28) /* init_aattrpropdef on <var23:AAttrPropdef>*/;
-CHECK_NEW_parser_nodes__AAttrPropdef(var23);
-var_ppropdefnode1 = var23;
+var_ptypenode10 = var_nodearraylist7;
+/* <var_ptypenode10:nullable Object> isa nullable AType */
+cltype28 = type_nullable_parser_nodes__AType.color;
+idtype29 = type_nullable_parser_nodes__AType.id;
+if(var_ptypenode10 == NULL) {
+var27 = 1;
+} else {
+if(cltype28 >= var_ptypenode10->type->table_size) {
+var27 = 0;
+} else {
+var27 = var_ptypenode10->type->type_table[cltype28] == idtype29;
+}
+}
+if (!var27) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18148);
+exit(1);
+}
+var_pexprnode12 = var_nodearraylist10;
+/* <var_pexprnode12:nullable Object> isa nullable AExpr */
+cltype31 = type_nullable_parser_nodes__AExpr.color;
+idtype32 = type_nullable_parser_nodes__AExpr.id;
+if(var_pexprnode12 == NULL) {
+var30 = 1;
+} else {
+if(cltype31 >= var_pexprnode12->type->table_size) {
+var30 = 0;
+} else {
+var30 = var_pexprnode12->type->type_table[cltype31] == idtype32;
+}
+}
+if (!var30) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 18150);
+exit(1);
+}
+var33 = NEW_parser_nodes__AAttrPropdef(&type_parser_nodes__AAttrPropdef);
+var34 = NULL;
+var35 = NULL;
+var36 = NULL;
+((void (*)(val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*, val*))(var33->class->vft[COLOR_parser_prod__AAttrPropdef__init_aattrpropdef]))(var33, var_pdocnode2, var_pablenode3, var34, var_tkwredefnode5, var_pvisibilitynode6, var_tkwvarnode7, var_tattridnode8, var35, var_ptypenode10, var36, var_pexprnode12) /* init_aattrpropdef on <var33:AAttrPropdef>*/;
+CHECK_NEW_parser_nodes__AAttrPropdef(var33);
+var_ppropdefnode1 = var33;
 var_node_list = var_ppropdefnode1;
-var29 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction418> */
-var30 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var29) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var30, var_node_list) /* push on <var_p:Parser>*/;
+var37 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction408> */
+var38 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var37) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var38, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction418#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction418__action(val* self, val* p0) {
-parser__ReduceAction418__action(self, p0);
+/* method parser#ReduceAction408#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction408__action(val* self, val* p0) {
+parser__ReduceAction408__action(self, p0);
 RET_LABEL:;
 }