c_src: update for kill is
[nit.git] / c_src / parser.sep.16.c
index 8306f46..ddd36f2 100644 (file)
 #include "parser.sep.0.h"
-/* method parser#ReduceAction885#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction885__action(val* self, val* p0) {
-parser__ReduceAction885__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction886#action for (self: ReduceAction886, Parser) */
-void parser__ReduceAction886__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_patargnode1 /* var patargnode1: nullable Object */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_patargnode1 = var_nodearraylist3;
-var_node_list = var_patargnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction886> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction886#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction886__action(val* self, val* p0) {
-parser__ReduceAction886__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction887#action for (self: ReduceAction887, Parser) */
-void parser__ReduceAction887__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_ptypenode2 /* var ptypenode2: nullable Object */;
-short int var2 /* : Bool */;
-int cltype;
-int idtype;
-val* var3 /* : ATypeAtArg */;
-val* var_patargnode1 /* var patargnode1: nullable ATypeAtArg */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist1 = var1;
-var_ptypenode2 = var_nodearraylist1;
-/* <var_ptypenode2:nullable Object> isa nullable AType */
-cltype = type_nullable_parser_nodes__AType.color;
-idtype = type_nullable_parser_nodes__AType.id;
-if(var_ptypenode2 == NULL) {
-var2 = 1;
-} else {
-if(cltype >= var_ptypenode2->type->table_size) {
-var2 = 0;
-} else {
-var2 = var_ptypenode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30053);
-exit(1);
-}
-var3 = NEW_parser_nodes__ATypeAtArg(&type_parser_nodes__ATypeAtArg);
-((void (*)(val*, val*))(var3->class->vft[COLOR_parser_prod__ATypeAtArg__init_atypeatarg]))(var3, var_ptypenode2) /* init_atypeatarg on <var3:ATypeAtArg>*/;
-CHECK_NEW_parser_nodes__ATypeAtArg(var3);
-var_patargnode1 = var3;
-var_node_list = var_patargnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction887> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction887#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction887__action(val* self, val* p0) {
-parser__ReduceAction887__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction888#action for (self: ReduceAction888, Parser) */
-void parser__ReduceAction888__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pexprnode2 /* var pexprnode2: nullable Object */;
-short int var2 /* : Bool */;
-int cltype;
-int idtype;
-val* var3 /* : AExprAtArg */;
-val* var_patargnode1 /* var patargnode1: nullable AExprAtArg */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist1 = var1;
-var_pexprnode2 = var_nodearraylist1;
-/* <var_pexprnode2:nullable Object> isa nullable AExpr */
-cltype = type_nullable_parser_nodes__AExpr.color;
-idtype = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode2 == NULL) {
-var2 = 1;
-} else {
-if(cltype >= var_pexprnode2->type->table_size) {
-var2 = 0;
-} else {
-var2 = var_pexprnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30068);
-exit(1);
-}
-var3 = NEW_parser_nodes__AExprAtArg(&type_parser_nodes__AExprAtArg);
-((void (*)(val*, val*))(var3->class->vft[COLOR_parser_prod__AExprAtArg__init_aexpratarg]))(var3, var_pexprnode2) /* init_aexpratarg on <var3:AExprAtArg>*/;
-CHECK_NEW_parser_nodes__AExprAtArg(var3);
-var_patargnode1 = var3;
-var_node_list = var_patargnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction888> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction888#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction888__action(val* self, val* p0) {
-parser__ReduceAction888__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction890#action for (self: ReduceAction890, Parser) */
-void parser__ReduceAction890__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pannotationsnode2 /* var pannotationsnode2: nullable Object */;
-short int var2 /* : Bool */;
-int cltype;
-int idtype;
-val* var3 /* : AAtAtArg */;
-val* var_patargnode1 /* var patargnode1: nullable AAtAtArg */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist1 = var1;
-var_pannotationsnode2 = var_nodearraylist1;
-/* <var_pannotationsnode2:nullable Object> isa nullable AAnnotations */
-cltype = type_nullable_parser_nodes__AAnnotations.color;
-idtype = type_nullable_parser_nodes__AAnnotations.id;
-if(var_pannotationsnode2 == NULL) {
-var2 = 1;
-} else {
-if(cltype >= var_pannotationsnode2->type->table_size) {
-var2 = 0;
-} else {
-var2 = var_pannotationsnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30083);
-exit(1);
-}
-var3 = NEW_parser_nodes__AAtAtArg(&type_parser_nodes__AAtAtArg);
-((void (*)(val*, val*))(var3->class->vft[COLOR_parser_prod__AAtAtArg__init_aatatarg]))(var3, var_pannotationsnode2) /* init_aatatarg on <var3:AAtAtArg>*/;
-CHECK_NEW_parser_nodes__AAtAtArg(var3);
-var_patargnode1 = var3;
-var_node_list = var_patargnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction890> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction890#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction890__action(val* self, val* p0) {
-parser__ReduceAction890__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction891#action for (self: ReduceAction891, Parser) */
-void parser__ReduceAction891__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tidnode2 /* var tidnode2: nullable Object */;
-short int var2 /* : Bool */;
-int cltype;
-int idtype;
-val* var3 /* : AIdAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AIdAtid */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist1 = var1;
-var_tidnode2 = var_nodearraylist1;
-/* <var_tidnode2:nullable Object> isa nullable TId */
-cltype = type_nullable_parser_nodes__TId.color;
-idtype = type_nullable_parser_nodes__TId.id;
-if(var_tidnode2 == NULL) {
-var2 = 1;
-} else {
-if(cltype >= var_tidnode2->type->table_size) {
-var2 = 0;
-} else {
-var2 = var_tidnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30098);
-exit(1);
-}
-var3 = NEW_parser_nodes__AIdAtid(&type_parser_nodes__AIdAtid);
-((void (*)(val*, val*))(var3->class->vft[COLOR_parser_prod__AIdAtid__init_aidatid]))(var3, var_tidnode2) /* init_aidatid on <var3:AIdAtid>*/;
-CHECK_NEW_parser_nodes__AIdAtid(var3);
-var_patidnode1 = var3;
-var_node_list = var_patidnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction891> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction891#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction891__action(val* self, val* p0) {
-parser__ReduceAction891__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction892#action for (self: ReduceAction892, Parser) */
-void parser__ReduceAction892__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tidnode2 /* var tidnode2: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : AIdAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AIdAtid */;
-long var5 /* : Int */;
-long var6 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var_tidnode2 = var_nodearraylist2;
-/* <var_tidnode2:nullable Object> isa nullable TId */
-cltype = type_nullable_parser_nodes__TId.color;
-idtype = type_nullable_parser_nodes__TId.id;
-if(var_tidnode2 == NULL) {
-var3 = 1;
-} else {
-if(cltype >= var_tidnode2->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_tidnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30114);
-exit(1);
-}
-var4 = NEW_parser_nodes__AIdAtid(&type_parser_nodes__AIdAtid);
-((void (*)(val*, val*))(var4->class->vft[COLOR_parser_prod__AIdAtid__init_aidatid]))(var4, var_tidnode2) /* init_aidatid on <var4:AIdAtid>*/;
-CHECK_NEW_parser_nodes__AIdAtid(var4);
-var_patidnode1 = var4;
-var_node_list = var_patidnode1;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction892> */
-var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction892#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction892__action(val* self, val* p0) {
-parser__ReduceAction892__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction893#action for (self: ReduceAction893, Parser) */
-void parser__ReduceAction893__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tidnode2 /* var tidnode2: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : AIdAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AIdAtid */;
-long var6 /* : Int */;
-long var7 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_tidnode2 = var_nodearraylist3;
-/* <var_tidnode2:nullable Object> isa nullable TId */
-cltype = type_nullable_parser_nodes__TId.color;
-idtype = type_nullable_parser_nodes__TId.id;
-if(var_tidnode2 == NULL) {
-var4 = 1;
-} else {
-if(cltype >= var_tidnode2->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_tidnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30131);
-exit(1);
-}
-var5 = NEW_parser_nodes__AIdAtid(&type_parser_nodes__AIdAtid);
-((void (*)(val*, val*))(var5->class->vft[COLOR_parser_prod__AIdAtid__init_aidatid]))(var5, var_tidnode2) /* init_aidatid on <var5:AIdAtid>*/;
-CHECK_NEW_parser_nodes__AIdAtid(var5);
-var_patidnode1 = var5;
-var_node_list = var_patidnode1;
-var6 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction893> */
-var7 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var6) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var7, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction893#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction893__action(val* self, val* p0) {
-parser__ReduceAction893__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction895#action for (self: ReduceAction895, Parser) */
-void parser__ReduceAction895__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwreadablenode2 /* var tkwreadablenode2: nullable Object */;
-short int var2 /* : Bool */;
-int cltype;
-int idtype;
-val* var3 /* : AKwreadableAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwreadableAtid */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist1 = var1;
-var_tkwreadablenode2 = var_nodearraylist1;
-/* <var_tkwreadablenode2:nullable Object> isa nullable TKwreadable */
-cltype = type_nullable_parser_nodes__TKwreadable.color;
-idtype = type_nullable_parser_nodes__TKwreadable.id;
-if(var_tkwreadablenode2 == NULL) {
-var2 = 1;
-} else {
-if(cltype >= var_tkwreadablenode2->type->table_size) {
-var2 = 0;
-} else {
-var2 = var_tkwreadablenode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30146);
-exit(1);
-}
-var3 = NEW_parser_nodes__AKwreadableAtid(&type_parser_nodes__AKwreadableAtid);
-((void (*)(val*, val*))(var3->class->vft[COLOR_parser_prod__AKwreadableAtid__init_akwreadableatid]))(var3, var_tkwreadablenode2) /* init_akwreadableatid on <var3:AKwreadableAtid>*/;
-CHECK_NEW_parser_nodes__AKwreadableAtid(var3);
-var_patidnode1 = var3;
-var_node_list = var_patidnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction895> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction895#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction895__action(val* self, val* p0) {
-parser__ReduceAction895__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction896#action for (self: ReduceAction896, Parser) */
-void parser__ReduceAction896__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwreadablenode2 /* var tkwreadablenode2: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : AKwreadableAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwreadableAtid */;
-long var5 /* : Int */;
-long var6 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var_tkwreadablenode2 = var_nodearraylist2;
-/* <var_tkwreadablenode2:nullable Object> isa nullable TKwreadable */
-cltype = type_nullable_parser_nodes__TKwreadable.color;
-idtype = type_nullable_parser_nodes__TKwreadable.id;
-if(var_tkwreadablenode2 == NULL) {
-var3 = 1;
-} else {
-if(cltype >= var_tkwreadablenode2->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_tkwreadablenode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30162);
-exit(1);
-}
-var4 = NEW_parser_nodes__AKwreadableAtid(&type_parser_nodes__AKwreadableAtid);
-((void (*)(val*, val*))(var4->class->vft[COLOR_parser_prod__AKwreadableAtid__init_akwreadableatid]))(var4, var_tkwreadablenode2) /* init_akwreadableatid on <var4:AKwreadableAtid>*/;
-CHECK_NEW_parser_nodes__AKwreadableAtid(var4);
-var_patidnode1 = var4;
-var_node_list = var_patidnode1;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction896> */
-var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction896#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction896__action(val* self, val* p0) {
-parser__ReduceAction896__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction897#action for (self: ReduceAction897, Parser) */
-void parser__ReduceAction897__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwreadablenode2 /* var tkwreadablenode2: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : AKwreadableAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwreadableAtid */;
-long var6 /* : Int */;
-long var7 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_tkwreadablenode2 = var_nodearraylist3;
-/* <var_tkwreadablenode2:nullable Object> isa nullable TKwreadable */
-cltype = type_nullable_parser_nodes__TKwreadable.color;
-idtype = type_nullable_parser_nodes__TKwreadable.id;
-if(var_tkwreadablenode2 == NULL) {
-var4 = 1;
-} else {
-if(cltype >= var_tkwreadablenode2->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_tkwreadablenode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30179);
-exit(1);
-}
-var5 = NEW_parser_nodes__AKwreadableAtid(&type_parser_nodes__AKwreadableAtid);
-((void (*)(val*, val*))(var5->class->vft[COLOR_parser_prod__AKwreadableAtid__init_akwreadableatid]))(var5, var_tkwreadablenode2) /* init_akwreadableatid on <var5:AKwreadableAtid>*/;
-CHECK_NEW_parser_nodes__AKwreadableAtid(var5);
-var_patidnode1 = var5;
-var_node_list = var_patidnode1;
-var6 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction897> */
-var7 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var6) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var7, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction897#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction897__action(val* self, val* p0) {
-parser__ReduceAction897__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction899#action for (self: ReduceAction899, Parser) */
-void parser__ReduceAction899__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwwritablenode2 /* var tkwwritablenode2: nullable Object */;
-short int var2 /* : Bool */;
-int cltype;
-int idtype;
-val* var3 /* : AKwwritableAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwwritableAtid */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist1 = var1;
-var_tkwwritablenode2 = var_nodearraylist1;
-/* <var_tkwwritablenode2:nullable Object> isa nullable TKwwritable */
-cltype = type_nullable_parser_nodes__TKwwritable.color;
-idtype = type_nullable_parser_nodes__TKwwritable.id;
-if(var_tkwwritablenode2 == NULL) {
-var2 = 1;
-} else {
-if(cltype >= var_tkwwritablenode2->type->table_size) {
-var2 = 0;
-} else {
-var2 = var_tkwwritablenode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30194);
-exit(1);
-}
-var3 = NEW_parser_nodes__AKwwritableAtid(&type_parser_nodes__AKwwritableAtid);
-((void (*)(val*, val*))(var3->class->vft[COLOR_parser_prod__AKwwritableAtid__init_akwwritableatid]))(var3, var_tkwwritablenode2) /* init_akwwritableatid on <var3:AKwwritableAtid>*/;
-CHECK_NEW_parser_nodes__AKwwritableAtid(var3);
-var_patidnode1 = var3;
-var_node_list = var_patidnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction899> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction899#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction899__action(val* self, val* p0) {
-parser__ReduceAction899__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction900#action for (self: ReduceAction900, Parser) */
-void parser__ReduceAction900__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwwritablenode2 /* var tkwwritablenode2: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : AKwwritableAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwwritableAtid */;
-long var5 /* : Int */;
-long var6 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var_tkwwritablenode2 = var_nodearraylist2;
-/* <var_tkwwritablenode2:nullable Object> isa nullable TKwwritable */
-cltype = type_nullable_parser_nodes__TKwwritable.color;
-idtype = type_nullable_parser_nodes__TKwwritable.id;
-if(var_tkwwritablenode2 == NULL) {
-var3 = 1;
-} else {
-if(cltype >= var_tkwwritablenode2->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_tkwwritablenode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30210);
-exit(1);
-}
-var4 = NEW_parser_nodes__AKwwritableAtid(&type_parser_nodes__AKwwritableAtid);
-((void (*)(val*, val*))(var4->class->vft[COLOR_parser_prod__AKwwritableAtid__init_akwwritableatid]))(var4, var_tkwwritablenode2) /* init_akwwritableatid on <var4:AKwwritableAtid>*/;
-CHECK_NEW_parser_nodes__AKwwritableAtid(var4);
-var_patidnode1 = var4;
-var_node_list = var_patidnode1;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction900> */
-var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction900#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction900__action(val* self, val* p0) {
-parser__ReduceAction900__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction901#action for (self: ReduceAction901, Parser) */
-void parser__ReduceAction901__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwwritablenode2 /* var tkwwritablenode2: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : AKwwritableAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwwritableAtid */;
-long var6 /* : Int */;
-long var7 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_tkwwritablenode2 = var_nodearraylist3;
-/* <var_tkwwritablenode2:nullable Object> isa nullable TKwwritable */
-cltype = type_nullable_parser_nodes__TKwwritable.color;
-idtype = type_nullable_parser_nodes__TKwwritable.id;
-if(var_tkwwritablenode2 == NULL) {
-var4 = 1;
-} else {
-if(cltype >= var_tkwwritablenode2->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_tkwwritablenode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30227);
-exit(1);
-}
-var5 = NEW_parser_nodes__AKwwritableAtid(&type_parser_nodes__AKwwritableAtid);
-((void (*)(val*, val*))(var5->class->vft[COLOR_parser_prod__AKwwritableAtid__init_akwwritableatid]))(var5, var_tkwwritablenode2) /* init_akwwritableatid on <var5:AKwwritableAtid>*/;
-CHECK_NEW_parser_nodes__AKwwritableAtid(var5);
-var_patidnode1 = var5;
-var_node_list = var_patidnode1;
-var6 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction901> */
-var7 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var6) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var7, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction901#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction901__action(val* self, val* p0) {
-parser__ReduceAction901__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction903#action for (self: ReduceAction903, Parser) */
-void parser__ReduceAction903__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwimportnode2 /* var tkwimportnode2: nullable Object */;
-short int var2 /* : Bool */;
-int cltype;
-int idtype;
-val* var3 /* : AKwimportAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwimportAtid */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist1 = var1;
-var_tkwimportnode2 = var_nodearraylist1;
-/* <var_tkwimportnode2:nullable Object> isa nullable TKwimport */
-cltype = type_nullable_parser_nodes__TKwimport.color;
-idtype = type_nullable_parser_nodes__TKwimport.id;
-if(var_tkwimportnode2 == NULL) {
-var2 = 1;
-} else {
-if(cltype >= var_tkwimportnode2->type->table_size) {
-var2 = 0;
-} else {
-var2 = var_tkwimportnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var2) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30242);
-exit(1);
-}
-var3 = NEW_parser_nodes__AKwimportAtid(&type_parser_nodes__AKwimportAtid);
-((void (*)(val*, val*))(var3->class->vft[COLOR_parser_prod__AKwimportAtid__init_akwimportatid]))(var3, var_tkwimportnode2) /* init_akwimportatid on <var3:AKwimportAtid>*/;
-CHECK_NEW_parser_nodes__AKwimportAtid(var3);
-var_patidnode1 = var3;
-var_node_list = var_patidnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction903> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction903#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction903__action(val* self, val* p0) {
-parser__ReduceAction903__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction904#action for (self: ReduceAction904, Parser) */
-void parser__ReduceAction904__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwimportnode2 /* var tkwimportnode2: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : AKwimportAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwimportAtid */;
-long var5 /* : Int */;
-long var6 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var_tkwimportnode2 = var_nodearraylist2;
-/* <var_tkwimportnode2:nullable Object> isa nullable TKwimport */
-cltype = type_nullable_parser_nodes__TKwimport.color;
-idtype = type_nullable_parser_nodes__TKwimport.id;
-if(var_tkwimportnode2 == NULL) {
-var3 = 1;
-} else {
-if(cltype >= var_tkwimportnode2->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_tkwimportnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30258);
-exit(1);
-}
-var4 = NEW_parser_nodes__AKwimportAtid(&type_parser_nodes__AKwimportAtid);
-((void (*)(val*, val*))(var4->class->vft[COLOR_parser_prod__AKwimportAtid__init_akwimportatid]))(var4, var_tkwimportnode2) /* init_akwimportatid on <var4:AKwimportAtid>*/;
-CHECK_NEW_parser_nodes__AKwimportAtid(var4);
-var_patidnode1 = var4;
-var_node_list = var_patidnode1;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction904> */
-var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction904#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction904__action(val* self, val* p0) {
-parser__ReduceAction904__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction905#action for (self: ReduceAction905, Parser) */
-void parser__ReduceAction905__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwimportnode2 /* var tkwimportnode2: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : AKwimportAtid */;
-val* var_patidnode1 /* var patidnode1: nullable AKwimportAtid */;
-long var6 /* : Int */;
-long var7 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_tkwimportnode2 = var_nodearraylist3;
-/* <var_tkwimportnode2:nullable Object> isa nullable TKwimport */
-cltype = type_nullable_parser_nodes__TKwimport.color;
-idtype = type_nullable_parser_nodes__TKwimport.id;
-if(var_tkwimportnode2 == NULL) {
-var4 = 1;
-} else {
-if(cltype >= var_tkwimportnode2->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_tkwimportnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30275);
-exit(1);
-}
-var5 = NEW_parser_nodes__AKwimportAtid(&type_parser_nodes__AKwimportAtid);
-((void (*)(val*, val*))(var5->class->vft[COLOR_parser_prod__AKwimportAtid__init_akwimportatid]))(var5, var_tkwimportnode2) /* init_akwimportatid on <var5:AKwimportAtid>*/;
-CHECK_NEW_parser_nodes__AKwimportAtid(var5);
-var_patidnode1 = var5;
-var_node_list = var_patidnode1;
-var6 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction905> */
-var7 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var6) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var7, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction905#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction905__action(val* self, val* p0) {
-parser__ReduceAction905__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction907#action for (self: ReduceAction907, Parser) */
-void parser__ReduceAction907__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* var2 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var5 /* : Array[Object] */;
-val* var_listnode4 /* var listnode4: Array[Object] */;
-val* var_toparnode2 /* var toparnode2: nullable Object */;
-short int var6 /* : Bool */;
-int cltype;
-int idtype;
-val* var_listnode3 /* var listnode3: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var10 /* : Array[Object] */;
-val* var_tcparnode5 /* var tcparnode5: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var14 /* : AParExprs */;
-val* var_pexprsnode1 /* var pexprsnode1: nullable AParExprs */;
-long var15 /* : Int */;
-long var16 /* : 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;
-var5 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[Object]>*/;
-CHECK_NEW_array__Array(var5);
-var_listnode4 = var5;
-var_toparnode2 = var_nodearraylist1;
-/* <var_toparnode2:nullable Object> isa nullable TOpar */
-cltype = type_nullable_parser_nodes__TOpar.color;
-idtype = type_nullable_parser_nodes__TOpar.id;
-if(var_toparnode2 == NULL) {
-var6 = 1;
-} else {
-if(cltype >= var_toparnode2->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_toparnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30294);
-exit(1);
-}
-var_listnode3 = var_nodearraylist3;
-/* <var_listnode3:nullable Object> isa Array[Object] */
-cltype8 = type_array__Arraykernel__Object.color;
-idtype9 = type_array__Arraykernel__Object.id;
-if(var_listnode3 == NULL) {
-var7 = 0;
-} else {
-if(cltype8 >= var_listnode3->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_listnode3->type->type_table[cltype8] == idtype9;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30296);
-exit(1);
-}
-var10 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode4, var_listnode3) /* concat on <self:ReduceAction907>*/;
-var_listnode4 = var10;
-var_tcparnode5 = var_nodearraylist4;
-/* <var_tcparnode5:nullable Object> isa nullable TCpar */
-cltype12 = type_nullable_parser_nodes__TCpar.color;
-idtype13 = type_nullable_parser_nodes__TCpar.id;
-if(var_tcparnode5 == NULL) {
-var11 = 1;
-} else {
-if(cltype12 >= var_tcparnode5->type->table_size) {
-var11 = 0;
-} else {
-var11 = var_tcparnode5->type->type_table[cltype12] == idtype13;
-}
-}
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30299);
-exit(1);
-}
-var14 = NEW_parser_nodes__AParExprs(&type_parser_nodes__AParExprs);
-((void (*)(val*, val*, val*, val*))(var14->class->vft[COLOR_parser_prod__AParExprs__init_aparexprs]))(var14, var_toparnode2, var_listnode4, var_tcparnode5) /* init_aparexprs on <var14:AParExprs>*/;
-CHECK_NEW_parser_nodes__AParExprs(var14);
-var_pexprsnode1 = var14;
-var_node_list = var_pexprsnode1;
-var15 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction907> */
-var16 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var15) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var16, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction907#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction907__action(val* self, val* p0) {
-parser__ReduceAction907__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction908#action for (self: ReduceAction908, Parser) */
-void parser__ReduceAction908__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var4 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_toparnode2 /* var toparnode2: nullable Object */;
-short int var5 /* : Bool */;
-int cltype;
-int idtype;
-val* var_tcparnode4 /* var tcparnode4: nullable Object */;
-short int var6 /* : Bool */;
-int cltype7;
-int idtype8;
-val* var9 /* : AParExprs */;
-val* var_pexprsnode1 /* var pexprsnode1: nullable AParExprs */;
-long var10 /* : Int */;
-long var11 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var4 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[Object]>*/;
-CHECK_NEW_array__Array(var4);
-var_listnode3 = var4;
-var_toparnode2 = var_nodearraylist1;
-/* <var_toparnode2:nullable Object> isa nullable TOpar */
-cltype = type_nullable_parser_nodes__TOpar.color;
-idtype = type_nullable_parser_nodes__TOpar.id;
-if(var_toparnode2 == NULL) {
-var5 = 1;
-} else {
-if(cltype >= var_toparnode2->type->table_size) {
-var5 = 0;
-} else {
-var5 = var_toparnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30319);
-exit(1);
-}
-var_tcparnode4 = var_nodearraylist3;
-/* <var_tcparnode4:nullable Object> isa nullable TCpar */
-cltype7 = type_nullable_parser_nodes__TCpar.color;
-idtype8 = type_nullable_parser_nodes__TCpar.id;
-if(var_tcparnode4 == NULL) {
-var6 = 1;
-} else {
-if(cltype7 >= var_tcparnode4->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_tcparnode4->type->type_table[cltype7] == idtype8;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30321);
-exit(1);
-}
-var9 = NEW_parser_nodes__AParExprs(&type_parser_nodes__AParExprs);
-((void (*)(val*, val*, val*, val*))(var9->class->vft[COLOR_parser_prod__AParExprs__init_aparexprs]))(var9, var_toparnode2, var_listnode3, var_tcparnode4) /* init_aparexprs on <var9:AParExprs>*/;
-CHECK_NEW_parser_nodes__AParExprs(var9);
-var_pexprsnode1 = var9;
-var_node_list = var_pexprsnode1;
-var10 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction908> */
-var11 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var10) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var11, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction908#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction908__action(val* self, val* p0) {
-parser__ReduceAction908__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction909#action for (self: ReduceAction909, Parser) */
-void parser__ReduceAction909__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 /* : Array[Object] */;
-val* var_listnode2 /* var listnode2: Array[Object] */;
-val* var2 /* : AListExprs */;
-val* var_pexprsnode1 /* var pexprsnode1: nullable AListExprs */;
-long var3 /* : Int */;
-long var4 /* : Int */;
-var_p = p0;
-var = NULL;
-var_node_list = var;
-var1 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[Object]>*/;
-CHECK_NEW_array__Array(var1);
-var_listnode2 = var1;
-var2 = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
-((void (*)(val*, val*))(var2->class->vft[COLOR_parser_prod__AListExprs__init_alistexprs]))(var2, var_listnode2) /* init_alistexprs on <var2:AListExprs>*/;
-CHECK_NEW_parser_nodes__AListExprs(var2);
-var_pexprsnode1 = var2;
-var_node_list = var_pexprsnode1;
-var3 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction909> */
-var4 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var3) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var4, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction909#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction909__action(val* self, val* p0) {
-parser__ReduceAction909__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction911#action for (self: ReduceAction911, Parser) */
-void parser__ReduceAction911__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var2 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_pexprnode2 /* var pexprnode2: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-val* var6 /* : AListExprs */;
-val* var_pexprsnode1 /* var pexprsnode1: nullable AListExprs */;
-long var7 /* : Int */;
-long var8 /* : 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_nodearraylist1 = var1;
-var2 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Object]>*/;
-CHECK_NEW_array__Array(var2);
-var_listnode3 = var2;
-var_pexprnode2 = var_nodearraylist1;
-/* <var_pexprnode2:nullable Object> isa nullable AExpr */
-cltype = type_nullable_parser_nodes__AExpr.color;
-idtype = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode2 == NULL) {
-var3 = 1;
-} else {
-if(cltype >= var_pexprnode2->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_pexprnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30352);
-exit(1);
-}
-var4 = NULL;
-if (var_pexprnode2 == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
-}
-if (var5){
-((void (*)(val*, val*))(var_listnode3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_listnode3, var_pexprnode2) /* add on <var_listnode3:Array[Object]>*/;
-} else {
-}
-var6 = NEW_parser_nodes__AListExprs(&type_parser_nodes__AListExprs);
-((void (*)(val*, val*))(var6->class->vft[COLOR_parser_prod__AListExprs__init_alistexprs]))(var6, var_listnode3) /* init_alistexprs on <var6:AListExprs>*/;
-CHECK_NEW_parser_nodes__AListExprs(var6);
-var_pexprsnode1 = var6;
-var_node_list = var_pexprsnode1;
-var7 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction911> */
-var8 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var7) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var8, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction911#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction911__action(val* self, val* p0) {
-parser__ReduceAction911__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction914#action for (self: ReduceAction914, Parser) */
-void parser__ReduceAction914__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* var2 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var5 /* : Array[Object] */;
-val* var_listnode4 /* var listnode4: Array[Object] */;
-val* var_tobranode2 /* var tobranode2: nullable Object */;
-short int var6 /* : Bool */;
-int cltype;
-int idtype;
-val* var_listnode3 /* var listnode3: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var10 /* : Array[Object] */;
-val* var_tcbranode5 /* var tcbranode5: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var14 /* : ABraExprs */;
-val* var_pexprsnode1 /* var pexprsnode1: nullable ABraExprs */;
-long var15 /* : Int */;
-long var16 /* : 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;
-var5 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[Object]>*/;
-CHECK_NEW_array__Array(var5);
-var_listnode4 = var5;
-var_tobranode2 = var_nodearraylist1;
-/* <var_tobranode2:nullable Object> isa nullable TObra */
-cltype = type_nullable_parser_nodes__TObra.color;
-idtype = type_nullable_parser_nodes__TObra.id;
-if(var_tobranode2 == NULL) {
-var6 = 1;
-} else {
-if(cltype >= var_tobranode2->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_tobranode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30374);
-exit(1);
-}
-var_listnode3 = var_nodearraylist3;
-/* <var_listnode3:nullable Object> isa Array[Object] */
-cltype8 = type_array__Arraykernel__Object.color;
-idtype9 = type_array__Arraykernel__Object.id;
-if(var_listnode3 == NULL) {
-var7 = 0;
-} else {
-if(cltype8 >= var_listnode3->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_listnode3->type->type_table[cltype8] == idtype9;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30376);
-exit(1);
-}
-var10 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode4, var_listnode3) /* concat on <self:ReduceAction914>*/;
-var_listnode4 = var10;
-var_tcbranode5 = var_nodearraylist4;
-/* <var_tcbranode5:nullable Object> isa nullable TCbra */
-cltype12 = type_nullable_parser_nodes__TCbra.color;
-idtype13 = type_nullable_parser_nodes__TCbra.id;
-if(var_tcbranode5 == NULL) {
-var11 = 1;
-} else {
-if(cltype12 >= var_tcbranode5->type->table_size) {
-var11 = 0;
-} else {
-var11 = var_tcbranode5->type->type_table[cltype12] == idtype13;
-}
-}
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30379);
-exit(1);
-}
-var14 = NEW_parser_nodes__ABraExprs(&type_parser_nodes__ABraExprs);
-((void (*)(val*, val*, val*, val*))(var14->class->vft[COLOR_parser_prod__ABraExprs__init_abraexprs]))(var14, var_tobranode2, var_listnode4, var_tcbranode5) /* init_abraexprs on <var14:ABraExprs>*/;
-CHECK_NEW_parser_nodes__ABraExprs(var14);
-var_pexprsnode1 = var14;
-var_node_list = var_pexprsnode1;
-var15 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction914> */
-var16 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var15) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var16, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction914#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction914__action(val* self, val* p0) {
-parser__ReduceAction914__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction915#action for (self: ReduceAction915, Parser) */
-void parser__ReduceAction915__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var3 /* : Array[Object] */;
-val* var_listnode2 /* var listnode2: Array[Object] */;
-val* var_pexprnode1 /* var pexprnode1: nullable Object */;
-val* var4 /* : null */;
-short int var5 /* : Bool */;
-long var6 /* : Int */;
-long var7 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var3 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[Object]>*/;
-CHECK_NEW_array__Array(var3);
-var_listnode2 = var3;
-var_pexprnode1 = var_nodearraylist1;
-var4 = NULL;
-if (var_pexprnode1 == NULL) {
-var5 = 0; /* is null */
-} else {
-var5 = 1; /* arg is null and recv is not */
-}
-if (var5){
-((void (*)(val*, val*))(var_listnode2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_listnode2, var_pexprnode1) /* add on <var_listnode2:Array[Object]>*/;
-} else {
-}
-var_node_list = var_listnode2;
-var6 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction915> */
-var7 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var6) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var7, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction915#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction915__action(val* self, val* p0) {
-parser__ReduceAction915__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction916#action for (self: ReduceAction916, Parser) */
-void parser__ReduceAction916__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var4 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_pexprnode1 /* var pexprnode1: nullable Object */;
-val* var_listnode2 /* var listnode2: nullable Object */;
-short int var5 /* : Bool */;
-int cltype;
-int idtype;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
-val* var8 /* : Array[Object] */;
-long var9 /* : Int */;
-long var10 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var4 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[Object]>*/;
-CHECK_NEW_array__Array(var4);
-var_listnode3 = var4;
-var_pexprnode1 = var_nodearraylist1;
-var_listnode2 = var_nodearraylist3;
-/* <var_listnode2:nullable Object> isa Array[Object] */
-cltype = type_array__Arraykernel__Object.color;
-idtype = type_array__Arraykernel__Object.id;
-if(var_listnode2 == NULL) {
-var5 = 0;
-} else {
-if(cltype >= var_listnode2->type->table_size) {
-var5 = 0;
-} else {
-var5 = var_listnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30416);
-exit(1);
-}
-var6 = NULL;
-if (var_pexprnode1 == NULL) {
-var7 = 0; /* is null */
-} else {
-var7 = 1; /* arg is null and recv is not */
-}
-if (var7){
-((void (*)(val*, val*))(var_listnode3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_listnode3, var_pexprnode1) /* add on <var_listnode3:Array[Object]>*/;
-} else {
-}
-var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode2) /* concat on <self:ReduceAction916>*/;
-var_listnode3 = var8;
-var_node_list = var_listnode3;
-var9 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction916> */
-var10 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var9) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var10, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction916#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction916__action(val* self, val* p0) {
-parser__ReduceAction916__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction917#action for (self: ReduceAction917, Parser) */
-void parser__ReduceAction917__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* var2 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pexprnode1 /* var pexprnode1: nullable Object */;
-long var5 /* : Int */;
-long var6 /* : 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_pexprnode1 = var_nodearraylist3;
-var_node_list = var_pexprnode1;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction917> */
-var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction917#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction917__action(val* self, val* p0) {
-parser__ReduceAction917__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction918#action for (self: ReduceAction918, Parser) */
-void parser__ReduceAction918__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var2 /* : Array[Object] */;
-val* var_listnode2 /* var listnode2: Array[Object] */;
-val* var_tidnode1 /* var tidnode1: nullable Object */;
-val* var3 /* : null */;
-short int var4 /* : Bool */;
-long var5 /* : Int */;
-long var6 /* : 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_nodearraylist1 = var1;
-var2 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Object]>*/;
-CHECK_NEW_array__Array(var2);
-var_listnode2 = var2;
-var_tidnode1 = var_nodearraylist1;
-var3 = NULL;
-if (var_tidnode1 == NULL) {
-var4 = 0; /* is null */
-} else {
-var4 = 1; /* arg is null and recv is not */
-}
-if (var4){
-((void (*)(val*, val*))(var_listnode2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_listnode2, var_tidnode1) /* add on <var_listnode2:Array[Object]>*/;
-} else {
-}
-var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction918> */
-var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction918#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction918__action(val* self, val* p0) {
-parser__ReduceAction918__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction919#action for (self: ReduceAction919, Parser) */
-void parser__ReduceAction919__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* var6 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_listnode1 /* var listnode1: nullable Object */;
-short int var7 /* : Bool */;
-int cltype;
-int idtype;
-val* var_tidnode2 /* var tidnode2: nullable Object */;
-val* var8 /* : Array[Object] */;
-val* var9 /* : null */;
-short int var10 /* : Bool */;
-long var11 /* : Int */;
-long var12 /* : 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;
-var6 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[Object]>*/;
-CHECK_NEW_array__Array(var6);
-var_listnode3 = var6;
-var_listnode1 = var_nodearraylist1;
-/* <var_listnode1:nullable Object> isa Array[Object] */
-cltype = type_array__Arraykernel__Object.color;
-idtype = type_array__Arraykernel__Object.id;
-if(var_listnode1 == NULL) {
-var7 = 0;
-} else {
-if(cltype >= var_listnode1->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_listnode1->type->type_table[cltype] == idtype;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30466);
-exit(1);
-}
-var_tidnode2 = var_nodearraylist5;
-var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction919>*/;
-var_listnode3 = var8;
-var9 = NULL;
-if (var_tidnode2 == NULL) {
-var10 = 0; /* is null */
-} else {
-var10 = 1; /* arg is null and recv is not */
-}
-if (var10){
-((void (*)(val*, val*))(var_listnode3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_listnode3, var_tidnode2) /* add on <var_listnode3:Array[Object]>*/;
-} else {
-}
-var_node_list = var_listnode3;
-var11 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction919> */
-var12 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var11) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var12, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction919#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction919__action(val* self, val* p0) {
-parser__ReduceAction919__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction920#action for (self: ReduceAction920, Parser) */
-void parser__ReduceAction920__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var2 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_tidnode4 /* var tidnode4: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : AModuleName */;
-val* var5 /* : null */;
-val* var_pmodulenamenode1 /* var pmodulenamenode1: nullable AModuleName */;
-long var6 /* : Int */;
-long var7 /* : 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_nodearraylist1 = var1;
-var2 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Object]>*/;
-CHECK_NEW_array__Array(var2);
-var_listnode3 = var2;
-var_tidnode4 = var_nodearraylist1;
-/* <var_tidnode4:nullable Object> isa nullable TId */
-cltype = type_nullable_parser_nodes__TId.color;
-idtype = type_nullable_parser_nodes__TId.id;
-if(var_tidnode4 == NULL) {
-var3 = 1;
-} else {
-if(cltype >= var_tidnode4->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_tidnode4->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30484);
-exit(1);
-}
-var4 = NEW_parser_nodes__AModuleName(&type_parser_nodes__AModuleName);
-var5 = NULL;
-((void (*)(val*, val*, val*, val*))(var4->class->vft[COLOR_parser_prod__AModuleName__init_amodulename]))(var4, var5, var_listnode3, var_tidnode4) /* init_amodulename on <var4:AModuleName>*/;
-CHECK_NEW_parser_nodes__AModuleName(var4);
-var_pmodulenamenode1 = var4;
-var_node_list = var_pmodulenamenode1;
-var6 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction920> */
-var7 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var6) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var7, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction920#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction920__action(val* self, val* p0) {
-parser__ReduceAction920__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction921#action for (self: ReduceAction921, Parser) */
-void parser__ReduceAction921__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var3 /* : Array[Object] */;
-val* var_listnode4 /* var listnode4: Array[Object] */;
-val* var_listnode3 /* var listnode3: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : Array[Object] */;
-val* var_tidnode5 /* var tidnode5: nullable Object */;
-short int var6 /* : Bool */;
-int cltype7;
-int idtype8;
-val* var9 /* : AModuleName */;
-val* var10 /* : null */;
-val* var_pmodulenamenode1 /* var pmodulenamenode1: nullable AModuleName */;
-long var11 /* : Int */;
-long var12 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var3 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[Object]>*/;
-CHECK_NEW_array__Array(var3);
-var_listnode4 = var3;
-var_listnode3 = var_nodearraylist1;
-/* <var_listnode3:nullable Object> isa Array[Object] */
-cltype = type_array__Arraykernel__Object.color;
-idtype = type_array__Arraykernel__Object.id;
-if(var_listnode3 == NULL) {
-var4 = 0;
-} else {
-if(cltype >= var_listnode3->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_listnode3->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30503);
-exit(1);
-}
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode4, var_listnode3) /* concat on <self:ReduceAction921>*/;
-var_listnode4 = var5;
-var_tidnode5 = var_nodearraylist2;
-/* <var_tidnode5:nullable Object> isa nullable TId */
-cltype7 = type_nullable_parser_nodes__TId.color;
-idtype8 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode5 == NULL) {
-var6 = 1;
-} else {
-if(cltype7 >= var_tidnode5->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_tidnode5->type->type_table[cltype7] == idtype8;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30506);
-exit(1);
-}
-var9 = NEW_parser_nodes__AModuleName(&type_parser_nodes__AModuleName);
-var10 = NULL;
-((void (*)(val*, val*, val*, val*))(var9->class->vft[COLOR_parser_prod__AModuleName__init_amodulename]))(var9, var10, var_listnode4, var_tidnode5) /* init_amodulename on <var9:AModuleName>*/;
-CHECK_NEW_parser_nodes__AModuleName(var9);
-var_pmodulenamenode1 = var9;
-var_node_list = var_pmodulenamenode1;
-var11 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction921> */
-var12 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var11) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var12, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction921#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction921__action(val* self, val* p0) {
-parser__ReduceAction921__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction922#action for (self: ReduceAction922, Parser) */
-void parser__ReduceAction922__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var4 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_tquadnode2 /* var tquadnode2: nullable Object */;
-short int var5 /* : Bool */;
-int cltype;
-int idtype;
-val* var_tidnode4 /* var tidnode4: nullable Object */;
-short int var6 /* : Bool */;
-int cltype7;
-int idtype8;
-val* var9 /* : AModuleName */;
-val* var_pmodulenamenode1 /* var pmodulenamenode1: nullable AModuleName */;
-long var10 /* : Int */;
-long var11 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var4 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[Object]>*/;
-CHECK_NEW_array__Array(var4);
-var_listnode3 = var4;
-var_tquadnode2 = var_nodearraylist1;
-/* <var_tquadnode2:nullable Object> isa nullable TQuad */
-cltype = type_nullable_parser_nodes__TQuad.color;
-idtype = type_nullable_parser_nodes__TQuad.id;
-if(var_tquadnode2 == NULL) {
-var5 = 1;
-} else {
-if(cltype >= var_tquadnode2->type->table_size) {
-var5 = 0;
-} else {
-var5 = var_tquadnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30526);
-exit(1);
-}
-var_tidnode4 = var_nodearraylist3;
-/* <var_tidnode4:nullable Object> isa nullable TId */
-cltype7 = type_nullable_parser_nodes__TId.color;
-idtype8 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode4 == NULL) {
-var6 = 1;
-} else {
-if(cltype7 >= var_tidnode4->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_tidnode4->type->type_table[cltype7] == idtype8;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30528);
-exit(1);
-}
-var9 = NEW_parser_nodes__AModuleName(&type_parser_nodes__AModuleName);
-((void (*)(val*, val*, val*, val*))(var9->class->vft[COLOR_parser_prod__AModuleName__init_amodulename]))(var9, var_tquadnode2, var_listnode3, var_tidnode4) /* init_amodulename on <var9:AModuleName>*/;
-CHECK_NEW_parser_nodes__AModuleName(var9);
-var_pmodulenamenode1 = var9;
-var_node_list = var_pmodulenamenode1;
-var10 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction922> */
-var11 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var10) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var11, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction922#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction922__action(val* self, val* p0) {
-parser__ReduceAction922__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction923#action for (self: ReduceAction923, Parser) */
-void parser__ReduceAction923__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* var2 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var5 /* : Array[Object] */;
-val* var_listnode4 /* var listnode4: Array[Object] */;
-val* var_tquadnode2 /* var tquadnode2: nullable Object */;
-short int var6 /* : Bool */;
-int cltype;
-int idtype;
-val* var_listnode3 /* var listnode3: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
-val* var10 /* : Array[Object] */;
-val* var_tidnode5 /* var tidnode5: nullable Object */;
-short int var11 /* : Bool */;
-int cltype12;
-int idtype13;
-val* var14 /* : AModuleName */;
-val* var_pmodulenamenode1 /* var pmodulenamenode1: nullable AModuleName */;
-long var15 /* : Int */;
-long var16 /* : 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;
-var5 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[Object]>*/;
-CHECK_NEW_array__Array(var5);
-var_listnode4 = var5;
-var_tquadnode2 = var_nodearraylist1;
-/* <var_tquadnode2:nullable Object> isa nullable TQuad */
-cltype = type_nullable_parser_nodes__TQuad.color;
-idtype = type_nullable_parser_nodes__TQuad.id;
-if(var_tquadnode2 == NULL) {
-var6 = 1;
-} else {
-if(cltype >= var_tquadnode2->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_tquadnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30549);
-exit(1);
-}
-var_listnode3 = var_nodearraylist3;
-/* <var_listnode3:nullable Object> isa Array[Object] */
-cltype8 = type_array__Arraykernel__Object.color;
-idtype9 = type_array__Arraykernel__Object.id;
-if(var_listnode3 == NULL) {
-var7 = 0;
-} else {
-if(cltype8 >= var_listnode3->type->table_size) {
-var7 = 0;
-} else {
-var7 = var_listnode3->type->type_table[cltype8] == idtype9;
-}
-}
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30551);
-exit(1);
-}
-var10 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode4, var_listnode3) /* concat on <self:ReduceAction923>*/;
-var_listnode4 = var10;
-var_tidnode5 = var_nodearraylist4;
-/* <var_tidnode5:nullable Object> isa nullable TId */
-cltype12 = type_nullable_parser_nodes__TId.color;
-idtype13 = type_nullable_parser_nodes__TId.id;
-if(var_tidnode5 == NULL) {
-var11 = 1;
-} else {
-if(cltype12 >= var_tidnode5->type->table_size) {
-var11 = 0;
-} else {
-var11 = var_tidnode5->type->type_table[cltype12] == idtype13;
-}
-}
-if (!var11) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30554);
-exit(1);
-}
-var14 = NEW_parser_nodes__AModuleName(&type_parser_nodes__AModuleName);
-((void (*)(val*, val*, val*, val*))(var14->class->vft[COLOR_parser_prod__AModuleName__init_amodulename]))(var14, var_tquadnode2, var_listnode4, var_tidnode5) /* init_amodulename on <var14:AModuleName>*/;
-CHECK_NEW_parser_nodes__AModuleName(var14);
-var_pmodulenamenode1 = var14;
-var_node_list = var_pmodulenamenode1;
-var15 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction923> */
-var16 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var15) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var16, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction923#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction923__action(val* self, val* p0) {
-parser__ReduceAction923__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction924#action for (self: ReduceAction924, Parser) */
-void parser__ReduceAction924__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tidnode1 /* var tidnode1: nullable Object */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_tidnode1 = var_nodearraylist1;
-var_node_list = var_tidnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction924> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction924#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction924__action(val* self, val* p0) {
-parser__ReduceAction924__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction925#action for (self: ReduceAction925, Parser) */
-void parser__ReduceAction925__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tclassidnode1 /* var tclassidnode1: nullable Object */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_tclassidnode1 = var_nodearraylist1;
-var_node_list = var_tclassidnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction925> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction925#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction925__action(val* self, val* p0) {
-parser__ReduceAction925__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction926#action for (self: ReduceAction926, Parser) */
-void parser__ReduceAction926__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-long var2 /* : Int */;
-long var3 /* : 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_nodearraylist1 = var1;
-var2 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction926> */
-var3 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var2) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var3, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction926#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction926__action(val* self, val* p0) {
-parser__ReduceAction926__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction928#action for (self: ReduceAction928, Parser) */
-void parser__ReduceAction928__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var2 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_listnode2 /* var listnode2: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var4 /* : Array[Object] */;
-val* var5 /* : ADoc */;
-val* var_pdocnode1 /* var pdocnode1: nullable ADoc */;
-long var6 /* : Int */;
-long var7 /* : 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_nodearraylist1 = var1;
-var2 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Object]>*/;
-CHECK_NEW_array__Array(var2);
-var_listnode3 = var2;
-var_listnode2 = var_nodearraylist1;
-/* <var_listnode2:nullable Object> isa Array[Object] */
-cltype = type_array__Arraykernel__Object.color;
-idtype = type_array__Arraykernel__Object.id;
-if(var_listnode2 == NULL) {
-var3 = 0;
-} else {
-if(cltype >= var_listnode2->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_listnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30607);
-exit(1);
-}
-var4 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode2) /* concat on <self:ReduceAction928>*/;
-var_listnode3 = var4;
-var5 = NEW_parser_nodes__ADoc(&type_parser_nodes__ADoc);
-((void (*)(val*, val*))(var5->class->vft[COLOR_parser_prod__ADoc__init_adoc]))(var5, var_listnode3) /* init_adoc on <var5:ADoc>*/;
-CHECK_NEW_parser_nodes__ADoc(var5);
-var_pdocnode1 = var5;
-var_node_list = var_pdocnode1;
-var6 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction928> */
-var7 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var6) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var7, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction928#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction928__action(val* self, val* p0) {
-parser__ReduceAction928__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction929#action for (self: ReduceAction929, Parser) */
-void parser__ReduceAction929__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var3 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_listnode2 /* var listnode2: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var5 /* : Array[Object] */;
-val* var6 /* : ADoc */;
-val* var_pdocnode1 /* var pdocnode1: nullable ADoc */;
-long var7 /* : Int */;
-long var8 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var3 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[Object]>*/;
-CHECK_NEW_array__Array(var3);
-var_listnode3 = var3;
-var_listnode2 = var_nodearraylist2;
-/* <var_listnode2:nullable Object> isa Array[Object] */
-cltype = type_array__Arraykernel__Object.color;
-idtype = type_array__Arraykernel__Object.id;
-if(var_listnode2 == NULL) {
-var4 = 0;
-} else {
-if(cltype >= var_listnode2->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_listnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30625);
-exit(1);
-}
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode2) /* concat on <self:ReduceAction929>*/;
-var_listnode3 = var5;
-var6 = NEW_parser_nodes__ADoc(&type_parser_nodes__ADoc);
-((void (*)(val*, val*))(var6->class->vft[COLOR_parser_prod__ADoc__init_adoc]))(var6, var_listnode3) /* init_adoc on <var6:ADoc>*/;
-CHECK_NEW_parser_nodes__ADoc(var6);
-var_pdocnode1 = var6;
-var_node_list = var_pdocnode1;
-var7 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction929> */
-var8 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var7) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var8, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction929#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction929__action(val* self, val* p0) {
-parser__ReduceAction929__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction931#action for (self: ReduceAction931, Parser) */
-void parser__ReduceAction931__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 /* : null */;
-long var2 /* : Int */;
-long var3 /* : Int */;
-var_p = p0;
-var = NULL;
-var_node_list = var;
-var1 = NULL;
-var_node_list = var1;
-var2 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction931> */
-var3 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var2) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var3, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction931#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction931__action(val* self, val* p0) {
-parser__ReduceAction931__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction932#action for (self: ReduceAction932, Parser) */
-void parser__ReduceAction932__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pdocnode1 /* var pdocnode1: nullable Object */;
-long var2 /* : Int */;
-long var3 /* : 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_nodearraylist1 = var1;
-var_pdocnode1 = var_nodearraylist1;
-var_node_list = var_pdocnode1;
-var2 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction932> */
-var3 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var2) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var3, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction932#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction932__action(val* self, val* p0) {
-parser__ReduceAction932__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction933#action for (self: ReduceAction933, Parser) */
-void parser__ReduceAction933__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-long var3 /* : Int */;
-long var4 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var3 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction933> */
-var4 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var3) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var4, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction933#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction933__action(val* self, val* p0) {
-parser__ReduceAction933__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction934#action for (self: ReduceAction934, Parser) */
-void parser__ReduceAction934__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-long var4 /* : Int */;
-long var5 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction934> */
-var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction934#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction934__action(val* self, val* p0) {
-parser__ReduceAction934__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction1317#action for (self: ReduceAction1317, Parser) */
-void parser__ReduceAction1317__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_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwissetnode2 /* var tkwissetnode2: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var_pexprnode3 /* var pexprnode3: nullable Object */;
-short int var5 /* : Bool */;
-int cltype6;
-int idtype7;
-val* var_tattridnode4 /* var tattridnode4: nullable Object */;
-short int var8 /* : Bool */;
-int cltype9;
-int idtype10;
-val* var11 /* : AIssetAttrExpr */;
-val* var_pexprnode1 /* var pexprnode1: nullable AIssetAttrExpr */;
-long var12 /* : Int */;
-long var13 /* : 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_nodearraylist3 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist2 = var2;
-var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var3;
-var_tkwissetnode2 = var_nodearraylist1;
-/* <var_tkwissetnode2:nullable Object> isa nullable TKwisset */
-cltype = type_nullable_parser_nodes__TKwisset.color;
-idtype = type_nullable_parser_nodes__TKwisset.id;
-if(var_tkwissetnode2 == NULL) {
-var4 = 1;
-} else {
-if(cltype >= var_tkwissetnode2->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_tkwissetnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30684);
-exit(1);
-}
-var_pexprnode3 = var_nodearraylist2;
-/* <var_pexprnode3:nullable Object> isa nullable AExpr */
-cltype6 = type_nullable_parser_nodes__AExpr.color;
-idtype7 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode3 == NULL) {
-var5 = 1;
-} else {
-if(cltype6 >= var_pexprnode3->type->table_size) {
-var5 = 0;
-} else {
-var5 = var_pexprnode3->type->type_table[cltype6] == idtype7;
-}
-}
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30686);
-exit(1);
-}
-var_tattridnode4 = var_nodearraylist3;
-/* <var_tattridnode4:nullable Object> isa nullable TAttrid */
-cltype9 = type_nullable_parser_nodes__TAttrid.color;
-idtype10 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode4 == NULL) {
-var8 = 1;
-} else {
-if(cltype9 >= var_tattridnode4->type->table_size) {
-var8 = 0;
-} else {
-var8 = var_tattridnode4->type->type_table[cltype9] == idtype10;
-}
-}
-if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30688);
-exit(1);
-}
-var11 = NEW_parser_nodes__AIssetAttrExpr(&type_parser_nodes__AIssetAttrExpr);
-((void (*)(val*, val*, val*, val*))(var11->class->vft[COLOR_parser_prod__AIssetAttrExpr__init_aissetattrexpr]))(var11, var_tkwissetnode2, var_pexprnode3, var_tattridnode4) /* init_aissetattrexpr on <var11:AIssetAttrExpr>*/;
-CHECK_NEW_parser_nodes__AIssetAttrExpr(var11);
-var_pexprnode1 = var11;
-var_node_list = var_pexprnode1;
-var12 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1317> */
-var13 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var12) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var13, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction1317#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1317__action(val* self, val* p0) {
-parser__ReduceAction1317__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction1318#action for (self: ReduceAction1318, Parser) */
-void parser__ReduceAction1318__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* var2 /* : nullable Object */;
-val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
-val* var3 /* : nullable Object */;
-val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var4 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_tkwissetnode2 /* var tkwissetnode2: nullable Object */;
-short int var5 /* : Bool */;
-int cltype;
-int idtype;
-val* var_pexprnode3 /* var pexprnode3: nullable Object */;
-short int var6 /* : Bool */;
-int cltype7;
-int idtype8;
-val* var_tattridnode4 /* var tattridnode4: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : AIssetAttrExpr */;
-val* var_pexprnode1 /* var pexprnode1: nullable AIssetAttrExpr */;
-long var13 /* : Int */;
-long var14 /* : 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_tkwissetnode2 = var_nodearraylist1;
-/* <var_tkwissetnode2:nullable Object> isa nullable TKwisset */
-cltype = type_nullable_parser_nodes__TKwisset.color;
-idtype = type_nullable_parser_nodes__TKwisset.id;
-if(var_tkwissetnode2 == NULL) {
-var5 = 1;
-} else {
-if(cltype >= var_tkwissetnode2->type->table_size) {
-var5 = 0;
-} else {
-var5 = var_tkwissetnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30708);
-exit(1);
-}
-var_pexprnode3 = var_nodearraylist2;
-/* <var_pexprnode3:nullable Object> isa nullable AExpr */
-cltype7 = type_nullable_parser_nodes__AExpr.color;
-idtype8 = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode3 == NULL) {
-var6 = 1;
-} else {
-if(cltype7 >= var_pexprnode3->type->table_size) {
-var6 = 0;
-} else {
-var6 = var_pexprnode3->type->type_table[cltype7] == idtype8;
-}
-}
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30710);
-exit(1);
-}
-var_tattridnode4 = var_nodearraylist4;
-/* <var_tattridnode4:nullable Object> isa nullable TAttrid */
-cltype10 = type_nullable_parser_nodes__TAttrid.color;
-idtype11 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode4 == NULL) {
-var9 = 1;
-} else {
-if(cltype10 >= var_tattridnode4->type->table_size) {
-var9 = 0;
-} else {
-var9 = var_tattridnode4->type->type_table[cltype10] == idtype11;
-}
-}
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30712);
-exit(1);
-}
-var12 = NEW_parser_nodes__AIssetAttrExpr(&type_parser_nodes__AIssetAttrExpr);
-((void (*)(val*, val*, val*, val*))(var12->class->vft[COLOR_parser_prod__AIssetAttrExpr__init_aissetattrexpr]))(var12, var_tkwissetnode2, var_pexprnode3, var_tattridnode4) /* init_aissetattrexpr on <var12:AIssetAttrExpr>*/;
-CHECK_NEW_parser_nodes__AIssetAttrExpr(var12);
-var_pexprnode1 = var12;
-var_node_list = var_pexprnode1;
-var13 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1318> */
-var14 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var13) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var14, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction1318#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1318__action(val* self, val* p0) {
-parser__ReduceAction1318__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction1321#action for (self: ReduceAction1321, Parser) */
-void parser__ReduceAction1321__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var_pexprnode2 /* var pexprnode2: nullable Object */;
-short int var3 /* : Bool */;
-int cltype;
-int idtype;
-val* var_tattridnode3 /* var tattridnode3: nullable Object */;
-short int var4 /* : Bool */;
-int cltype5;
-int idtype6;
-val* var7 /* : AAttrExpr */;
-val* var_pexprnode1 /* var pexprnode1: nullable AAttrExpr */;
-long var8 /* : Int */;
-long var9 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var_pexprnode2 = var_nodearraylist1;
-/* <var_pexprnode2:nullable Object> isa nullable AExpr */
-cltype = type_nullable_parser_nodes__AExpr.color;
-idtype = type_nullable_parser_nodes__AExpr.id;
-if(var_pexprnode2 == NULL) {
-var3 = 1;
-} else {
-if(cltype >= var_pexprnode2->type->table_size) {
-var3 = 0;
-} else {
-var3 = var_pexprnode2->type->type_table[cltype] == idtype;
-}
-}
-if (!var3) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30730);
-exit(1);
-}
-var_tattridnode3 = var_nodearraylist2;
-/* <var_tattridnode3:nullable Object> isa nullable TAttrid */
-cltype5 = type_nullable_parser_nodes__TAttrid.color;
-idtype6 = type_nullable_parser_nodes__TAttrid.id;
-if(var_tattridnode3 == NULL) {
-var4 = 1;
-} else {
-if(cltype5 >= var_tattridnode3->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_tattridnode3->type->type_table[cltype5] == idtype6;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30732);
-exit(1);
-}
-var7 = NEW_parser_nodes__AAttrExpr(&type_parser_nodes__AAttrExpr);
-((void (*)(val*, val*, val*))(var7->class->vft[COLOR_parser_prod__AAttrExpr__init_aattrexpr]))(var7, var_pexprnode2, var_tattridnode3) /* init_aattrexpr on <var7:AAttrExpr>*/;
-CHECK_NEW_parser_nodes__AAttrExpr(var7);
-var_pexprnode1 = var7;
-var_node_list = var_pexprnode1;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1321> */
-var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction1321#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1321__action(val* self, val* p0) {
-parser__ReduceAction1321__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction1322#action for (self: ReduceAction1322, Parser) */
-void parser__ReduceAction1322__action(val* self, val* p0) {
+/* method parser#ReduceAction1228#action for (self: ReduceAction1228, Parser) */
+void parser__ReduceAction1228__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -2593,7 +45,8 @@ var4 = var_pexprnode2->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30750);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29152);
 exit(1);
 }
 var_tattridnode3 = var_nodearraylist3;
