+if(cltype19 >= var_pannotationsnode6->type->table_size) {
+var18 = 0;
+} else {
+var18 = var_pannotationsnode6->type->type_table[cltype19] == idtype20;
+}
+}
+if (unlikely(!var18)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5276);
+show_backtrace(1);
+}
+var21 = NEW_parser_nodes__AType(&type_parser_nodes__AType);
+{
+parser_prod__AType__init_atype(var21, var_tkwnullablenode2, var_tclassidnode3, var_listnode5, var_pannotationsnode6); /* Direct call parser_prod#AType#init_atype on <var21:AType>*/
+}
+var_ptypenode1 = var21;
+var_node_list = var_ptypenode1;
+var22 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction152> */
+{
+var23 = parser_work__Parser__go_to(var_p, var22);
+}
+{
+parser_work__Parser__push(var_p, var23, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction152#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction152__action(val* self, val* p0) {
+parser__ReduceAction152__action(self, p0); /* Direct call parser#ReduceAction152#action on <self:Object(ReduceAction152)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction153#action for (self: ReduceAction153, Parser) */
+void parser__ReduceAction153__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_ptypenode1 /* var ptypenode1: nullable Object */;
+val* var3 /* : null */;
+short int var4 /* : Bool */;
+short int var5 /* : Bool */;
+long var6 /* : Int */;
+long var7 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var2 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:Array[Object]>*/;
+}
+var_listnode2 = var2;
+var_ptypenode1 = var_nodearraylist1;
+var3 = NULL;
+if (var_ptypenode1 == NULL) {
+var4 = 0; /* is null */
+} else {
+var4 = 1; /* arg is null and recv is not */
+}
+if (0) {
+var5 = ((short int (*)(val*, val*))(var_ptypenode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_ptypenode1, var3) /* != on <var_ptypenode1:nullable Object>*/;
+var4 = var5;
+}
+if (var4){
+{
+array__Array__add(var_listnode2, var_ptypenode1); /* Direct call array#Array#add on <var_listnode2:Array[Object]>*/
+}
+} else {
+}
+var_node_list = var_listnode2;
+var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction153> */
+{
+var7 = parser_work__Parser__go_to(var_p, var6);
+}
+{
+parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction153#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction153__action(val* self, val* p0) {
+parser__ReduceAction153__action(self, p0); /* Direct call parser#ReduceAction153#action on <self:Object(ReduceAction153)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction154#action for (self: ReduceAction154, Parser) */
+void parser__ReduceAction154__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_ptypenode1 /* var ptypenode1: nullable Object */;
+val* var_listnode2 /* var listnode2: nullable Object */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var5 /* : null */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var8 /* : Array[Object] */;
+long var9 /* : Int */;
+long var10 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var3 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:Array[Object]>*/;
+}
+var_listnode3 = var3;
+var_ptypenode1 = var_nodearraylist1;
+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 (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5312);
+show_backtrace(1);
+}
+var5 = NULL;
+if (var_ptypenode1 == NULL) {
+var6 = 0; /* is null */
+} else {
+var6 = 1; /* arg is null and recv is not */
+}
+if (0) {
+var7 = ((short int (*)(val*, val*))(var_ptypenode1->class->vft[COLOR_kernel__Object___33d_61d]))(var_ptypenode1, var5) /* != on <var_ptypenode1:nullable Object>*/;
+var6 = var7;
+}
+if (var6){
+{
+array__Array__add(var_listnode3, var_ptypenode1); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
+}
+} else {
+}
+{
+var8 = parser_work__ReduceAction__concat(self, var_listnode3, var_listnode2);
+}
+var_listnode3 = var8;
+var_node_list = var_listnode3;
+var9 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction154> */
+{
+var10 = parser_work__Parser__go_to(var_p, var9);
+}
+{
+parser_work__Parser__push(var_p, var10, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction154#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction154__action(val* self, val* p0) {
+parser__ReduceAction154__action(self, p0); /* Direct call parser#ReduceAction154#action on <self:Object(ReduceAction154)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction155#action for (self: ReduceAction155, Parser) */
+void parser__ReduceAction155__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_ptypenode1 /* var ptypenode1: nullable Object */;
+long var4 /* : Int */;
+long var5 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var3;
+var_ptypenode1 = var_nodearraylist3;
+var_node_list = var_ptypenode1;
+var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction155> */
+{
+var5 = parser_work__Parser__go_to(var_p, var4);
+}
+{
+parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction155#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction155__action(val* self, val* p0) {
+parser__ReduceAction155__action(self, p0); /* Direct call parser#ReduceAction155#action on <self:Object(ReduceAction155)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction159#action for (self: ReduceAction159, Parser) */
+void parser__ReduceAction159__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_pexprnode1 /* var pexprnode1: nullable Object */;
+long var3 /* : Int */;
+long var4 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var_pexprnode1 = var_nodearraylist2;
+var_node_list = var_pexprnode1;
+var3 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction159> */
+{
+var4 = parser_work__Parser__go_to(var_p, var3);
+}
+{
+parser_work__Parser__push(var_p, var4, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction159#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction159__action(val* self, val* p0) {
+parser__ReduceAction159__action(self, p0); /* Direct call parser#ReduceAction159#action on <self:Object(ReduceAction159)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction160#action for (self: ReduceAction160, Parser) */
+void parser__ReduceAction160__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_tkwendnode3 /* var tkwendnode3: nullable Object */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var5 /* : ABlockExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var6 /* : Int */;
+long var7 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var3 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:Array[Object]>*/;
+}
+var_listnode2 = var3;
+var_tkwendnode3 = var_nodearraylist2;
+/* <var_tkwendnode3:nullable Object> isa nullable TKwend */
+cltype = type_nullable_parser_nodes__TKwend.color;
+idtype = type_nullable_parser_nodes__TKwend.id;
+if(var_tkwendnode3 == NULL) {
+var4 = 1;
+} else {
+if(cltype >= var_tkwendnode3->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_tkwendnode3->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5355);
+show_backtrace(1);
+}
+var5 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+{
+parser_prod__ABlockExpr__init_ablockexpr(var5, var_listnode2, var_tkwendnode3); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var5:ABlockExpr>*/
+}
+var_pexprnode1 = var5;
+var_node_list = var_pexprnode1;
+var6 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction160> */
+{
+var7 = parser_work__Parser__go_to(var_p, var6);
+}
+{
+parser_work__Parser__push(var_p, var7, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction160#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction160__action(val* self, val* p0) {
+parser__ReduceAction160__action(self, p0); /* Direct call parser#ReduceAction160#action on <self:Object(ReduceAction160)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction161#action for (self: ReduceAction161, Parser) */
+void parser__ReduceAction161__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_tkwendnode3 /* var tkwendnode3: nullable Object */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+val* var4 /* : ABlockExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var2 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:Array[Object]>*/;
+}
+var_listnode2 = var2;
+var_tkwendnode3 = var_nodearraylist1;
+/* <var_tkwendnode3:nullable Object> isa nullable TKwend */
+cltype = type_nullable_parser_nodes__TKwend.color;
+idtype = type_nullable_parser_nodes__TKwend.id;
+if(var_tkwendnode3 == NULL) {
+var3 = 1;
+} else {
+if(cltype >= var_tkwendnode3->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_tkwendnode3->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var3)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5372);
+show_backtrace(1);
+}
+var4 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+{
+parser_prod__ABlockExpr__init_ablockexpr(var4, var_listnode2, var_tkwendnode3); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var4:ABlockExpr>*/
+}
+var_pexprnode1 = var4;
+var_node_list = var_pexprnode1;
+var5 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction161> */
+{
+var6 = parser_work__Parser__go_to(var_p, var5);
+}
+{
+parser_work__Parser__push(var_p, var6, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction161#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction161__action(val* self, val* p0) {
+parser__ReduceAction161__action(self, p0); /* Direct call parser#ReduceAction161#action on <self:Object(ReduceAction161)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction162#action for (self: ReduceAction162, Parser) */
+void parser__ReduceAction162__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_pexprnode1 /* var pexprnode1: nullable Object */;
+long var2 /* : Int */;
+long var3 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var_pexprnode1 = var_nodearraylist1;
+var_node_list = var_pexprnode1;
+var2 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction162> */
+{
+var3 = parser_work__Parser__go_to(var_p, var2);
+}
+{
+parser_work__Parser__push(var_p, var3, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction162#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction162__action(val* self, val* p0) {
+parser__ReduceAction162__action(self, p0); /* Direct call parser#ReduceAction162#action on <self:Object(ReduceAction162)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction163#action for (self: ReduceAction163, Parser) */
+void parser__ReduceAction163__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 */;
+short int var6 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var8 /* : Bool */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+val* var11 /* : ABlockExpr */;
+val* var12 /* : null */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var13 /* : Int */;
+long var14 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var2 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:Array[Object]>*/;
+}
+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 (unlikely(!var3)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5400);
+show_backtrace(1);
+}
+var4 = NULL;
+if (var_pexprnode2 == NULL) {
+var5 = 0; /* is null */
+} else {
+var5 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_pexprnode2,var4) on <var_pexprnode2:nullable Object(nullable AExpr)> */
+var_other = var4;
+{
+var9 = ((short int (*)(val*, val*))(var_pexprnode2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pexprnode2, var_other) /* == on <var_pexprnode2:nullable AExpr(AExpr)>*/;
+var8 = var9;
+}
+var10 = !var8;
+var6 = var10;
+goto RET_LABEL7;
+RET_LABEL7:(void)0;
+}
+var5 = var6;
+}
+if (var5){
+{
+array__Array__add(var_listnode3, var_pexprnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
+}
+} else {
+}
+var11 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+var12 = NULL;
+{
+parser_prod__ABlockExpr__init_ablockexpr(var11, var_listnode3, var12); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var11:ABlockExpr>*/
+}
+var_pexprnode1 = var11;
+var_node_list = var_pexprnode1;
+var13 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction163> */
+{
+var14 = parser_work__Parser__go_to(var_p, var13);
+}
+{
+parser_work__Parser__push(var_p, var14, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction163#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction163__action(val* self, val* p0) {
+parser__ReduceAction163__action(self, p0); /* Direct call parser#ReduceAction163#action on <self:Object(ReduceAction163)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction164#action for (self: ReduceAction164, Parser) */
+void parser__ReduceAction164__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_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var_listnode3 /* var listnode3: nullable Object */;
+short int var5 /* : Bool */;
+int cltype6;
+int idtype7;
+val* var8 /* : null */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var12 /* : Bool */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+val* var15 /* : Array[Object] */;
+val* var16 /* : ABlockExpr */;
+val* var17 /* : null */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var18 /* : Int */;
+long var19 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var3 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:Array[Object]>*/;
+}
+var_listnode4 = var3;
+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) {
+var4 = 1;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5421);
+show_backtrace(1);
+}
+var_listnode3 = var_nodearraylist2;
+/* <var_listnode3:nullable Object> isa Array[Object] */
+cltype6 = type_array__Arraykernel__Object.color;
+idtype7 = type_array__Arraykernel__Object.id;
+if(var_listnode3 == NULL) {
+var5 = 0;
+} else {
+if(cltype6 >= var_listnode3->type->table_size) {
+var5 = 0;
+} else {
+var5 = var_listnode3->type->type_table[cltype6] == idtype7;
+}
+}
+if (unlikely(!var5)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5423);
+show_backtrace(1);
+}
+var8 = NULL;
+if (var_pexprnode2 == NULL) {
+var9 = 0; /* is null */
+} else {
+var9 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_pexprnode2,var8) on <var_pexprnode2:nullable Object(nullable AExpr)> */
+var_other = var8;
+{
+var13 = ((short int (*)(val*, val*))(var_pexprnode2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pexprnode2, var_other) /* == on <var_pexprnode2:nullable AExpr(AExpr)>*/;
+var12 = var13;
+}
+var14 = !var12;
+var10 = var14;
+goto RET_LABEL11;
+RET_LABEL11:(void)0;
+}
+var9 = var10;
+}
+if (var9){
+{
+array__Array__add(var_listnode4, var_pexprnode2); /* Direct call array#Array#add on <var_listnode4:Array[Object]>*/
+}
+} else {
+}
+{
+var15 = parser_work__ReduceAction__concat(self, var_listnode4, var_listnode3);
+}
+var_listnode4 = var15;
+var16 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+var17 = NULL;
+{
+parser_prod__ABlockExpr__init_ablockexpr(var16, var_listnode4, var17); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var16:ABlockExpr>*/
+}
+var_pexprnode1 = var16;
+var_node_list = var_pexprnode1;
+var18 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction164> */
+{
+var19 = parser_work__Parser__go_to(var_p, var18);
+}
+{
+parser_work__Parser__push(var_p, var19, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction164#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction164__action(val* self, val* p0) {
+parser__ReduceAction164__action(self, p0); /* Direct call parser#ReduceAction164#action on <self:Object(ReduceAction164)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction165#action for (self: ReduceAction165, Parser) */
+void parser__ReduceAction165__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_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var5 /* : null */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+val* var12 /* : ABlockExpr */;
+val* var13 /* : null */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var14 /* : Int */;
+long var15 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var3 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var3->class->vft[COLOR_kernel__Object__init]))(var3) /* init on <var3:Array[Object]>*/;
+}
+var_listnode3 = var3;
+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) {
+var4 = 1;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5445);
+show_backtrace(1);
+}
+var5 = NULL;
+if (var_pexprnode2 == NULL) {
+var6 = 0; /* is null */
+} else {
+var6 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_pexprnode2,var5) on <var_pexprnode2:nullable Object(nullable AExpr)> */
+var_other = var5;
+{
+var10 = ((short int (*)(val*, val*))(var_pexprnode2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pexprnode2, var_other) /* == on <var_pexprnode2:nullable AExpr(AExpr)>*/;
+var9 = var10;
+}
+var11 = !var9;
+var7 = var11;
+goto RET_LABEL8;
+RET_LABEL8:(void)0;
+}
+var6 = var7;
+}
+if (var6){
+{
+array__Array__add(var_listnode3, var_pexprnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
+}
+} else {
+}
+var12 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+var13 = NULL;
+{
+parser_prod__ABlockExpr__init_ablockexpr(var12, var_listnode3, var13); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var12:ABlockExpr>*/
+}
+var_pexprnode1 = var12;
+var_node_list = var_pexprnode1;
+var14 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction165> */
+{
+var15 = parser_work__Parser__go_to(var_p, var14);
+}
+{
+parser_work__Parser__push(var_p, var15, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction165#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction165__action(val* self, val* p0) {
+parser__ReduceAction165__action(self, p0); /* Direct call parser#ReduceAction165#action on <self:Object(ReduceAction165)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction166#action for (self: ReduceAction166, Parser) */
+void parser__ReduceAction166__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_listnode4 /* var listnode4: Array[Object] */;
+val* var_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var5 /* : Bool */;
+int cltype;
+int idtype;
+val* var_listnode3 /* var listnode3: nullable Object */;
+short int var6 /* : Bool */;
+int cltype7;
+int idtype8;
+val* var9 /* : null */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var13 /* : Bool */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+val* var16 /* : Array[Object] */;
+val* var17 /* : ABlockExpr */;
+val* var18 /* : null */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var19 /* : Int */;
+long var20 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var3;
+var4 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on <var4:Array[Object]>*/;
+}
+var_listnode4 = 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;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var5 = 0;
+} else {
+var5 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var5)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5467);
+show_backtrace(1);
+}
+var_listnode3 = var_nodearraylist2;
+/* <var_listnode3:nullable Object> isa Array[Object] */
+cltype7 = type_array__Arraykernel__Object.color;
+idtype8 = type_array__Arraykernel__Object.id;
+if(var_listnode3 == NULL) {
+var6 = 0;
+} else {
+if(cltype7 >= var_listnode3->type->table_size) {
+var6 = 0;
+} else {
+var6 = var_listnode3->type->type_table[cltype7] == idtype8;
+}
+}
+if (unlikely(!var6)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5469);
+show_backtrace(1);
+}
+var9 = NULL;
+if (var_pexprnode2 == NULL) {
+var10 = 0; /* is null */
+} else {
+var10 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_pexprnode2,var9) on <var_pexprnode2:nullable Object(nullable AExpr)> */
+var_other = var9;
+{
+var14 = ((short int (*)(val*, val*))(var_pexprnode2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pexprnode2, var_other) /* == on <var_pexprnode2:nullable AExpr(AExpr)>*/;
+var13 = var14;
+}
+var15 = !var13;
+var11 = var15;
+goto RET_LABEL12;
+RET_LABEL12:(void)0;
+}
+var10 = var11;
+}
+if (var10){
+{
+array__Array__add(var_listnode4, var_pexprnode2); /* Direct call array#Array#add on <var_listnode4:Array[Object]>*/
+}
+} else {
+}
+{
+var16 = parser_work__ReduceAction__concat(self, var_listnode4, var_listnode3);
+}
+var_listnode4 = var16;
+var17 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+var18 = NULL;
+{
+parser_prod__ABlockExpr__init_ablockexpr(var17, var_listnode4, var18); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var17:ABlockExpr>*/
+}
+var_pexprnode1 = var17;
+var_node_list = var_pexprnode1;
+var19 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction166> */
+{
+var20 = parser_work__Parser__go_to(var_p, var19);
+}
+{
+parser_work__Parser__push(var_p, var20, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction166#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction166__action(val* self, val* p0) {
+parser__ReduceAction166__action(self, p0); /* Direct call parser#ReduceAction166#action on <self:Object(ReduceAction166)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction167#action for (self: ReduceAction167, Parser) */
+void parser__ReduceAction167__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_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var5 /* : Bool */;
+int cltype;
+int idtype;
+val* var6 /* : null */;
+short int var7 /* : Bool */;
+short int var8 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var10 /* : Bool */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+val* var_tkwendnode4 /* var tkwendnode4: nullable Object */;
+short int var13 /* : Bool */;
+int cltype14;
+int idtype15;
+val* var16 /* : ABlockExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var17 /* : Int */;
+long var18 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var3;
+var4 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on <var4:Array[Object]>*/;
+}
+var_listnode3 = 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;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var5 = 0;
+} else {
+var5 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var5)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5492);
+show_backtrace(1);
+}
+var6 = NULL;
+if (var_pexprnode2 == NULL) {
+var7 = 0; /* is null */
+} else {
+var7 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_pexprnode2,var6) on <var_pexprnode2:nullable Object(nullable AExpr)> */
+var_other = var6;
+{
+var11 = ((short int (*)(val*, val*))(var_pexprnode2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pexprnode2, var_other) /* == on <var_pexprnode2:nullable AExpr(AExpr)>*/;
+var10 = var11;
+}
+var12 = !var10;
+var8 = var12;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+var7 = var8;
+}
+if (var7){
+{
+array__Array__add(var_listnode3, var_pexprnode2); /* Direct call array#Array#add on <var_listnode3:Array[Object]>*/
+}
+} else {
+}
+var_tkwendnode4 = var_nodearraylist3;
+/* <var_tkwendnode4:nullable Object> isa nullable TKwend */
+cltype14 = type_nullable_parser_nodes__TKwend.color;
+idtype15 = type_nullable_parser_nodes__TKwend.id;
+if(var_tkwendnode4 == NULL) {
+var13 = 1;
+} else {
+if(cltype14 >= var_tkwendnode4->type->table_size) {
+var13 = 0;
+} else {
+var13 = var_tkwendnode4->type->type_table[cltype14] == idtype15;
+}
+}
+if (unlikely(!var13)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5497);
+show_backtrace(1);
+}
+var16 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+{
+parser_prod__ABlockExpr__init_ablockexpr(var16, var_listnode3, var_tkwendnode4); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var16:ABlockExpr>*/
+}
+var_pexprnode1 = var16;
+var_node_list = var_pexprnode1;
+var17 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction167> */
+{
+var18 = parser_work__Parser__go_to(var_p, var17);
+}
+{
+parser_work__Parser__push(var_p, var18, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction167#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction167__action(val* self, val* p0) {
+parser__ReduceAction167__action(self, p0); /* Direct call parser#ReduceAction167#action on <self:Object(ReduceAction167)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction168#action for (self: ReduceAction168, Parser) */
+void parser__ReduceAction168__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_pexprnode2 /* var pexprnode2: 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 /* : null */;
+short int var11 /* : Bool */;
+short int var12 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var14 /* : Bool */;
+short int var15 /* : Bool */;
+short int var16 /* : Bool */;
+val* var17 /* : Array[Object] */;
+val* var_tkwendnode5 /* var tkwendnode5: nullable Object */;
+short int var18 /* : Bool */;
+int cltype19;
+int idtype20;
+val* var21 /* : ABlockExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABlockExpr */;
+long var22 /* : Int */;
+long var23 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist4 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var3;
+{
+var4 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var4;
+var5 = NEW_array__Array(&type_array__Arraykernel__Object);
+{
+((void (*)(val*))(var5->class->vft[COLOR_kernel__Object__init]))(var5) /* init on <var5:Array[Object]>*/;
+}
+var_listnode4 = 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;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var6 = 0;
+} else {
+var6 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var6)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5517);
+show_backtrace(1);
+}
+var_listnode3 = var_nodearraylist2;
+/* <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 (unlikely(!var7)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5519);
+show_backtrace(1);
+}
+var10 = NULL;
+if (var_pexprnode2 == NULL) {
+var11 = 0; /* is null */
+} else {
+var11 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var_pexprnode2,var10) on <var_pexprnode2:nullable Object(nullable AExpr)> */
+var_other = var10;
+{
+var15 = ((short int (*)(val*, val*))(var_pexprnode2->class->vft[COLOR_kernel__Object___61d_61d]))(var_pexprnode2, var_other) /* == on <var_pexprnode2:nullable AExpr(AExpr)>*/;
+var14 = var15;
+}
+var16 = !var14;
+var12 = var16;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+var11 = var12;
+}
+if (var11){
+{
+array__Array__add(var_listnode4, var_pexprnode2); /* Direct call array#Array#add on <var_listnode4:Array[Object]>*/
+}
+} else {
+}
+{
+var17 = parser_work__ReduceAction__concat(self, var_listnode4, var_listnode3);
+}
+var_listnode4 = var17;
+var_tkwendnode5 = var_nodearraylist4;
+/* <var_tkwendnode5:nullable Object> isa nullable TKwend */
+cltype19 = type_nullable_parser_nodes__TKwend.color;
+idtype20 = type_nullable_parser_nodes__TKwend.id;
+if(var_tkwendnode5 == NULL) {
+var18 = 1;
+} else {
+if(cltype19 >= var_tkwendnode5->type->table_size) {
+var18 = 0;
+} else {
+var18 = var_tkwendnode5->type->type_table[cltype19] == idtype20;
+}
+}
+if (unlikely(!var18)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5525);
+show_backtrace(1);
+}
+var21 = NEW_parser_nodes__ABlockExpr(&type_parser_nodes__ABlockExpr);
+{
+parser_prod__ABlockExpr__init_ablockexpr(var21, var_listnode4, var_tkwendnode5); /* Direct call parser_prod#ABlockExpr#init_ablockexpr on <var21:ABlockExpr>*/
+}
+var_pexprnode1 = var21;
+var_node_list = var_pexprnode1;
+var22 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction168> */
+{
+var23 = parser_work__Parser__go_to(var_p, var22);
+}
+{
+parser_work__Parser__push(var_p, var23, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction168#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction168__action(val* self, val* p0) {
+parser__ReduceAction168__action(self, p0); /* Direct call parser#ReduceAction168#action on <self:Object(ReduceAction168)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction172#action for (self: ReduceAction172, Parser) */
+void parser__ReduceAction172__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_tkwreturnnode2 /* var tkwreturnnode2: nullable Object */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+val* var3 /* : AReturnExpr */;
+val* var4 /* : null */;
+val* var_pexprnode1 /* var pexprnode1: nullable AReturnExpr */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var_tkwreturnnode2 = var_nodearraylist1;
+/* <var_tkwreturnnode2:nullable Object> isa nullable TKwreturn */
+cltype = type_nullable_parser_nodes__TKwreturn.color;
+idtype = type_nullable_parser_nodes__TKwreturn.id;
+if(var_tkwreturnnode2 == NULL) {
+var2 = 1;
+} else {
+if(cltype >= var_tkwreturnnode2->type->table_size) {
+var2 = 0;
+} else {
+var2 = var_tkwreturnnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5541);
+show_backtrace(1);
+}
+var3 = NEW_parser_nodes__AReturnExpr(&type_parser_nodes__AReturnExpr);
+var4 = NULL;
+{
+parser_prod__AReturnExpr__init_areturnexpr(var3, var_tkwreturnnode2, var4); /* Direct call parser_prod#AReturnExpr#init_areturnexpr on <var3:AReturnExpr>*/
+}
+var_pexprnode1 = var3;
+var_node_list = var_pexprnode1;
+var5 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction172> */
+{
+var6 = parser_work__Parser__go_to(var_p, var5);
+}
+{
+parser_work__Parser__push(var_p, var6, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction172#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction172__action(val* self, val* p0) {
+parser__ReduceAction172__action(self, p0); /* Direct call parser#ReduceAction172#action on <self:Object(ReduceAction172)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction173#action for (self: ReduceAction173, Parser) */
+void parser__ReduceAction173__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_tkwreturnnode2 /* var tkwreturnnode2: nullable Object */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+val* var_pexprnode3 /* var pexprnode3: nullable Object */;
+short int var4 /* : Bool */;
+int cltype5;
+int idtype6;
+val* var7 /* : AReturnExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable AReturnExpr */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var_tkwreturnnode2 = var_nodearraylist1;
+/* <var_tkwreturnnode2:nullable Object> isa nullable TKwreturn */
+cltype = type_nullable_parser_nodes__TKwreturn.color;
+idtype = type_nullable_parser_nodes__TKwreturn.id;
+if(var_tkwreturnnode2 == NULL) {
+var3 = 1;
+} else {
+if(cltype >= var_tkwreturnnode2->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_tkwreturnnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var3)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5558);
+show_backtrace(1);
+}
+var_pexprnode3 = var_nodearraylist2;
+/* <var_pexprnode3:nullable Object> isa nullable AExpr */
+cltype5 = type_nullable_parser_nodes__AExpr.color;
+idtype6 = type_nullable_parser_nodes__AExpr.id;
+if(var_pexprnode3 == NULL) {
+var4 = 1;
+} else {
+if(cltype5 >= var_pexprnode3->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_pexprnode3->type->type_table[cltype5] == idtype6;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5560);
+show_backtrace(1);
+}
+var7 = NEW_parser_nodes__AReturnExpr(&type_parser_nodes__AReturnExpr);
+{
+parser_prod__AReturnExpr__init_areturnexpr(var7, var_tkwreturnnode2, var_pexprnode3); /* Direct call parser_prod#AReturnExpr#init_areturnexpr on <var7:AReturnExpr>*/
+}
+var_pexprnode1 = var7;
+var_node_list = var_pexprnode1;
+var8 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction173> */
+{
+var9 = parser_work__Parser__go_to(var_p, var8);
+}
+{
+parser_work__Parser__push(var_p, var9, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction173#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction173__action(val* self, val* p0) {
+parser__ReduceAction173__action(self, p0); /* Direct call parser#ReduceAction173#action on <self:Object(ReduceAction173)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction174#action for (self: ReduceAction174, Parser) */
+void parser__ReduceAction174__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_tkwbreaknode2 /* var tkwbreaknode2: nullable Object */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+val* var3 /* : ABreakExpr */;
+val* var4 /* : null */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABreakExpr */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var_tkwbreaknode2 = var_nodearraylist1;
+/* <var_tkwbreaknode2:nullable Object> isa nullable TKwbreak */
+cltype = type_nullable_parser_nodes__TKwbreak.color;
+idtype = type_nullable_parser_nodes__TKwbreak.id;
+if(var_tkwbreaknode2 == NULL) {
+var2 = 1;
+} else {
+if(cltype >= var_tkwbreaknode2->type->table_size) {
+var2 = 0;
+} else {
+var2 = var_tkwbreaknode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5576);
+show_backtrace(1);
+}
+var3 = NEW_parser_nodes__ABreakExpr(&type_parser_nodes__ABreakExpr);
+var4 = NULL;
+{
+parser_prod__ABreakExpr__init_abreakexpr(var3, var_tkwbreaknode2, var4); /* Direct call parser_prod#ABreakExpr#init_abreakexpr on <var3:ABreakExpr>*/
+}
+var_pexprnode1 = var3;
+var_node_list = var_pexprnode1;
+var5 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction174> */
+{
+var6 = parser_work__Parser__go_to(var_p, var5);
+}
+{
+parser_work__Parser__push(var_p, var6, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction174#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction174__action(val* self, val* p0) {
+parser__ReduceAction174__action(self, p0); /* Direct call parser#ReduceAction174#action on <self:Object(ReduceAction174)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction175#action for (self: ReduceAction175, Parser) */
+void parser__ReduceAction175__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_tkwbreaknode2 /* var tkwbreaknode2: nullable Object */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+val* var_plabelnode3 /* var plabelnode3: nullable Object */;
+short int var4 /* : Bool */;
+int cltype5;
+int idtype6;
+val* var7 /* : ABreakExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ABreakExpr */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var_tkwbreaknode2 = var_nodearraylist1;
+/* <var_tkwbreaknode2:nullable Object> isa nullable TKwbreak */
+cltype = type_nullable_parser_nodes__TKwbreak.color;
+idtype = type_nullable_parser_nodes__TKwbreak.id;
+if(var_tkwbreaknode2 == NULL) {
+var3 = 1;
+} else {
+if(cltype >= var_tkwbreaknode2->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_tkwbreaknode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var3)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5593);
+show_backtrace(1);
+}
+var_plabelnode3 = var_nodearraylist2;
+/* <var_plabelnode3:nullable Object> isa nullable ALabel */
+cltype5 = type_nullable_parser_nodes__ALabel.color;
+idtype6 = type_nullable_parser_nodes__ALabel.id;
+if(var_plabelnode3 == NULL) {
+var4 = 1;
+} else {
+if(cltype5 >= var_plabelnode3->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_plabelnode3->type->type_table[cltype5] == idtype6;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5595);
+show_backtrace(1);
+}
+var7 = NEW_parser_nodes__ABreakExpr(&type_parser_nodes__ABreakExpr);
+{
+parser_prod__ABreakExpr__init_abreakexpr(var7, var_tkwbreaknode2, var_plabelnode3); /* Direct call parser_prod#ABreakExpr#init_abreakexpr on <var7:ABreakExpr>*/
+}
+var_pexprnode1 = var7;
+var_node_list = var_pexprnode1;
+var8 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction175> */
+{
+var9 = parser_work__Parser__go_to(var_p, var8);
+}
+{
+parser_work__Parser__push(var_p, var9, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction175#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction175__action(val* self, val* p0) {
+parser__ReduceAction175__action(self, p0); /* Direct call parser#ReduceAction175#action on <self:Object(ReduceAction175)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction176#action for (self: ReduceAction176, Parser) */
+void parser__ReduceAction176__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_tkwabortnode2 /* var tkwabortnode2: nullable Object */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+val* var3 /* : AAbortExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable AAbortExpr */;
+long var4 /* : Int */;
+long var5 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var_tkwabortnode2 = var_nodearraylist1;
+/* <var_tkwabortnode2:nullable Object> isa nullable TKwabort */
+cltype = type_nullable_parser_nodes__TKwabort.color;
+idtype = type_nullable_parser_nodes__TKwabort.id;
+if(var_tkwabortnode2 == NULL) {
+var2 = 1;
+} else {
+if(cltype >= var_tkwabortnode2->type->table_size) {
+var2 = 0;
+} else {
+var2 = var_tkwabortnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5611);
+show_backtrace(1);
+}
+var3 = NEW_parser_nodes__AAbortExpr(&type_parser_nodes__AAbortExpr);
+{
+parser_prod__AAbortExpr__init_aabortexpr(var3, var_tkwabortnode2); /* Direct call parser_prod#AAbortExpr#init_aabortexpr on <var3:AAbortExpr>*/
+}
+var_pexprnode1 = var3;
+var_node_list = var_pexprnode1;
+var4 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction176> */
+{
+var5 = parser_work__Parser__go_to(var_p, var4);
+}
+{
+parser_work__Parser__push(var_p, var5, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction176#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction176__action(val* self, val* p0) {
+parser__ReduceAction176__action(self, p0); /* Direct call parser#ReduceAction176#action on <self:Object(ReduceAction176)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction177#action for (self: ReduceAction177, Parser) */
+void parser__ReduceAction177__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_tkwcontinuenode2 /* var tkwcontinuenode2: nullable Object */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+val* var3 /* : AContinueExpr */;
+val* var4 /* : null */;
+val* var_pexprnode1 /* var pexprnode1: nullable AContinueExpr */;
+long var5 /* : Int */;
+long var6 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var1;
+var_tkwcontinuenode2 = var_nodearraylist1;
+/* <var_tkwcontinuenode2:nullable Object> isa nullable TKwcontinue */
+cltype = type_nullable_parser_nodes__TKwcontinue.color;
+idtype = type_nullable_parser_nodes__TKwcontinue.id;
+if(var_tkwcontinuenode2 == NULL) {
+var2 = 1;
+} else {
+if(cltype >= var_tkwcontinuenode2->type->table_size) {
+var2 = 0;
+} else {
+var2 = var_tkwcontinuenode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var2)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5626);
+show_backtrace(1);
+}
+var3 = NEW_parser_nodes__AContinueExpr(&type_parser_nodes__AContinueExpr);
+var4 = NULL;
+{
+parser_prod__AContinueExpr__init_acontinueexpr(var3, var_tkwcontinuenode2, var4); /* Direct call parser_prod#AContinueExpr#init_acontinueexpr on <var3:AContinueExpr>*/
+}
+var_pexprnode1 = var3;
+var_node_list = var_pexprnode1;
+var5 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction177> */
+{
+var6 = parser_work__Parser__go_to(var_p, var5);
+}
+{
+parser_work__Parser__push(var_p, var6, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction177#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction177__action(val* self, val* p0) {
+parser__ReduceAction177__action(self, p0); /* Direct call parser#ReduceAction177#action on <self:Object(ReduceAction177)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction178#action for (self: ReduceAction178, Parser) */
+void parser__ReduceAction178__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_tkwcontinuenode2 /* var tkwcontinuenode2: nullable Object */;
+short int var3 /* : Bool */;
+int cltype;
+int idtype;
+val* var_plabelnode3 /* var plabelnode3: nullable Object */;
+short int var4 /* : Bool */;
+int cltype5;
+int idtype6;
+val* var7 /* : AContinueExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable AContinueExpr */;
+long var8 /* : Int */;
+long var9 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var_tkwcontinuenode2 = var_nodearraylist1;
+/* <var_tkwcontinuenode2:nullable Object> isa nullable TKwcontinue */
+cltype = type_nullable_parser_nodes__TKwcontinue.color;
+idtype = type_nullable_parser_nodes__TKwcontinue.id;
+if(var_tkwcontinuenode2 == NULL) {
+var3 = 1;
+} else {
+if(cltype >= var_tkwcontinuenode2->type->table_size) {
+var3 = 0;
+} else {
+var3 = var_tkwcontinuenode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var3)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5643);
+show_backtrace(1);
+}
+var_plabelnode3 = var_nodearraylist2;
+/* <var_plabelnode3:nullable Object> isa nullable ALabel */
+cltype5 = type_nullable_parser_nodes__ALabel.color;
+idtype6 = type_nullable_parser_nodes__ALabel.id;
+if(var_plabelnode3 == NULL) {
+var4 = 1;
+} else {
+if(cltype5 >= var_plabelnode3->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_plabelnode3->type->type_table[cltype5] == idtype6;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5645);
+show_backtrace(1);
+}
+var7 = NEW_parser_nodes__AContinueExpr(&type_parser_nodes__AContinueExpr);
+{
+parser_prod__AContinueExpr__init_acontinueexpr(var7, var_tkwcontinuenode2, var_plabelnode3); /* Direct call parser_prod#AContinueExpr#init_acontinueexpr on <var7:AContinueExpr>*/
+}
+var_pexprnode1 = var7;
+var_node_list = var_pexprnode1;
+var8 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction178> */
+{
+var9 = parser_work__Parser__go_to(var_p, var8);
+}
+{
+parser_work__Parser__push(var_p, var9, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction178#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction178__action(val* self, val* p0) {
+parser__ReduceAction178__action(self, p0); /* Direct call parser#ReduceAction178#action on <self:Object(ReduceAction178)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction185#action for (self: ReduceAction185, Parser) */
+void parser__ReduceAction185__action(val* self, val* p0) {
+val* var_p /* var p: Parser */;
+val* var /* : null */;
+val* var_node_list /* var node_list: nullable Object */;
+val* var1 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var2 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var3 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var4 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var5 /* : nullable Object */;
+val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
+val* var_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var6 /* : Bool */;
+int cltype;
+int idtype;
+val* var_tidnode3 /* var tidnode3: nullable Object */;
+short int var7 /* : Bool */;
+int cltype8;
+int idtype9;
+val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
+short int var10 /* : Bool */;
+int cltype11;
+int idtype12;
+val* var13 /* : ACallExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var14 /* : Int */;
+long var15 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist5 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist4 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var3;
+{
+var4 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var4;
+{
+var5 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = 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;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var6 = 0;
+} else {
+var6 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var6)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5665);
+show_backtrace(1);
+}
+var_tidnode3 = var_nodearraylist4;
+/* <var_tidnode3:nullable Object> isa nullable TId */
+cltype8 = type_nullable_parser_nodes__TId.color;
+idtype9 = type_nullable_parser_nodes__TId.id;
+if(var_tidnode3 == NULL) {
+var7 = 1;
+} else {
+if(cltype8 >= var_tidnode3->type->table_size) {
+var7 = 0;
+} else {
+var7 = var_tidnode3->type->type_table[cltype8] == idtype9;
+}
+}
+if (unlikely(!var7)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5667);
+show_backtrace(1);
+}
+var_pexprsnode4 = var_nodearraylist5;
+/* <var_pexprsnode4:nullable Object> isa nullable AExprs */
+cltype11 = type_nullable_parser_nodes__AExprs.color;
+idtype12 = type_nullable_parser_nodes__AExprs.id;
+if(var_pexprsnode4 == NULL) {
+var10 = 1;
+} else {
+if(cltype11 >= var_pexprsnode4->type->table_size) {
+var10 = 0;
+} else {
+var10 = var_pexprsnode4->type->type_table[cltype11] == idtype12;
+}
+}
+if (unlikely(!var10)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5669);
+show_backtrace(1);
+}
+var13 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+{
+parser_prod__ACallExpr__init_acallexpr(var13, var_pexprnode2, var_tidnode3, var_pexprsnode4); /* Direct call parser_prod#ACallExpr#init_acallexpr on <var13:ACallExpr>*/
+}
+var_pexprnode1 = var13;
+var_node_list = var_pexprnode1;
+var14 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction185> */
+{
+var15 = parser_work__Parser__go_to(var_p, var14);
+}
+{
+parser_work__Parser__push(var_p, var15, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction185#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction185__action(val* self, val* p0) {
+parser__ReduceAction185__action(self, p0); /* Direct call parser#ReduceAction185#action on <self:Object(ReduceAction185)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction186#action for (self: ReduceAction186, Parser) */
+void parser__ReduceAction186__action(val* self, val* p0) {
+val* var_p /* var p: Parser */;
+val* var /* : null */;
+val* var_node_list /* var node_list: nullable Object */;
+val* var1 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var2 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var3 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var4 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var5 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
+val* var_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var7 /* : Bool */;
+int cltype;
+int idtype;
+val* var_tidnode3 /* var tidnode3: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
+short int var11 /* : Bool */;
+int cltype12;
+int idtype13;
+val* var14 /* : ACallExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var15 /* : Int */;
+long var16 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist6 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist5 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist4 = var3;
+{
+var4 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var4;
+{
+var5 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var5;
+{
+var6 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var6;
+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) {
+var7 = 1;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var7 = 0;
+} else {
+var7 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var7)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5691);
+show_backtrace(1);
+}
+var_tidnode3 = var_nodearraylist5;
+/* <var_tidnode3:nullable Object> isa nullable TId */
+cltype9 = type_nullable_parser_nodes__TId.color;
+idtype10 = type_nullable_parser_nodes__TId.id;
+if(var_tidnode3 == NULL) {
+var8 = 1;
+} else {
+if(cltype9 >= var_tidnode3->type->table_size) {
+var8 = 0;
+} else {
+var8 = var_tidnode3->type->type_table[cltype9] == idtype10;
+}
+}
+if (unlikely(!var8)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5693);
+show_backtrace(1);
+}
+var_pexprsnode4 = var_nodearraylist6;
+/* <var_pexprsnode4:nullable Object> isa nullable AExprs */
+cltype12 = type_nullable_parser_nodes__AExprs.color;
+idtype13 = type_nullable_parser_nodes__AExprs.id;
+if(var_pexprsnode4 == NULL) {
+var11 = 1;
+} else {
+if(cltype12 >= var_pexprsnode4->type->table_size) {
+var11 = 0;
+} else {
+var11 = var_pexprsnode4->type->type_table[cltype12] == idtype13;
+}
+}
+if (unlikely(!var11)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5695);
+show_backtrace(1);
+}
+var14 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+{
+parser_prod__ACallExpr__init_acallexpr(var14, var_pexprnode2, var_tidnode3, var_pexprsnode4); /* Direct call parser_prod#ACallExpr#init_acallexpr on <var14:ACallExpr>*/
+}
+var_pexprnode1 = var14;
+var_node_list = var_pexprnode1;
+var15 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction186> */
+{
+var16 = parser_work__Parser__go_to(var_p, var15);
+}
+{
+parser_work__Parser__push(var_p, var16, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction186#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction186__action(val* self, val* p0) {
+parser__ReduceAction186__action(self, p0); /* Direct call parser#ReduceAction186#action on <self:Object(ReduceAction186)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction187#action for (self: ReduceAction187, Parser) */
+void parser__ReduceAction187__action(val* self, val* p0) {
+val* var_p /* var p: Parser */;
+val* var /* : null */;
+val* var_node_list /* var node_list: nullable Object */;
+val* var1 /* : nullable Object */;
+val* var_nodearraylist7 /* var nodearraylist7: nullable Object */;
+val* var2 /* : nullable Object */;
+val* var_nodearraylist6 /* var nodearraylist6: nullable Object */;
+val* var3 /* : nullable Object */;
+val* var_nodearraylist5 /* var nodearraylist5: nullable Object */;
+val* var4 /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: nullable Object */;
+val* var5 /* : nullable Object */;
+val* var_nodearraylist3 /* var nodearraylist3: nullable Object */;
+val* var6 /* : nullable Object */;
+val* var_nodearraylist2 /* var nodearraylist2: nullable Object */;
+val* var7 /* : nullable Object */;
+val* var_nodearraylist1 /* var nodearraylist1: nullable Object */;
+val* var_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var8 /* : Bool */;
+int cltype;
+int idtype;
+val* var_tidnode3 /* var tidnode3: nullable Object */;
+short int var9 /* : Bool */;
+int cltype10;
+int idtype11;
+val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
+short int var12 /* : Bool */;
+int cltype13;
+int idtype14;
+val* var15 /* : ACallExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var16 /* : Int */;
+long var17 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist7 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist6 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist5 = var3;
+{
+var4 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist4 = var4;
+{
+var5 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var5;
+{
+var6 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var6;
+{
+var7 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var7;
+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) {
+var8 = 1;
+} else {
+if(cltype >= var_pexprnode2->type->table_size) {
+var8 = 0;
+} else {
+var8 = var_pexprnode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var8)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5718);
+show_backtrace(1);
+}
+var_tidnode3 = var_nodearraylist6;
+/* <var_tidnode3:nullable Object> isa nullable TId */
+cltype10 = type_nullable_parser_nodes__TId.color;
+idtype11 = type_nullable_parser_nodes__TId.id;
+if(var_tidnode3 == NULL) {
+var9 = 1;
+} else {
+if(cltype10 >= var_tidnode3->type->table_size) {
+var9 = 0;
+} else {
+var9 = var_tidnode3->type->type_table[cltype10] == idtype11;
+}
+}
+if (unlikely(!var9)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5720);
+show_backtrace(1);
+}
+var_pexprsnode4 = var_nodearraylist7;
+/* <var_pexprsnode4:nullable Object> isa nullable AExprs */
+cltype13 = type_nullable_parser_nodes__AExprs.color;
+idtype14 = type_nullable_parser_nodes__AExprs.id;
+if(var_pexprsnode4 == NULL) {
+var12 = 1;
+} else {
+if(cltype13 >= var_pexprsnode4->type->table_size) {
+var12 = 0;
+} else {
+var12 = var_pexprsnode4->type->type_table[cltype13] == idtype14;
+}
+}
+if (unlikely(!var12)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5722);
+show_backtrace(1);
+}
+var15 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+{
+parser_prod__ACallExpr__init_acallexpr(var15, var_pexprnode2, var_tidnode3, var_pexprsnode4); /* Direct call parser_prod#ACallExpr#init_acallexpr on <var15:ACallExpr>*/
+}
+var_pexprnode1 = var15;
+var_node_list = var_pexprnode1;
+var16 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction187> */
+{
+var17 = parser_work__Parser__go_to(var_p, var16);
+}
+{
+parser_work__Parser__push(var_p, var17, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction187#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction187__action(val* self, val* p0) {
+parser__ReduceAction187__action(self, p0); /* Direct call parser#ReduceAction187#action on <self:Object(ReduceAction187)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction189#action for (self: ReduceAction189, Parser) */
+void parser__ReduceAction189__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 /* : AImplicitSelfExpr */;
+val* var_pexprnode2 /* var pexprnode2: nullable AImplicitSelfExpr */;
+val* var_tidnode3 /* var tidnode3: nullable Object */;
+short int var5 /* : Bool */;
+int cltype;
+int idtype;
+val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
+short int var6 /* : Bool */;
+int cltype7;
+int idtype8;
+val* var9 /* : ACallExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var10 /* : Int */;
+long var11 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var2;
+var3 = NEW_parser_nodes__AImplicitSelfExpr(&type_parser_nodes__AImplicitSelfExpr);
+{
+{ /* Inline parser_prod#AImplicitSelfExpr#init_aimplicitselfexpr (var3) on <var3:AImplicitSelfExpr> */
+RET_LABEL4:(void)0;
+}
+}
+var_pexprnode2 = var3;
+var_tidnode3 = var_nodearraylist1;
+/* <var_tidnode3:nullable Object> isa nullable TId */
+cltype = type_nullable_parser_nodes__TId.color;
+idtype = type_nullable_parser_nodes__TId.id;
+if(var_tidnode3 == NULL) {
+var5 = 1;
+} else {
+if(cltype >= var_tidnode3->type->table_size) {
+var5 = 0;
+} else {
+var5 = var_tidnode3->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var5)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5741);
+show_backtrace(1);
+}
+var_pexprsnode4 = var_nodearraylist2;
+/* <var_pexprsnode4:nullable Object> isa nullable AExprs */
+cltype7 = type_nullable_parser_nodes__AExprs.color;
+idtype8 = type_nullable_parser_nodes__AExprs.id;
+if(var_pexprsnode4 == NULL) {
+var6 = 1;
+} else {
+if(cltype7 >= var_pexprsnode4->type->table_size) {
+var6 = 0;
+} else {
+var6 = var_pexprsnode4->type->type_table[cltype7] == idtype8;
+}
+}
+if (unlikely(!var6)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5743);
+show_backtrace(1);
+}
+var9 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+{
+parser_prod__ACallExpr__init_acallexpr(var9, var_pexprnode2, var_tidnode3, var_pexprsnode4); /* Direct call parser_prod#ACallExpr#init_acallexpr on <var9:ACallExpr>*/
+}
+var_pexprnode1 = var9;
+var_node_list = var_pexprnode1;
+var10 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction189> */
+{
+var11 = parser_work__Parser__go_to(var_p, var10);
+}
+{
+parser_work__Parser__push(var_p, var11, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction189#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction189__action(val* self, val* p0) {
+parser__ReduceAction189__action(self, p0); /* Direct call parser#ReduceAction189#action on <self:Object(ReduceAction189)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction190#action for (self: ReduceAction190, Parser) */
+void parser__ReduceAction190__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 /* : AImplicitSelfExpr */;
+val* var_pexprnode2 /* var pexprnode2: nullable AImplicitSelfExpr */;
+val* var_tidnode3 /* var tidnode3: nullable Object */;
+short int var6 /* : Bool */;
+int cltype;
+int idtype;
+val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
+short int var7 /* : Bool */;
+int cltype8;
+int idtype9;
+val* var10 /* : ACallExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var11 /* : Int */;
+long var12 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var3;
+var4 = NEW_parser_nodes__AImplicitSelfExpr(&type_parser_nodes__AImplicitSelfExpr);
+{
+{ /* Inline parser_prod#AImplicitSelfExpr#init_aimplicitselfexpr (var4) on <var4:AImplicitSelfExpr> */
+RET_LABEL5:(void)0;
+}
+}
+var_pexprnode2 = var4;
+var_tidnode3 = var_nodearraylist2;
+/* <var_tidnode3:nullable Object> isa nullable TId */
+cltype = type_nullable_parser_nodes__TId.color;
+idtype = type_nullable_parser_nodes__TId.id;
+if(var_tidnode3 == NULL) {
+var6 = 1;
+} else {
+if(cltype >= var_tidnode3->type->table_size) {
+var6 = 0;
+} else {
+var6 = var_tidnode3->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var6)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5763);
+show_backtrace(1);
+}
+var_pexprsnode4 = var_nodearraylist3;
+/* <var_pexprsnode4:nullable Object> isa nullable AExprs */
+cltype8 = type_nullable_parser_nodes__AExprs.color;
+idtype9 = type_nullable_parser_nodes__AExprs.id;
+if(var_pexprsnode4 == NULL) {
+var7 = 1;
+} else {
+if(cltype8 >= var_pexprsnode4->type->table_size) {
+var7 = 0;
+} else {
+var7 = var_pexprsnode4->type->type_table[cltype8] == idtype9;
+}
+}
+if (unlikely(!var7)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5765);
+show_backtrace(1);
+}
+var10 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+{
+parser_prod__ACallExpr__init_acallexpr(var10, var_pexprnode2, var_tidnode3, var_pexprsnode4); /* Direct call parser_prod#ACallExpr#init_acallexpr on <var10:ACallExpr>*/
+}
+var_pexprnode1 = var10;
+var_node_list = var_pexprnode1;
+var11 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction190> */
+{
+var12 = parser_work__Parser__go_to(var_p, var11);
+}
+{
+parser_work__Parser__push(var_p, var12, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction190#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction190__action(val* self, val* p0) {
+parser__ReduceAction190__action(self, p0); /* Direct call parser#ReduceAction190#action on <self:Object(ReduceAction190)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction191#action for (self: ReduceAction191, Parser) */
+void parser__ReduceAction191__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 /* : AImplicitSelfExpr */;
+val* var_pexprnode2 /* var pexprnode2: nullable AImplicitSelfExpr */;
+val* var_tidnode3 /* var tidnode3: nullable Object */;
+short int var7 /* : Bool */;
+int cltype;
+int idtype;
+val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var11 /* : ACallExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ACallExpr */;
+long var12 /* : Int */;
+long var13 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist4 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var3;
+{
+var4 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var4;
+var5 = NEW_parser_nodes__AImplicitSelfExpr(&type_parser_nodes__AImplicitSelfExpr);
+{
+{ /* Inline parser_prod#AImplicitSelfExpr#init_aimplicitselfexpr (var5) on <var5:AImplicitSelfExpr> */
+RET_LABEL6:(void)0;
+}
+}
+var_pexprnode2 = var5;
+var_tidnode3 = var_nodearraylist3;
+/* <var_tidnode3:nullable Object> isa nullable TId */
+cltype = type_nullable_parser_nodes__TId.color;
+idtype = type_nullable_parser_nodes__TId.id;
+if(var_tidnode3 == NULL) {
+var7 = 1;
+} else {
+if(cltype >= var_tidnode3->type->table_size) {
+var7 = 0;
+} else {
+var7 = var_tidnode3->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var7)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5786);
+show_backtrace(1);
+}
+var_pexprsnode4 = var_nodearraylist4;
+/* <var_pexprsnode4:nullable Object> isa nullable AExprs */
+cltype9 = type_nullable_parser_nodes__AExprs.color;
+idtype10 = type_nullable_parser_nodes__AExprs.id;
+if(var_pexprsnode4 == NULL) {
+var8 = 1;
+} else {
+if(cltype9 >= var_pexprsnode4->type->table_size) {
+var8 = 0;
+} else {
+var8 = var_pexprsnode4->type->type_table[cltype9] == idtype10;
+}
+}
+if (unlikely(!var8)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5788);
+show_backtrace(1);
+}
+var11 = NEW_parser_nodes__ACallExpr(&type_parser_nodes__ACallExpr);
+{
+parser_prod__ACallExpr__init_acallexpr(var11, var_pexprnode2, var_tidnode3, var_pexprsnode4); /* Direct call parser_prod#ACallExpr#init_acallexpr on <var11:ACallExpr>*/
+}
+var_pexprnode1 = var11;
+var_node_list = var_pexprnode1;
+var12 = self->attrs[COLOR_parser_work__ReduceAction___goto].l; /* _goto on <self:ReduceAction191> */
+{
+var13 = parser_work__Parser__go_to(var_p, var12);
+}
+{
+parser_work__Parser__push(var_p, var13, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction191#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction191__action(val* self, val* p0) {
+parser__ReduceAction191__action(self, p0); /* Direct call parser#ReduceAction191#action on <self:Object(ReduceAction191)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction193#action for (self: ReduceAction193, Parser) */
+void parser__ReduceAction193__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_pqualifiednode2 /* var pqualifiednode2: nullable Object */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var_tkwsupernode3 /* var tkwsupernode3: nullable Object */;
+short int var5 /* : Bool */;
+int cltype6;
+int idtype7;
+val* var_pexprsnode4 /* var pexprsnode4: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var11 /* : ASuperExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable ASuperExpr */;
+long var12 /* : Int */;
+long var13 /* : Int */;
+var_p = p0;
+var = NULL;
+var_node_list = var;
+{
+var1 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist3 = var1;
+{
+var2 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist2 = var2;
+{
+var3 = parser_work__Parser__pop(var_p);
+}
+var_nodearraylist1 = var3;
+var_pqualifiednode2 = var_nodearraylist1;
+/* <var_pqualifiednode2:nullable Object> isa nullable AQualified */
+cltype = type_nullable_parser_nodes__AQualified.color;
+idtype = type_nullable_parser_nodes__AQualified.id;
+if(var_pqualifiednode2 == NULL) {
+var4 = 1;
+} else {
+if(cltype >= var_pqualifiednode2->type->table_size) {
+var4 = 0;
+} else {
+var4 = var_pqualifiednode2->type->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", "parser/parser.nit", 5807);
+show_backtrace(1);
+}
+var_tkwsupernode3 = var_nodearraylist2;
+/* <var_tkwsupernode3:nullable Object> isa nullable TKwsuper */
+cltype6 = type_nullable_parser_nodes__TKwsuper.color;
+idtype7 = type_nullable_parser_nodes__TKwsuper.id;
+if(var_tkwsupernode3 == NULL) {
+var5 = 1;
+} else {
+if(cltype6 >= var_tkwsupernode3->type->table_size) {
+var5 = 0;