+{
+nit___nit__Parser___push(var_p, var13, var_node_list); /* Direct call parser_work#Parser#push on <var_p:Parser>*/
+}
+RET_LABEL:;
+}
+/* method parser#ReduceAction287#action for (self: ReduceAction287, Parser) */
+void nit__parser___nit__parser__ReduceAction287___nit__parser_work__ReduceAction__action(val* self, val* p0) {
+val* var_p /* var p: Parser */;
+val* var_node_list /* var node_list: nullable Object */;
+val* var /* : nullable Object */;
+val* var_nodearraylist4 /* var nodearraylist4: 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_pexprnode2 /* var pexprnode2: nullable Object */;
+short int var4 /* : Bool */;
+int cltype;
+int idtype;
+val* var_tkwandnode3 /* var tkwandnode3: nullable Object */;
+short int var5 /* : Bool */;
+int cltype6;
+int idtype7;
+val* var_pexprnode4 /* var pexprnode4: nullable Object */;
+short int var8 /* : Bool */;
+int cltype9;
+int idtype10;
+val* var11 /* : AAndExpr */;
+val* var_pexprnode1 /* var pexprnode1: nullable AAndExpr */;
+long var12 /* : Int */;
+long var13 /* : Int */;
+var_p = p0;
+var_node_list = ((val*)NULL);
+{
+var = nit___nit__Parser___pop(var_p);
+}
+var_nodearraylist4 = var;
+{
+var1 = nit___nit__Parser___pop(var_p);
+}
+var_nodearraylist3 = var1;
+{
+var2 = nit___nit__Parser___pop(var_p);
+}
+var_nodearraylist2 = var2;
+{
+var3 = nit___nit__Parser___pop(var_p);
+}
+var_nodearraylist1 = var3;
+var_pexprnode2 = var_nodearraylist1;
+/* <var_pexprnode2:nullable Object> isa nullable AExpr */
+cltype = type_nullable__nit__AExpr.color;
+idtype = type_nullable__nit__AExpr.id;
+if(var_pexprnode2 == NULL) {
+var4 = 1;
+} else {
+if(cltype >= (((long)var_pexprnode2&3)?type_info[((long)var_pexprnode2&3)]:var_pexprnode2->type)->table_size) {
+var4 = 0;
+} else {
+var4 = (((long)var_pexprnode2&3)?type_info[((long)var_pexprnode2&3)]:var_pexprnode2->type)->type_table[cltype] == idtype;
+}
+}
+if (unlikely(!var4)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser, 7739);
+fatal_exit(1);
+}
+var_tkwandnode3 = var_nodearraylist2;
+/* <var_tkwandnode3:nullable Object> isa nullable TKwand */
+cltype6 = type_nullable__nit__TKwand.color;
+idtype7 = type_nullable__nit__TKwand.id;
+if(var_tkwandnode3 == NULL) {
+var5 = 1;
+} else {
+if(cltype6 >= (((long)var_tkwandnode3&3)?type_info[((long)var_tkwandnode3&3)]:var_tkwandnode3->type)->table_size) {
+var5 = 0;
+} else {
+var5 = (((long)var_tkwandnode3&3)?type_info[((long)var_tkwandnode3&3)]:var_tkwandnode3->type)->type_table[cltype6] == idtype7;
+}
+}
+if (unlikely(!var5)) {
+PRINT_ERROR("Runtime error: %s", "Assert failed");
+PRINT_ERROR(" (%s:%d)\n", FILE_nit__parser, 7741);
+fatal_exit(1);
+}
+var_pexprnode4 = var_nodearraylist4;
+/* <var_pexprnode4:nullable Object> isa nullable AExpr */
+cltype9 = type_nullable__nit__AExpr.color;
+idtype10 = type_nullable__nit__AExpr.id;
+if(var_pexprnode4 == NULL) {
+var8 = 1;
+} else {
+if(cltype9 >= (((long)var_pexprnode4&3)?type_info[((long)var_pexprnode4&3)]:var_pexprnode4->type)->table_size) {
+var8 = 0;
+} else {
+var8 = (((long)var_pexprnode4&3)?type_info[((long)var_pexprnode4&3)]:var_pexprnode4->type)->type_table[cltype9] == idtype10;
+}
+}
+if (unlikely(!var8)) {