@@ -2610,7 +63,8 @@ var5 = var_tattridnode3->type->type_table[cltype6] == idtype7;
 }
 }
 if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30752);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29154);
 exit(1);
 }
 var8 = NEW_parser_nodes__AAttrExpr(&type_parser_nodes__AAttrExpr);
@@ -2618,18 +72,18 @@ var8 = NEW_parser_nodes__AAttrExpr(&type_parser_nodes__AAttrExpr);
 CHECK_NEW_parser_nodes__AAttrExpr(var8);
 var_pexprnode1 = var8;
 var_node_list = var_pexprnode1;
-var9 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1322> */
+var9 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1228> */
 var10 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var9) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var10, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1322#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1322__action(val* self, val* p0) {
-parser__ReduceAction1322__action(self, p0);
+/* method parser#ReduceAction1228#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1228__action(val* self, val* p0) {
+parser__ReduceAction1228__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1325#action for (self: ReduceAction1325, Parser) */
-void parser__ReduceAction1325__action(val* self, val* p0) {
+/* method parser#ReduceAction1231#action for (self: ReduceAction1231, Parser) */
+void parser__ReduceAction1231__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -2639,24 +93,22 @@ val* var2 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
 val* var3 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var4 /* : Array[Object] */;
-val* var_listnode5 /* var listnode5: Array[Object] */;
 val* var_pexprnode2 /* var pexprnode2: nullable Object */;
-short int var5 /* : Bool */;
+short int var4 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tidnode3 /* var tidnode3: nullable Object */;
-short int var6 /* : Bool */;
-int cltype7;
-int idtype8;
+short int var5 /* : Bool */;
+int cltype6;
+int idtype7;
 val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
-short int var9 /* : Bool */;
-int cltype10;
-int idtype11;
-val* var12 /* : ACallExpr */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var11 /* : ACallExpr */;
 val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var12 /* : Int */;
 long var13 /* : Int */;
-long var14 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
@@ -2666,78 +118,77 @@ var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /
 var_nodearraylist2 = var2;
 var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
 var_nodearraylist1 = var3;
-var4 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var4->class->vft[COLOR_array__Array__init]))(var4) /* init on <var4:Array[Object]>*/;
-CHECK_NEW_array__Array(var4);
-var_listnode5 = var4;
 var_pexprnode2 = var_nodearraylist1;
 /* <var_pexprnode2:nullable Object> isa nullable AExpr */
 cltype = type_nullable_parser_nodes__AExpr.color;
 idtype = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode2 == NULL) {
-var5 = 1;
+var4 = 1;
 } else {
 if(cltype >= var_pexprnode2->type->table_size) {
-var5 = 0;
+var4 = 0;
 } else {
-var5 = var_pexprnode2->type->type_table[cltype] == idtype;
+var4 = var_pexprnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30771);
+if (!var4) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29172);
 exit(1);
 }
 var_tidnode3 = var_nodearraylist2;
 /* <var_tidnode3:nullable Object> isa nullable TId */
