+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);
+{
+array__Array__init(var3); /* Direct call array#Array#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", "src/parser/parser.nit", 5434);
+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:ReduceAction162> */
+{
+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#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_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:ReduceAction163> */
+{
+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#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#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_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:ReduceAction167> */
+{
+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#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_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);
+{
+array__Array__init(var3); /* Direct call array#Array#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", "src/parser/parser.nit", 5477);
+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:ReduceAction168> */
+{
+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#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#ReduceAction169#action for (self: ReduceAction169, Parser) */
+void parser__ReduceAction169__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);
+{
+array__Array__init(var2); /* Direct call array#Array#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", "src/parser/parser.nit", 5494);
+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:ReduceAction169> */
+{
+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#ReduceAction169#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction169__action(val* self, val* p0) {
+parser__ReduceAction169__action(self, p0); /* Direct call parser#ReduceAction169#action on <self:Object(ReduceAction169)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction170#action for (self: ReduceAction170, Parser) */
+void parser__ReduceAction170__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:ReduceAction170> */
+{
+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#ReduceAction170#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction170__action(val* self, val* p0) {
+parser__ReduceAction170__action(self, p0); /* Direct call parser#ReduceAction170#action on <self:Object(ReduceAction170)>*/
+RET_LABEL:;
+}
+/* method parser#ReduceAction171#action for (self: ReduceAction171, Parser) */
+void parser__ReduceAction171__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);
+{
+array__Array__init(var2); /* Direct call array#Array#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", "src/parser/parser.nit", 5522);
+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:ReduceAction171> */
+{
+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#ReduceAction171#action for (self: Object, Parser) */
+void VIRTUAL_parser__ReduceAction171__action(val* self, val* p0) {
+parser__ReduceAction171__action(self, p0); /* Direct call parser#ReduceAction171#action on <self:Object(ReduceAction171)>*/
+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_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);
+{
+array__Array__init(var3); /* Direct call array#Array#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", "src/parser/parser.nit", 5543);
+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", "src/parser/parser.nit", 5545);
+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:ReduceAction172> */
+{
+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#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* 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);
+{
+array__Array__init(var3); /* Direct call array#Array#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", "src/parser/parser.nit", 5567);
+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:ReduceAction173> */
+{
+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#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_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);
+{
+array__Array__init(var4); /* Direct call array#Array#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", "src/parser/parser.nit", 5589);
+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", "src/parser/parser.nit", 5591);
+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:ReduceAction174> */
+{
+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#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_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);
+{
+array__Array__init(var4); /* Direct call array#Array#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", "src/parser/parser.nit", 5614);
+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", "src/parser/parser.nit", 5619);
+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:ReduceAction175> */
+{
+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#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_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);
+{
+array__Array__init(var5); /* Direct call array#Array#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", "src/parser/parser.nit", 5639);
+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", "src/parser/parser.nit", 5641);
+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", "src/parser/parser.nit", 5647);
+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:ReduceAction176> */
+{
+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#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#ReduceAction180#action for (self: ReduceAction180, Parser) */
+void parser__ReduceAction180__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 */;