-cltype7 = type_nullable_parser_nodes__TId.color;
-idtype8 = type_nullable_parser_nodes__TId.id;
+cltype6 = type_nullable_parser_nodes__TId.color;
+idtype7 = type_nullable_parser_nodes__TId.id;
 if(var_tidnode3 == NULL) {
-var6 = 1;
+var5 = 1;
 } else {
-if(cltype7 >= var_tidnode3->type->table_size) {
-var6 = 0;
+if(cltype6 >= var_tidnode3->type->table_size) {
+var5 = 0;
 } else {
-var6 = var_tidnode3->type->type_table[cltype7] == idtype8;
+var5 = var_tidnode3->type->type_table[cltype6] == idtype7;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30773);
+if (!var5) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29174);
 exit(1);
 }
 var_pexprsnode4 = var_nodearraylist3;
 /* <var_pexprsnode4:nullable Object> isa nullable AExprs */
-cltype10 = type_nullable_parser_nodes__AExprs.color;
-idtype11 = type_nullable_parser_nodes__AExprs.id;
+cltype9 = type_nullable_parser_nodes__AExprs.color;
+idtype10 = type_nullable_parser_nodes__AExprs.id;
 if(var_pexprsnode4 == NULL) {
-var9 = 1;
+var8 = 1;
 } else {
-if(cltype10 >= var_pexprsnode4->type->table_size) {
-var9 = 0;
+if(cltype9 >= var_pexprsnode4->type->table_size) {
+var8 = 0;
 } else {
-var9 = var_pexprsnode4->type->type_table[cltype10] == idtype11;
+var8 = var_pexprsnode4->type->type_table[cltype9] == idtype10;
 }
 }
-if (!var9) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30775);
+if (!var8) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29176);
 exit(1);
 }
-var12 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
-((void (*)(val*, val*, val*, val*, val*))(var12->class->vft[COLOR_parser_prod__ACallExpr__init_acallexpr]))(var12, var_pexprnode2, var_tidnode3, var_pexprsnode4, var_listnode5) /* init_acallexpr on <var12:ACallExpr>*/;
-CHECK_NEW_parser_nodes__ACallExpr(var12);
-var_pexprnode1 = var12;
+var11 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+((void (*)(val*, val*, val*, val*))(var11->class->vft[COLOR_parser_prod__ACallExpr__init_acallexpr]))(var11, var_pexprnode2, var_tidnode3, var_pexprsnode4) /* init_acallexpr on <var11:ACallExpr>*/;
+CHECK_NEW_parser_nodes__ACallExpr(var11);
+var_pexprnode1 = var11;
 var_node_list = var_pexprnode1;
-var13 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1325> */
-var14 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var13) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var14, var_node_list) /* push on <var_p:Parser>*/;
+var12 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1231> */
+var13 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var12) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var13, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1325#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1325__action(val* self, val* p0) {
-parser__ReduceAction1325__action(self, p0);
+/* method parser#ReduceAction1231#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1231__action(val* self, val* p0) {
+parser__ReduceAction1231__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1326#action for (self: ReduceAction1326, Parser) */
-void parser__ReduceAction1326__action(val* self, val* p0) {
+/* method parser#ReduceAction1232#action for (self: ReduceAction1232, Parser) */
+void parser__ReduceAction1232__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -2749,24 +200,22 @@ val* var3 /* : nullable Object */;
 val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
 val* var4 /* : nullable Object */;
 val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var5 /* : Array[Object] */;
-val* var_listnode5 /* var listnode5: Array[Object] */;
 val* var_pexprnode2 /* var pexprnode2: nullable Object */;
-short int var6 /* : Bool */;
+short int var5 /* : Bool */;
 int cltype;
 int idtype;
 val* var_tidnode3 /* var tidnode3: nullable Object */;
-short int var7 /* : Bool */;
-int cltype8;
-int idtype9;
+short int var6 /* : Bool */;
+int cltype7;
+int idtype8;
 val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
-short int var10 /* : Bool */;
-int cltype11;
-int idtype12;
-val* var13 /* : ACallExpr */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var12 /* : ACallExpr */;
 val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var13 /* : Int */;
 long var14 /* : Int */;
-long var15 /* : Int */;
 var_p = p0;
 var = NULL;
 var_node_list = var;
@@ -2778,78 +227,77 @@ var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /
 var_nodearraylist2 = var3;
 var4 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
 var_nodearraylist1 = var4;
-var5 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var5->class->vft[COLOR_array__Array__init]))(var5) /* init on <var5:Array[Object]>*/;
-CHECK_NEW_array__Array(var5);
-var_listnode5 = var5;
 var_pexprnode2 = var_nodearraylist1;
 /* <var_pexprnode2:nullable Object> isa nullable AExpr */
 cltype = type_nullable_parser_nodes__AExpr.color;
 idtype = type_nullable_parser_nodes__AExpr.id;
 if(var_pexprnode2 == NULL) {
-var6 = 1;
+var5 = 1;
 } else {
 if(cltype >= var_pexprnode2->type->table_size) {
-var6 = 0;
+var5 = 0;
 } else {
-var6 = var_pexprnode2->type->type_table[cltype] == idtype;
+var5 = var_pexprnode2->type->type_table[cltype] == idtype;
 }
 }
-if (!var6) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30797);
+if (!var5) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29196);
 exit(1);
 }
 var_tidnode3 = var_nodearraylist3;
 /* <var_tidnode3:nullable Object> isa nullable TId */
-cltype8 = type_nullable_parser_nodes__TId.color;
-idtype9 = type_nullable_parser_nodes__TId.id;
+cltype7 = type_nullable_parser_nodes__TId.color;
+idtype8 = type_nullable_parser_nodes__TId.id;
 if(var_tidnode3 == NULL) {
-var7 = 1;
+var6 = 1;
 } else {
-if(cltype8 >= var_tidnode3->type->table_size) {
-var7 = 0;
+if(cltype7 >= var_tidnode3->type->table_size) {
+var6 = 0;
 } else {
-var7 = var_tidnode3->type->type_table[cltype8] == idtype9;
+var6 = var_tidnode3->type->type_table[cltype7] == idtype8;
 }
 }
-if (!var7) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30799);
+if (!var6) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29198);
 exit(1);
 }
 var_pexprsnode4 = var_nodearraylist4;
 /* <var_pexprsnode4:nullable Object> isa nullable AExprs */
-cltype11 = type_nullable_parser_nodes__AExprs.color;
-idtype12 = type_nullable_parser_nodes__AExprs.id;
+cltype10 = type_nullable_parser_nodes__AExprs.color;
+idtype11 = type_nullable_parser_nodes__AExprs.id;
 if(var_pexprsnode4 == NULL) {
-var10 = 1;
+var9 = 1;
 } else {
-if(cltype11 >= var_pexprsnode4->type->table_size) {
-var10 = 0;
+if(cltype10 >= var_pexprsnode4->type->table_size) {
+var9 = 0;
 } else {
-var10 = var_pexprsnode4->type->type_table[cltype11] == idtype12;
+var9 = var_pexprsnode4->type->type_table[cltype10] == idtype11;
 }
 }
-if (!var10) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30801);
+if (!var9) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29200);
 exit(1);
 }
-var13 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
-((void (*)(val*, val*, val*, val*, val*))(var13->class->vft[COLOR_parser_prod__ACallExpr__init_acallexpr]))(var13, var_pexprnode2, var_tidnode3, var_pexprsnode4, var_listnode5) /* init_acallexpr on <var13:ACallExpr>*/;
-CHECK_NEW_parser_nodes__ACallExpr(var13);
-var_pexprnode1 = var13;
+var12 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+((void (*)(val*, val*, val*, val*))(var12->class->vft[COLOR_parser_prod__ACallExpr__init_acallexpr]))(var12, var_pexprnode2, var_tidnode3, var_pexprsnode4) /* init_acallexpr on <var12:ACallExpr>*/;
+CHECK_NEW_parser_nodes__ACallExpr(var12);
+var_pexprnode1 = var12;
 var_node_list = var_pexprnode1;
-var14 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1326> */
-var15 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var14) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var15, var_node_list) /* push on <var_p:Parser>*/;
+var13 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1232> */
+var14 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var13) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var14, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1326#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1326__action(val* self, val* p0) {
-parser__ReduceAction1326__action(self, p0);
+/* method parser#ReduceAction1232#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1232__action(val* self, val* p0) {
+parser__ReduceAction1232__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1333#action for (self: ReduceAction1333, Parser) */
-void parser__ReduceAction1333__action(val* self, val* p0) {
+/* method parser#ReduceAction1239#action for (self: ReduceAction1239, Parser) */
+void parser__ReduceAction1239__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -2898,7 +346,8 @@ var4 = var_pexprnode2->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30821);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29219);
 exit(1);
 }
 var_tkwinitnode3 = var_nodearraylist2;
@@ -2915,7 +364,8 @@ var5 = var_tkwinitnode3->type->type_table[cltype6] == idtype7;
 }
 }
 if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30823);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29221);
 exit(1);
 }
 var_pexprsnode4 = var_nodearraylist3;
@@ -2932,7 +382,8 @@ var8 = var_pexprsnode4->type->type_table[cltype9] == idtype10;
 }
 }
 if (!var8) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30825);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29223);
 exit(1);
 }
 var11 = NEW_parser_nodes__AInitExpr(&type_parser_nodes__AInitExpr);
@@ -2940,18 +391,18 @@ var11 = NEW_parser_nodes__AInitExpr(&type_parser_nodes__AInitExpr);
 CHECK_NEW_parser_nodes__AInitExpr(var11);
 var_pexprnode1 = var11;
 var_node_list = var_pexprnode1;
-var12 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1333> */
+var12 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1239> */
 var13 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var12) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var13, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1333#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1333__action(val* self, val* p0) {
-parser__ReduceAction1333__action(self, p0);
+/* method parser#ReduceAction1239#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1239__action(val* self, val* p0) {
+parser__ReduceAction1239__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1357#action for (self: ReduceAction1357, Parser) */
-void parser__ReduceAction1357__action(val* self, val* p0) {
+/* method parser#ReduceAction1263#action for (self: ReduceAction1263, Parser) */
+void parser__ReduceAction1263__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -2975,18 +426,18 @@ var3 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /
 var_nodearraylist1 = var3;
 var_pexprnode1 = var_nodearraylist1;
 var_node_list = var_pexprnode1;
-var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1357> */
+var4 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1263> */
 var5 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var4) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var5, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1357#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1357__action(val* self, val* p0) {
-parser__ReduceAction1357__action(self, p0);
+/* method parser#ReduceAction1263#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1263__action(val* self, val* p0) {
+parser__ReduceAction1263__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1358#action for (self: ReduceAction1358, Parser) */
-void parser__ReduceAction1358__action(val* self, val* p0) {
+/* method parser#ReduceAction1264#action for (self: ReduceAction1264, Parser) */
+void parser__ReduceAction1264__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3002,18 +453,18 @@ var1 = NEW_parser_nodes__AImplicitSelfExpr(&type_parser_nodes__AImplicitSelfExpr
 CHECK_NEW_parser_nodes__AImplicitSelfExpr(var1);
 var_pexprnode1 = var1;
 var_node_list = var_pexprnode1;
-var2 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1358> */
+var2 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1264> */
 var3 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var2) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var3, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1358#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1358__action(val* self, val* p0) {
-parser__ReduceAction1358__action(self, p0);
+/* method parser#ReduceAction1264#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1264__action(val* self, val* p0) {
+parser__ReduceAction1264__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1772#action for (self: ReduceAction1772, Parser) */
-void parser__ReduceAction1772__action(val* self, val* p0) {
+/* method parser#ReduceAction1538#action for (self: ReduceAction1538, Parser) */
+void parser__ReduceAction1538__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3047,18 +498,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1772> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1538> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1772#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1772__action(val* self, val* p0) {
-parser__ReduceAction1772__action(self, p0);
+/* method parser#ReduceAction1538#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1538__action(val* self, val* p0) {
+parser__ReduceAction1538__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1773#action for (self: ReduceAction1773, Parser) */
-void parser__ReduceAction1773__action(val* self, val* p0) {
+/* method parser#ReduceAction1539#action for (self: ReduceAction1539, Parser) */
+void parser__ReduceAction1539__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3103,11 +554,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30882);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29280);
 exit(1);
 }
 var_pimportnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1773>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1539>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pimportnode2 == NULL) {
@@ -3120,18 +572,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1773> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1539> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1773#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1773__action(val* self, val* p0) {
-parser__ReduceAction1773__action(self, p0);
+/* method parser#ReduceAction1539#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1539__action(val* self, val* p0) {
+parser__ReduceAction1539__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1774#action for (self: ReduceAction1774, Parser) */
-void parser__ReduceAction1774__action(val* self, val* p0) {
+/* method parser#ReduceAction1540#action for (self: ReduceAction1540, Parser) */
+void parser__ReduceAction1540__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3165,18 +617,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1774> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1540> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1774#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1774__action(val* self, val* p0) {
-parser__ReduceAction1774__action(self, p0);
+/* method parser#ReduceAction1540#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1540__action(val* self, val* p0) {
+parser__ReduceAction1540__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1775#action for (self: ReduceAction1775, Parser) */
-void parser__ReduceAction1775__action(val* self, val* p0) {
+/* method parser#ReduceAction1541#action for (self: ReduceAction1541, Parser) */
+void parser__ReduceAction1541__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3221,11 +673,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30916);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29314);
 exit(1);
 }
 var_pexterncodeblocknode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1775>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1541>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pexterncodeblocknode2 == NULL) {
@@ -3238,18 +691,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1775> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1541> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1775#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1775__action(val* self, val* p0) {
-parser__ReduceAction1775__action(self, p0);
+/* method parser#ReduceAction1541#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1541__action(val* self, val* p0) {
+parser__ReduceAction1541__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1776#action for (self: ReduceAction1776, Parser) */
-void parser__ReduceAction1776__action(val* self, val* p0) {
+/* method parser#ReduceAction1542#action for (self: ReduceAction1542, Parser) */
+void parser__ReduceAction1542__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3283,18 +736,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1776> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1542> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1776#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1776__action(val* self, val* p0) {
-parser__ReduceAction1776__action(self, p0);
+/* method parser#ReduceAction1542#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1542__action(val* self, val* p0) {
+parser__ReduceAction1542__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1777#action for (self: ReduceAction1777, Parser) */
-void parser__ReduceAction1777__action(val* self, val* p0) {
+/* method parser#ReduceAction1543#action for (self: ReduceAction1543, Parser) */
+void parser__ReduceAction1543__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3339,11 +792,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30950);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29348);
 exit(1);
 }
 var_pclassdefnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1777>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1543>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pclassdefnode2 == NULL) {
@@ -3356,18 +810,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1777> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1543> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1777#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1777__action(val* self, val* p0) {
-parser__ReduceAction1777__action(self, p0);
+/* method parser#ReduceAction1543#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1543__action(val* self, val* p0) {
+parser__ReduceAction1543__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1778#action for (self: ReduceAction1778, Parser) */
-void parser__ReduceAction1778__action(val* self, val* p0) {
+/* method parser#ReduceAction1544#action for (self: ReduceAction1544, Parser) */
+void parser__ReduceAction1544__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3401,18 +855,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1778> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1544> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1778#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1778__action(val* self, val* p0) {
-parser__ReduceAction1778__action(self, p0);
+/* method parser#ReduceAction1544#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1544__action(val* self, val* p0) {
+parser__ReduceAction1544__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1779#action for (self: ReduceAction1779, Parser) */
-void parser__ReduceAction1779__action(val* self, val* p0) {
+/* method parser#ReduceAction1545#action for (self: ReduceAction1545, Parser) */
+void parser__ReduceAction1545__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3457,11 +911,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 30984);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29382);
 exit(1);
 }
 var_ppropdefnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1779>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1545>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_ppropdefnode2 == NULL) {
@@ -3474,18 +929,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1779> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1545> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1779#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1779__action(val* self, val* p0) {
-parser__ReduceAction1779__action(self, p0);
+/* method parser#ReduceAction1545#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1545__action(val* self, val* p0) {
+parser__ReduceAction1545__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1780#action for (self: ReduceAction1780, Parser) */
-void parser__ReduceAction1780__action(val* self, val* p0) {
+/* method parser#ReduceAction1546#action for (self: ReduceAction1546, Parser) */
+void parser__ReduceAction1546__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3519,18 +974,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1780> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1546> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1780#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1780__action(val* self, val* p0) {
-parser__ReduceAction1780__action(self, p0);
+/* method parser#ReduceAction1546#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1546__action(val* self, val* p0) {
+parser__ReduceAction1546__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1781#action for (self: ReduceAction1781, Parser) */
-void parser__ReduceAction1781__action(val* self, val* p0) {
+/* method parser#ReduceAction1547#action for (self: ReduceAction1547, Parser) */
+void parser__ReduceAction1547__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3575,11 +1030,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31018);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29416);
 exit(1);
 }
 var_psuperclassnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1781>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1547>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_psuperclassnode2 == NULL) {
@@ -3592,18 +1048,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1781> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1547> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1781#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1781__action(val* self, val* p0) {
-parser__ReduceAction1781__action(self, p0);
+/* method parser#ReduceAction1547#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1547__action(val* self, val* p0) {
+parser__ReduceAction1547__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1784#action for (self: ReduceAction1784, Parser) */
-void parser__ReduceAction1784__action(val* self, val* p0) {
+/* method parser#ReduceAction1550#action for (self: ReduceAction1550, Parser) */
+void parser__ReduceAction1550__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3637,18 +1093,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1784> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1550> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1784#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1784__action(val* self, val* p0) {
-parser__ReduceAction1784__action(self, p0);
+/* method parser#ReduceAction1550#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1550__action(val* self, val* p0) {
+parser__ReduceAction1550__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1785#action for (self: ReduceAction1785, Parser) */
-void parser__ReduceAction1785__action(val* self, val* p0) {
+/* method parser#ReduceAction1551#action for (self: ReduceAction1551, Parser) */
+void parser__ReduceAction1551__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3693,11 +1149,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31052);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29450);
 exit(1);
 }
 var_pformaldefnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1785>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1551>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pformaldefnode2 == NULL) {
@@ -3710,18 +1167,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1785> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1551> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1785#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1785__action(val* self, val* p0) {
-parser__ReduceAction1785__action(self, p0);
+/* method parser#ReduceAction1551#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1551__action(val* self, val* p0) {
+parser__ReduceAction1551__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1786#action for (self: ReduceAction1786, Parser) */
-void parser__ReduceAction1786__action(val* self, val* p0) {
+/* method parser#ReduceAction1552#action for (self: ReduceAction1552, Parser) */
+void parser__ReduceAction1552__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3755,18 +1212,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1786> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1552> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1786#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1786__action(val* self, val* p0) {
-parser__ReduceAction1786__action(self, p0);
+/* method parser#ReduceAction1552#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1552__action(val* self, val* p0) {
+parser__ReduceAction1552__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1787#action for (self: ReduceAction1787, Parser) */
-void parser__ReduceAction1787__action(val* self, val* p0) {
+/* method parser#ReduceAction1553#action for (self: ReduceAction1553, Parser) */
+void parser__ReduceAction1553__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3811,11 +1268,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31086);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29484);
 exit(1);
 }
 var_pparamnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1787>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1553>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pparamnode2 == NULL) {
@@ -3828,136 +1286,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1787> */
-var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction1787#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1787__action(val* self, val* p0) {
-parser__ReduceAction1787__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction1788#action for (self: ReduceAction1788, Parser) */
-void parser__ReduceAction1788__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var2 /* : Array[Object] */;
-val* var_listnode2 /* var listnode2: Array[Object] */;
-val* var_pclosuredeclnode1 /* var pclosuredeclnode1: nullable Object */;
-val* var3 /* : null */;
-short int var4 /* : Bool */;
-long var5 /* : Int */;
-long var6 /* : 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_nodearraylist1 = var1;
-var2 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Object]>*/;
-CHECK_NEW_array__Array(var2);
-var_listnode2 = var2;
-var_pclosuredeclnode1 = var_nodearraylist1;
-var3 = NULL;
-if (var_pclosuredeclnode1 == NULL) {
-var4 = 0; /* is null */
-} else {
-var4 = 1; /* arg is null and recv is not */
-}
-if (var4){
-((void (*)(val*, val*))(var_listnode2->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_listnode2, var_pclosuredeclnode1) /* add on <var_listnode2:Array[Object]>*/;
-} else {
-}
-var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1788> */
-var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
-((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
-RET_LABEL:;
-}
-/* method parser#ReduceAction1788#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1788__action(val* self, val* p0) {
-parser__ReduceAction1788__action(self, p0);
-RET_LABEL:;
-}
-/* method parser#ReduceAction1789#action for (self: ReduceAction1789, Parser) */
-void parser__ReduceAction1789__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_nodearraylist2 /* var nodearraylist2: nullable Object */;
-val* var2 /* : nullable Object */;
-val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
-val* var3 /* : Array[Object] */;
-val* var_listnode3 /* var listnode3: Array[Object] */;
-val* var_listnode1 /* var listnode1: nullable Object */;
-short int var4 /* : Bool */;
-int cltype;
-int idtype;
-val* var_pclosuredeclnode2 /* var pclosuredeclnode2: nullable Object */;
-val* var5 /* : Array[Object] */;
-val* var6 /* : null */;
-short int var7 /* : Bool */;
-long var8 /* : Int */;
-long var9 /* : 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_nodearraylist2 = var1;
-var2 = ((val* (*)(val*))(var_p->class->vft[COLOR_parser__Parser__pop]))(var_p) /* pop on <var_p:Parser>*/;
-var_nodearraylist1 = var2;
-var3 = NEW_array__Array(&type_array__Arraykernel__Object);
-((void (*)(val*))(var3->class->vft[COLOR_array__Array__init]))(var3) /* init on <var3:Array[Object]>*/;
-CHECK_NEW_array__Array(var3);
-var_listnode3 = var3;
-var_listnode1 = var_nodearraylist1;
-/* <var_listnode1:nullable Object> isa Array[Object] */
-cltype = type_array__Arraykernel__Object.color;
-idtype = type_array__Arraykernel__Object.id;
-if(var_listnode1 == NULL) {
-var4 = 0;
-} else {
-if(cltype >= var_listnode1->type->table_size) {
-var4 = 0;
-} else {
-var4 = var_listnode1->type->type_table[cltype] == idtype;
-}
-}
-if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31120);
-exit(1);
-}
-var_pclosuredeclnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1789>*/;
-var_listnode3 = var5;
-var6 = NULL;
-if (var_pclosuredeclnode2 == NULL) {
-var7 = 0; /* is null */
-} else {
-var7 = 1; /* arg is null and recv is not */
-}
-if (var7){
-((void (*)(val*, val*))(var_listnode3->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_listnode3, var_pclosuredeclnode2) /* add on <var_listnode3:Array[Object]>*/;
-} else {
-}
-var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1789> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1553> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1789#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1789__action(val* self, val* p0) {
-parser__ReduceAction1789__action(self, p0);
+/* method parser#ReduceAction1553#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1553__action(val* self, val* p0) {
+parser__ReduceAction1553__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1790#action for (self: ReduceAction1790, Parser) */
-void parser__ReduceAction1790__action(val* self, val* p0) {
+/* method parser#ReduceAction1554#action for (self: ReduceAction1554, Parser) */
+void parser__ReduceAction1554__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -3991,18 +1331,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1790> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1554> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1790#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1790__action(val* self, val* p0) {
-parser__ReduceAction1790__action(self, p0);
+/* method parser#ReduceAction1554#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1554__action(val* self, val* p0) {
+parser__ReduceAction1554__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1791#action for (self: ReduceAction1791, Parser) */
-void parser__ReduceAction1791__action(val* self, val* p0) {
+/* method parser#ReduceAction1555#action for (self: ReduceAction1555, Parser) */
+void parser__ReduceAction1555__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4047,11 +1387,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31154);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29518);
 exit(1);
 }
 var_pexterncallnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1791>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1555>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pexterncallnode2 == NULL) {
@@ -4064,18 +1405,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1791> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1555> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1791#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1791__action(val* self, val* p0) {
-parser__ReduceAction1791__action(self, p0);
+/* method parser#ReduceAction1555#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1555__action(val* self, val* p0) {
+parser__ReduceAction1555__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1793#action for (self: ReduceAction1793, Parser) */
-void parser__ReduceAction1793__action(val* self, val* p0) {
+/* method parser#ReduceAction1557#action for (self: ReduceAction1557, Parser) */
+void parser__ReduceAction1557__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4120,11 +1461,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31173);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29537);
 exit(1);
 }
 var_ptypenode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1793>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1557>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_ptypenode2 == NULL) {
@@ -4137,18 +1479,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1793> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1557> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1793#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1793__action(val* self, val* p0) {
-parser__ReduceAction1793__action(self, p0);
+/* method parser#ReduceAction1557#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1557__action(val* self, val* p0) {
+parser__ReduceAction1557__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1794#action for (self: ReduceAction1794, Parser) */
-void parser__ReduceAction1794__action(val* self, val* p0) {
+/* method parser#ReduceAction1558#action for (self: ReduceAction1558, Parser) */
+void parser__ReduceAction1558__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4182,18 +1524,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1794> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1558> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1794#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1794__action(val* self, val* p0) {
-parser__ReduceAction1794__action(self, p0);
+/* method parser#ReduceAction1558#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1558__action(val* self, val* p0) {
+parser__ReduceAction1558__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1795#action for (self: ReduceAction1795, Parser) */
-void parser__ReduceAction1795__action(val* self, val* p0) {
+/* method parser#ReduceAction1559#action for (self: ReduceAction1559, Parser) */
+void parser__ReduceAction1559__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4238,11 +1580,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31207);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29571);
 exit(1);
 }
 var_pexprnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1795>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1559>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pexprnode2 == NULL) {
@@ -4255,18 +1598,74 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1795> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1559> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1795#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1795__action(val* self, val* p0) {
-parser__ReduceAction1795__action(self, p0);
+/* method parser#ReduceAction1559#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1559__action(val* self, val* p0) {
+parser__ReduceAction1559__action(self, p0);
+RET_LABEL:;
+}
+/* method parser#ReduceAction1560#action for (self: ReduceAction1560, Parser) */
+void parser__ReduceAction1560__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_nodearraylist1 /* var nodearraylist1: nullable Object */;
+val* var2 /* : Array[Object] */;
+val* var_listnode2 /* var listnode2: Array[Object] */;
+val* var_listnode1 /* var listnode1: nullable Object */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+val* var4 /* : Array[Object] */;
+long var5 /* : Int */;
+long var6 /* : 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_nodearraylist1 = var1;
+var2 = NEW_array__Array(&type_array__Arraykernel__Object);
+((void (*)(val*))(var2->class->vft[COLOR_array__Array__init]))(var2) /* init on <var2:Array[Object]>*/;
+CHECK_NEW_array__Array(var2);
+var_listnode2 = var2;
+var_listnode1 = var_nodearraylist1;
+/* <var_listnode1:nullable Object> isa Array[Object] */
+cltype = type_array__Arraykernel__Object.color;
+idtype = type_array__Arraykernel__Object.id;
+if(var_listnode1 == NULL) {
+var3 = 0;
+} else {
+if(cltype >= var_listnode1->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_listnode1->type->type_table[cltype] == idtype;
+}
+}
+if (!var3) {
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29589);
+exit(1);
+}
+var4 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode2, var_listnode1) /* concat on <self:ReduceAction1560>*/;
+var_listnode2 = var4;
+var_node_list = var_listnode2;
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1560> */
+var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
+((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
+RET_LABEL:;
+}
+/* method parser#ReduceAction1560#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1560__action(val* self, val* p0) {
+parser__ReduceAction1560__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1797#action for (self: ReduceAction1797, Parser) */
-void parser__ReduceAction1797__action(val* self, val* p0) {
+/* method parser#ReduceAction1561#action for (self: ReduceAction1561, Parser) */
+void parser__ReduceAction1561__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4313,7 +1712,8 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31226);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29604);
 exit(1);
 }
 var_listnode2 = var_nodearraylist2;
@@ -4330,26 +1730,27 @@ var5 = var_listnode2->type->type_table[cltype6] == idtype7;
 }
 }
 if (!var5) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31228);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29606);
 exit(1);
 }
-var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1797>*/;
+var8 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1561>*/;
 var_listnode3 = var8;
-var9 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode2) /* concat on <self:ReduceAction1797>*/;
+var9 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode2) /* concat on <self:ReduceAction1561>*/;
 var_listnode3 = var9;
 var_node_list = var_listnode3;
-var10 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1797> */
+var10 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1561> */
 var11 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var10) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var11, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1797#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1797__action(val* self, val* p0) {
-parser__ReduceAction1797__action(self, p0);
+/* method parser#ReduceAction1561#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1561__action(val* self, val* p0) {
+parser__ReduceAction1561__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1799#action for (self: ReduceAction1799, Parser) */
-void parser__ReduceAction1799__action(val* self, val* p0) {
+/* method parser#ReduceAction1563#action for (self: ReduceAction1563, Parser) */
+void parser__ReduceAction1563__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4394,11 +1795,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31244);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29622);
 exit(1);
 }
 var_pannotationnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1799>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1563>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_pannotationnode2 == NULL) {
@@ -4411,18 +1813,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1799> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1563> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1799#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1799__action(val* self, val* p0) {
-parser__ReduceAction1799__action(self, p0);
+/* method parser#ReduceAction1563#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1563__action(val* self, val* p0) {
+parser__ReduceAction1563__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1803#action for (self: ReduceAction1803, Parser) */
-void parser__ReduceAction1803__action(val* self, val* p0) {
+/* method parser#ReduceAction1567#action for (self: ReduceAction1567, Parser) */
+void parser__ReduceAction1567__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4467,11 +1869,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31263);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29641);
 exit(1);
 }
 var_patargnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1803>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1567>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_patargnode2 == NULL) {
@@ -4484,18 +1887,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1803> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1567> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1803#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1803__action(val* self, val* p0) {
-parser__ReduceAction1803__action(self, p0);
+/* method parser#ReduceAction1567#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1567__action(val* self, val* p0) {
+parser__ReduceAction1567__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1807#action for (self: ReduceAction1807, Parser) */
-void parser__ReduceAction1807__action(val* self, val* p0) {
+/* method parser#ReduceAction1571#action for (self: ReduceAction1571, Parser) */
+void parser__ReduceAction1571__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4540,11 +1943,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31282);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29660);
 exit(1);
 }
 var_tidnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1807>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1571>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_tidnode2 == NULL) {
@@ -4557,18 +1961,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1807> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1571> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1807#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1807__action(val* self, val* p0) {
-parser__ReduceAction1807__action(self, p0);
+/* method parser#ReduceAction1571#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1571__action(val* self, val* p0) {
+parser__ReduceAction1571__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1808#action for (self: ReduceAction1808, Parser) */
-void parser__ReduceAction1808__action(val* self, val* p0) {
+/* method parser#ReduceAction1572#action for (self: ReduceAction1572, Parser) */
+void parser__ReduceAction1572__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4602,18 +2006,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1808> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1572> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1808#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1808__action(val* self, val* p0) {
-parser__ReduceAction1808__action(self, p0);
+/* method parser#ReduceAction1572#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1572__action(val* self, val* p0) {
+parser__ReduceAction1572__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1809#action for (self: ReduceAction1809, Parser) */
-void parser__ReduceAction1809__action(val* self, val* p0) {
+/* method parser#ReduceAction1573#action for (self: ReduceAction1573, Parser) */
+void parser__ReduceAction1573__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4658,11 +2062,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31316);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29694);
 exit(1);
 }
 var_tcommentnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1809>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1573>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_tcommentnode2 == NULL) {
@@ -4675,18 +2080,18 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1809> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1573> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1809#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1809__action(val* self, val* p0) {
-parser__ReduceAction1809__action(self, p0);
+/* method parser#ReduceAction1573#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1573__action(val* self, val* p0) {
+parser__ReduceAction1573__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1810#action for (self: ReduceAction1810, Parser) */
-void parser__ReduceAction1810__action(val* self, val* p0) {
+/* method parser#ReduceAction1574#action for (self: ReduceAction1574, Parser) */
+void parser__ReduceAction1574__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4720,18 +2125,18 @@ if (var4){
 } else {
 }
 var_node_list = var_listnode2;
-var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1810> */
+var5 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1574> */
 var6 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var5) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var6, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1810#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1810__action(val* self, val* p0) {
-parser__ReduceAction1810__action(self, p0);
+/* method parser#ReduceAction1574#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1574__action(val* self, val* p0) {
+parser__ReduceAction1574__action(self, p0);
 RET_LABEL:;
 }
-/* method parser#ReduceAction1811#action for (self: ReduceAction1811, Parser) */
-void parser__ReduceAction1811__action(val* self, val* p0) {
+/* method parser#ReduceAction1575#action for (self: ReduceAction1575, Parser) */
+void parser__ReduceAction1575__action(val* self, val* p0) {
 val* var_p /* var p: Parser */;
 val* var /* : null */;
 val* var_node_list /* var node_list: nullable Object */;
@@ -4776,11 +2181,12 @@ var4 = var_listnode1->type->type_table[cltype] == idtype;
 }
 }
 if (!var4) {
-fprintf(stderr, "Runtime error: %s (%s:%d)\n", "Assert failed", "src/parser/parser.nit", 31350);
+fprintf(stderr, "Runtime error: %s", "Assert failed");
+fprintf(stderr, " (%s:%d)\n", "src/parser/parser.nit", 29728);
 exit(1);
 }
 var_teolnode2 = var_nodearraylist2;
-var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1811>*/;
+var5 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_parser__ReduceAction__concat]))(self, var_listnode3, var_listnode1) /* concat on <self:ReduceAction1575>*/;
 var_listnode3 = var5;
 var6 = NULL;
 if (var_teolnode2 == NULL) {
@@ -4793,13 +2199,13 @@ if (var7){
 } else {
 }
 var_node_list = var_listnode3;
-var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1811> */
+var8 = self->attrs[COLOR_parser__ReduceAction___goto].l; /* _goto on <self:ReduceAction1575> */
 var9 = ((long (*)(val*, long))(var_p->class->vft[COLOR_parser__Parser__go_to]))(var_p, var8) /* go_to on <var_p:Parser>*/;
 ((void (*)(val*, long, val*))(var_p->class->vft[COLOR_parser__Parser__push]))(var_p, var9, var_node_list) /* push on <var_p:Parser>*/;
 RET_LABEL:;
 }
-/* method parser#ReduceAction1811#action for (self: Object, Parser) */
-void VIRTUAL_parser__ReduceAction1811__action(val* self, val* p0) {
-parser__ReduceAction1811__action(self, p0);
+/* method parser#ReduceAction1575#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction1575__action(val* self, val* p0) {
+parser__ReduceAction1575__action(self, p0);
 RET_LABEL:;
 }